Advanced Land Registry Consulting
RURAL LAND · BRAZIL
INITIALIZING 0%

Documentação da API

Integração MicroCAD Maps - Sistema de Tokens de Acesso

v1.0

Visão Geral

A API de tokens do MicroCAD Maps permite que aplicações externas solicitem tokens temporários de acesso ao mapa interativo. Cada token é válido por 1 hora e está vinculado a um CPF/CNPJ específico e coordenadas geográficas.

Validade 1 hora
Segurança Token único por requisição
Coordenadas Latitude/Longitude obrigatórias
Identificação CPF/CNPJ obrigatório

Endpoint

POST
https://umbrellatecnologia.com/api/MapaApi/solicitar-token

Endpoint para solicitar um novo token de acesso ao mapa.

Requisição

Headers

Content-Type: application/json
Accept: application/json

Body (JSON)

{
  "cpfCnpj": "12345678901",
  "latitude": -23.550520,
  "longitude": -46.633308,
  "uf": "ba"
}

Parâmetros

Funcionalidades: A API suporta:
Ponto único: Use latitude e longitude
Polígono: Use coordenadas (array de pontos)
Camada SICAR: Use uf para ativar automaticamente com dados do estado
Campo Tipo Obrigatório Descrição
cpfCnpj string Sim CPF ou CNPJ do usuário (apenas números ou com máscara)
latitude double Condicional Latitude do ponto único (-90 a 90). Obrigatório se não usar coordenadas
longitude double Condicional Longitude do ponto único (-180 a 180). Obrigatório se não usar coordenadas
coordenadas array Condicional Array de objetos com lat e lng para formar polígono. Mínimo 3 pontos
uf string Opcional UF (Unidade Federativa) para ativar automaticamente a camada SICAR. Exemplo: "BA", "SP", "MG"

Resposta

Sucesso (200 OK)

{
  "sucesso": true,
  "url": "https://umbrellatecnologia.com/mapa/abc123def456ghi789",
  "token": "abc123def456ghi789",
  "dataExpiracao": "2024-01-15T15:30:00Z",
  "usuario": {
    "cliente": "João Silva",
    "email": "joao@empresa.com",
    "cidade": "São Paulo",
    "uf": "sp",
    "cgc": "12345678901"
  }
}

Erro de Validação (400 Bad Request)

{
  "sucesso": false,
  "erro": "CPF/CNPJ não encontrado na base de dados de licenças MicroCAD"
}

Erro Interno (500 Internal Server Error)

{
  "sucesso": false,
  "erro": "Erro interno do servidor ao processar solicitação"
}

Camada SICAR com UF

A API agora suporta a ativação automática da camada SICAR (Sistema Nacional de Cadastro Ambiental Rural) através do parâmetro uf.

Nova Funcionalidade: Quando você fornece a UF na requisição, a camada SICAR será automaticamente ativada no mapa com os dados específicos daquele estado, facilitando a visualização de propriedades rurais cadastradas no CAR.

Estados Suportados

Todos os 26 estados brasileiros + DF são suportados. Use a sigla em minúsculas: ba, pe, rj, sp, etc.

Exemplo com UF

{
  "cpfCnpj": "12345678901",
  "latitude": -12.9714,
  "longitude": -38.5014,
  "uf": "ba"
}

Resultado: O mapa será aberto na Bahia com a camada SICAR já ativada, mostrando as propriedades rurais cadastradas no CAR deste estado.

Exemplos de Polígonos

A API suporta polígonos para usuários com plano ativo. Para usuários sem plano, apenas o centroide será exibido como marcador.

Polígono Simples (Triângulo)

{
  "cpfCnpj": "12345678901",
  "coordenadas": [
    {"lat": -9.4112, "lng": -40.5019},
    {"lat": -9.4122, "lng": -40.5009},
    {"lat": -9.4132, "lng": -40.5029}
  ]
}

Área Rural em Juazeiro-BA

{
  "cpfCnpj": "12345678901",
  "coordenadas": [
    {"lat": -9.3891, "lng": -40.5025},
    {"lat": -9.3901, "lng": -40.5015},
    {"lat": -9.3911, "lng": -40.5035},
    {"lat": -9.3921, "lng": -40.5045},
    {"lat": -9.3901, "lng": -40.5055},
    {"lat": -9.3881, "lng": -40.5045}
  ]
}

Comportamento por Tipo de Usuário

Com Plano Ativo Polígono completo exibido no mapa
Sem Plano Ativo Apenas marcador no centroide

Exemplo de Uso

using System.Text.Json;
using System.Text;

var client = new HttpClient();

// Exemplo 1: Ponto único com UF para SICAR
var requestPonto = new
{
    cpfCnpj = "12345678901",
    latitude = -9.3891,
    longitude = -40.5025,
    uf = "ba"
};

// Exemplo 2: Polígono (Juazeiro-BA) com UF para SICAR
var requestPoligono = new
{
    cpfCnpj = "12345678901",
    coordenadas = new[]
    {
        new { lat = -9.3891, lng = -40.5025 },
        new { lat = -9.3901, lng = -40.5015 },
        new { lat = -9.3911, lng = -40.5035 },
        new { lat = -9.3921, lng = -40.5045 },
        new { lat = -9.3901, lng = -40.5055 },
        new { lat = -9.3881, lng = -40.5045 }
    },
    uf = "ba"
};

