Ícone Procob Procob API

Bem vindo a API RESTFul da Procob S.A. Com ela você pode ter acesso a todos os produtos que dispomos, bem como exemplos de retorno e explicação detalhada de cada um deles. Abaixo temos um esquema de requisição, veja como é simples.

Como Funciona

Ícone Procob Explorando a API

É possível explorar a API Procob de duas formas: Usuários já cadastrados e com permissão de acesso e usuário teste da API. Para usuários já cadastrados, as informações trazidas no retorno das consultas são informações reais e serão tarifadas de acordo com o plano do cliente. Para usuários que não possuem cadastro, eles podem se utilizar do usuário de testes da API, basta usar as credenciais abaixo e fornecer no campo de usuário e senha, no topo da página. Os dados apresentados no retorno da API para usuários de testes são todos fictícios.

Usuário: sandbox@procob.com Senha: TesteApi

Nossa API trabalha com o padrão REST tendo como resposta sempre um JSON.

Ícone Procob Autenticação

Todas as chamadas a API devem ser autenticadas, o formato escolhido é a autenticação basic através do header Basic Authorization. Nesse header é enviado o email concatenado por dois pontos (:) mais a senha, tudo junto sem espaços. Esse conteúdo é convertido para uma chave usando algoritmos de base 64, ficando como o exemplo abaixo:

Authorization: Basic UUAN5678e9WsdDdsSaD54854=

É possível gerar o valor a ser enviado no cabeçalho através do comando unix abaixo:

echo -n conta:Senha | base64

É possível fazer esse procedimento através do site base64Encode gratuitamente.

Para realizar os testes aqui no Sandbox basta preencher o usuário e senha no formulário no topo superior direito da página.

Ícone Procob Request

Separamos alguns exemplos de requisição em diversas linguagens de programação que retorna somente se a comunicação foi bem sucedida.

var client = new RestClient("https://api.procob.com/consultas/teste");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp");
IRestResponse response = client.Execute(request);
package main

	import (
		"fmt"
		"net/http"
		"io/ioutil"
	)

	func main() {

		url := "https://api.procob.com/consultas/teste"

		req, _ := http.NewRequest("GET", url, nil)

		req.Header.Add("authorization", "Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp")

		res, _ := http.DefaultClient.Do(req)

		defer res.Body.Close()
		body, _ := ioutil.ReadAll(res.Body)

		fmt.Println(res)
		fmt.Println(string(body))

	}
package javaapplication1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 *
 * @author anderson
 */
public class JavaApplication1 {

    public static final String HOST = "https://api.procob.com";
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws MalformedURLException, IOException {
        
        String path = "/consultas/teste";
        
        URL obj = new URL(HOST + path);
        
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        
        con.setRequestMethod("GET");
        con.setRequestProperty("Authorization", "Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp");
        
        BufferedReader in = new BufferedReader(
		        new InputStreamReader(con.getInputStream()));
		String inputLine;
		StringBuilder response = new StringBuilder();

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

		System.out.println(response.toString());
    }
}
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.procob.com",
  "port": 443,
  "path": "/consultas/teste",
  "headers": {
    "authorization": "Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
#import <Foundation/Foundation.h>

NSDictionary *headers = @{ @"authorization": @"Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp"};

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.procob.com/consultas/teste"]
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                if (error) {
                                                    NSLog(@"%@", error);
                                                } else {
                                                    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
                                                    NSLog(@"%@", httpResponse);
                                                }
                                            }];
[dataTask resume];
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.procob.com/consultas/teste",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "authorization: Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
import http.client

conn = http.client.HTTPConnection("api.procob.com")

headers = {
    'authorization': "Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp"
    }

conn.request("GET", "/consultas/teste", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.procob.com/consultas/teste")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp'

response = http.request(request)
puts response.read_body
import Foundation

let headers = [
  "authorization": "Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp"
]

var request = NSMutableURLRequest(URL: NSURL(string: "https://api.procob.com/consultas/teste")!,
                                        cachePolicy: .UseProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = headers

let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    println(error)
  } else {
    let httpResponse = response as? NSHTTPURLResponse
    println(httpResponse)
  }
})

dataTask.resume()

Ícone Procob Retorno

Caso o retorno seja de sucesso, você irá receber um JSON como o exibido abaixo:

{    
"code": "000",
"message": "Pesquisa feita com sucesso",
"date": "2017-02-23",
"hour": "14:37:21",
"revision": "13084",
"server": "20",
"saldo": "23.46",
"content": {}
}

A resposta da API se da sempre em um bloco contendo o código da resposta, a mensagem, a data e hora da consulta e o conteúdo da consulta efetuada, caso ele exista.

Segue abaixo a lista de retornos disponíveis:

Código Mensagem
000 Pesquisa feita com sucesso
001 Nao encontramos registros para a pesquisa
002 Seus creditos são inferiores ao valor da consulta
003 Tipo de documento invalido para está consulta
004 Sem informacoes disponiveis
005 É necessario passar parametros via GET
006 O fornecedor desta consulta se encontra em manutencao, favor tentar daqui alguns minutos
007 Produto se encontra em manutencao, favor tentar daqui alguns minutos
008 Usuário ou senha invalidos
009 Operacao realizada com sucesso
900 Ocorreu um erro de execucao, favor contatar o suporte Procob
999 Mensagem generica usada para diversos retornos na API