{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"e5662ff8-d3c8-4953-b56d-7a6d030963a8","name":"Command Perfect API","description":"<img src=\"http://www.commandperfect.com.br/wp/logo/command-postman.png\">\n\n# Introdução\n\nAPI REST para integração com serviços Command Perfect\n\n# Overview\n\nPara acessar o serviços você pode acessar internamente em sua rede conforme o exemplo\n\n```\nlocalhost:9085/api/v1/mobile/echo\n\n ```\n\nou pode acessar externamente à sua rede. Neste caso é necessário que sua equipe de TI faça as configurações adequadas no Firewall para que este acesso externo possa ser realizado.\n\n# Porta\n\nPara saber qual a porta em que os serviços estão disponíveis, deverá ser verificado na pasta de configuração do Servidor um arquivo chamado cpConfig.ini. Neste arquivo haverá uma sessão chamada _\\[SERVIDOR\\]_ e um atributo chamado _PORTAWS_. Geralmente, nos servidores, este arquivo fica localizado em _C:\\\\cperfect\\\\instalacao_\n\n**Exemplo de como o cpConfig.ini poderá estar configurado para facilitar a localização no arquivo.**\n\n```\n[SERVIDOR]\nPORTA=7790\nPORTAWS=8087\nAUDITA=S\n\n ```\n\n# Autenticação\n\nForma de Autenticação: Basic Auth\n\nUsername: Informar um usuário cadastrado no ERP.\n\nPassword: Informar a senha do usuário já criptografado em MD5.\n\n# Request\n\nAs requisições GET e DELETE seguem o padrão REST onde os parâmetros são passados via URL.\n\nPara as requisições POST e PUT, o conteúdo enviado no corpo da requisição deve estar no formato JSON.\n\n# Response\n\nOs retornos sempre serão em formato JSON.\n\n# Definição do parâmetro WHERE\n\nPara alguns EndPoints (GET), poderá ser passado uma cláusula where formatada no padrão explicado a seguire criptografado utilizando BASE64.\n\nPara enviar uma condição na cláusula where deverá seguir o seguinte formato:\n\n**CAMPO;OPERADOR;VALOR**\n\nSe necessário passar mais que uma condição, deverá repetir o formato e separar por | (PIPE):\n\nCAMPO;OPERADOR;VALOR|CAMPO;OPERADOR;VALOR\n\n_Campo_\n\nOs campos passíveis para utilização em uma cláusula where sempre serão os campos do nó principal de um objeto JSON retornado em uma requisição GET. Em caso de um campo que seja uma lista, este não deve ser considerado.\n\n_Operador_\n\nOs operadores possíveis para a construção de uma cláusula where são:\n\n<table><tbody><tr><th>Operadores</th><th>Descrição</th></tr><tr><td><div>=</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Igual</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>&lt;&gt;</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Diferente</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>&gt;</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Maior</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>&lt;</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Menor</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>&gt;=</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Maior ou Igual</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>&lt;=</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Menor ou Igual</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>LIKE</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Like</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>LIKE BEGIN</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Like no Início do Texto</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>LIKE END</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Like no final do Texto</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>STARTING WITH</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Iniciando com</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>CONTAINING</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Que contenha o texto</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>FRAGMENT</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Campo que contenha fragmentos. Permite ser enviado vários fragmentos de texto no valor desde que seperados por 1 espaço em branco.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>IS NULL</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Onde o campo seja nulo</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>IS NOT NULL</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Onde o campo não seja nulo</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>IN</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Que esteja em uma lista de valores separados por , (Vírgula)</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>NOT IN</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Que não esteja em uma lista de valores separados por , (Vírgula)</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr></tbody></table>\n\n_Valor_\n\nValor que deseja filtrar.\n\n**Exemplo de um JSON passível de consulta where:**\n\n```\n[  \n   {  \n      \"TBP_CD_TABELAPRECO\":1,\n      \"TBP_CD_EMPRESA\":1,\n      \"TBP_TP_STATUS\":\"CONFIRMADO\",\n      \"TBP_VIGENCIA\":43538,\n      \"TBP_VALIDADE\":43830,\n      \"TBP_BO_PERMITENEGOCIACAO\":\"N\",\n      \"TBP_TP_TABELA_PRECO\":null,\n      \"TBP_NR_PRIORIDADE\":0,\n      \"TBP_DS_TABELA\":\"MOBILE\",\n      \"LISTA_ITENS_REGIAO_ICMS\":[  \n         {  \n            \"TIR_ID_TABPRECO_ITENREGIAO\":1,\n            \"TIR_CD_TABELA_DE_PRECOS\":1,\n            \"TIR_CD_REGIAOICMS\":1,\n            \"TIR_ID_PRODUTO\":409,\n            \"TIR_VL_VENDA\":0,\n            \"TIR_VL_VENDA_COM_IMPOSTOS\":0,\n            \"TIR_PC_DESCONTO_TABELA\":0\n         }\n      ]\n   }\n]\n\n ```\n\nNo exemplo acima poderá ser criada uma cláusula WHERE com todos os campos cujo prefixo inicie com TBP.\n\n**Exemplos**\n\n1 - Where para retornar a Tabela de Preço que tenha o código 1\n\nTBP_CD_TABELAPRECO;=;1\n\nCriptografado em BASE64 VEJQX0NEX1RBQkVMQVBSRUNPOz07MQ==\n\n2- Where para retornar as Tabela de Preço que permitem negociação e que tenha a prioridade menor ou igual a 3\n\nTBP_BO_PERMITENEGOCIACAO;=;S|TBP_NR_PRIORIDADE;<=;3\n\nNeste caso são dois filtros separados por | (PIPE)\n\nCriptografado em BASE64 VEJQX0JPX1BFUk1JVEVORUdPQ0lBQ0FPOz07U3xUQlBfTlJfUFJJT1JJREFERTs8PTsz\n\n3 - Where para retornar as Tabela de Preço que tem validade até 31/12/2019\n\nTBP_VALIDADE;=;43830\n\nNo caso de datas, as mesmas devem estar convertidas para float\n\nCriptografado em BASE64 VEJQX1ZBTElEQURFOz07NDM4MzA=\n\n4 - Where para retornar as Tabela de Preço que estejam nos códigos 1 e 3\n\nTBP_CD_TABELAPRECO;IN;1,3\n\nNo caso de pesquisas utilizando operador IN, os valores devem estar separados por , (Vírgula)\n\nCriptografado em BASE64 VEJQX0NEX1RBQkVMQVBSRUNPO0lOOzEsMw==\n\n# Definição do parâmetro FIRST\n\nQuando disponível, esse parâmetro serve para limitar a quantidade de registros que o endpoint irá retornar\n\nPor exemplo, se for informado 10, irá trazer os 10 primeiros registros existente na base ou de acordo com o parâmetro WHERE, caso informado.\n\nSe for informado 0, será considera todos os registros existente na base ou de acordo com o parâmetro WHERE, caso informado.\n\n# Definição do parâmetro SKIP\n\nQuando disponível, esse parâmetro serve para listar uma parte dos registros de um conjunto ordenado\n\nPor exemplo, se for informado 55 de um total de conjunto 100, será retornado os registros a partir da posição 55 e os anteriores serão descartados.\n\nSe utilizado junto com o FIRST, então será retornado a quantidade de registros informados no FIRST a partir da posição 55. Por exemplo, se o FIRST for 15, então será retornado os primeiros 15 registros a partir da posição 55.\n\nA combinação do FIRST e SKIP é indicado para controlar a paginação de registros quando existem muitos registros para serem processados no servidor.\n\n# Campos do Tipo Date, Time, TimesTamp\n\nCampos com representação temporal serão retornados e deverão ser enviados como float conforme o formato de data Microsoft Timestamp\n\nSegue exemplo de um JSON representando os seguintes campos:\n\nData : 01/01/2019\n\nHora : 12:30:55\n\nDataHora : 01/01/2019 12:30:55\n\n```\n{  \n   \"Data\":43466,\n   \"Hora\":0.521469907407407,\n   \"DataHora\":43466.5214699074\n}   \n\n ```\n\nVide exemplos de conversão em:\n\n<a href=\"https://www.silisoftware.com/tools/date.php?inputdate=02%2F08%2F2019+08%3A44%3A30&amp;inputformat=text\">https://www.silisoftware.com/tools/date.php?inputdate=02/08/2019+08:44:30&amp;inputformat=text</a>\n\n**Código em PHP para converter Data/Hora no padrão Microsoft TimesTamp**\n\n```\ndate_default_timezone_set('America/Sao_Paulo');\n$dia_atual = new DateTime(date('Y-m-d H:i:s'));\n//calculando dias\n$dia_inicial = new DateTime('1899-12-31');\n$diferenca_entre_dias = $dia_atual->diff($dia_inicial);\n$diaMicrosoft = $diferenca_entre_dias->days + 1; //soma 1 para contar o dia de hoje\n//calculando horas\n$hora_atual = $dia_atual->format('H:i:s');\n$hora_atual = strtotime($hora_atual);\n$hora_inicial = strtotime(\"00:00:00\");\n$diferenca_entre_horas = $hora_atual - $hora_inicial;\n$horaMicrosoft =  ($diferenca_entre_horas / (60 * 60 * 24));\n$horaMicrosoft = explode(\".\",$horaMicrosoft);\n$horaMicrosoft = $horaMicrosoft[1];\n$MicrosoftTimesTamp = $diaMicrosoft.'.'.$horaMicrosoft;\necho 'Data: '.$dia_atual->format('d/m/Y').' = ('.$diaMicrosoft.')';\necho '\\n';\necho 'Hora: '.$dia_atual->format('H:i:s').' = ('.$horaMicrosoft.')';\necho '\\n';\necho 'Data/Hora: '.$dia_atual->format('d/m/Y H:i:s').' = ('.$MicrosoftTimesTamp.')';\n\n ```\n\n# EndPoints","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"6917851","collectionId":"e5662ff8-d3c8-4953-b56d-7a6d030963a8","publishedId":"SVYnQL2A","public":true,"publicUrl":"https://documenter-api.postman.tech/view/6917851/SVYnQL2A","privateUrl":"https://go.postman.co/documentation/6917851-e5662ff8-d3c8-4953-b56d-7a6d030963a8","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","version":"8.10.0","publishDate":"2019-07-30T13:57:07.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/SVYnQL2A"}