// Usar um dos requests
var request = requestPoligono; // ou requestPonto

var json = JsonSerializer.Serialize(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync(
    "https://umbrellatecnologia.com/api/MapaApi/solicitar-token", 
    content
);

if (response.IsSuccessStatusCode)
{
    var result = await response.Content.ReadAsStringAsync();
    var tokenResponse = JsonSerializer.Deserialize<dynamic>(result);
    
    // Usar a URL retornada para abrir o mapa
    System.Diagnostics.Process.Start(tokenResponse.url.ToString());
}
Imports System.Net
Imports System.IO
Imports System.Text

Module MapaTokenModule

    Public Function SolicitarTokenMapa() As String
        Console.WriteLine("=== SOLICITADOR DE TOKEN DO MAPA ===")
        Console.WriteLine("Enviando requisicao para a API...")
        
        Dim jsonData As String = "{""cpfCnpj"":""86118576580"",""latitude"":-23.550520,""longitude"":-46.633308,""uf"":""sp""}"
        Console.WriteLine("Dados enviados: " & jsonData)
        Console.WriteLine("------------------------------------------------")

        Try
            Dim request As WebRequest = WebRequest.Create("https://umbrellatecnologia.com/api/MapaApi/solicitar-token")
            request.Method = "POST"
            request.ContentType = "application/json"
            
            Dim byteArray As Byte() = Encoding.UTF8.GetBytes(jsonData)
            request.ContentLength = byteArray.Length
            
            Dim dataStream As Stream = request.GetRequestStream()
            dataStream.Write(byteArray, 0, byteArray.Length)
            dataStream.Close()
            
            Dim response As WebResponse = request.GetResponse()
            Console.WriteLine("Status: OK")
            Console.WriteLine("------------------------------------------------")
            
            Dim responseStream As Stream = response.GetResponseStream()
            Dim reader As New StreamReader(responseStream)
            Dim responseFromServer As String = reader.ReadToEnd()
            
            Console.WriteLine("RESPOSTA DA API:")
            Console.WriteLine(responseFromServer)
            Console.WriteLine("------------------------------------------------")
            
            If responseFromServer.Contains("""url"":") Then
                Dim startPos As Integer = responseFromServer.IndexOf("""url"":""") + 7
                Dim endPos As Integer = responseFromServer.IndexOf("""", startPos)
                
                If startPos > 6 And endPos > startPos Then
                    Dim url As String = responseFromServer.Substring(startPos, endPos - startPos)
                    Console.WriteLine("URL encontrada: " & url)
                    Console.WriteLine("SUCESSO! Copie a URL acima para abrir o mapa.")
                    Return url
                End If
            End If
            
            Console.WriteLine("URL nao encontrada na resposta")
            reader.Close()
            response.Close()
            Return responseFromServer

        Catch ex As Exception
            Console.WriteLine("ERRO: " & ex.Message)
            Return Nothing
        End Try
    End Function

    Sub Main()
        Dim resultado As String = SolicitarTokenMapa()
        
        Console.WriteLine("")
        Console.WriteLine("================================================")
        If resultado IsNot Nothing Then
            Console.WriteLine("EXECUCAO CONCLUIDA!")
        Else
            Console.WriteLine("EXECUCAO FALHOU!")
        End If
        Console.WriteLine("================================================")
        
        Console.WriteLine("Pressione ENTER para sair...")
        Console.ReadLine()
    End Sub

End Module
curl -X POST https://umbrellatecnologia.com/api/MapaApi/solicitar-token \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "cpfCnpj": "12345678901",
    "latitude": -23.550520,
    "longitude": -46.633308,
    "uf": "sp"
  }'
const response = await fetch('https://umbrellatecnologia.com/api/MapaApi/solicitar-token', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    cpfCnpj: '12345678901',
    latitude: -23.550520,
    longitude: -46.633308,
    uf: 'SP'
  })
});

if (response.ok) {
  const result = await response.json();
  // Abrir o mapa em uma nova janela
  window.open(result.url, '_blank');
} else {
  console.error('Erro ao gerar token:', await response.text());
}
import requests
import json
import webbrowser

url = 'https://umbrellatecnologia.com/api/MapaApi/solicitar-token'
headers = {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}
data = {
    'cpfCnpj': '12345678901',
    'latitude': -23.550520,
    'longitude': -46.633308,
    'uf': 'sp'
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
    result = response.json()
    # Abrir o mapa no navegador padrão
    webbrowser.open(result['url'])
else:
    print(f'Erro: {response.status_code} - {response.text}')

Teste da API

Use o formulário abaixo para testar a API diretamente nesta página:

Importante: Para o teste funcionar, o CPF/CNPJ deve estar cadastrado na base de dados da MicroCAD com licenças ativas do TopoCad2000.

Parâmetros de Teste

Apenas números ou com máscara (deve existir na base MicroCAD)
Valor entre -90 e 90
Valor entre -180 e 180
Ativa automaticamente a camada SICAR com dados do estado selecionado

Resultado do Teste

Preencha os campos e clique em "Testar API" para ver o resultado.

Suporte

Versão da API

v1.0 - Janeiro 2024