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 CAR: Use uf para ativar automaticamente com dados do estado
Campo Tipo Obrigatório Descrição
cpfCnpj string Sim CPF ou CNPJ do usuário (numérico ou alfanumérico; máscara opcional)
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 CAR. 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": "[email protected]",
    "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 rural com UF

A API suporta a ativação automática da camada de imóveis rurais através do parâmetro uf.

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

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 de imóveis rurais já ativada, mostrando as propriedades rurais cadastradas neste 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 CAR
var requestPonto = new
{
    cpfCnpj = "12345678901",
    latitude = -9.3891,
    longitude = -40.5025,
    uf = "ba"
};

// Exemplo 2: Polígono (Juazeiro-BA) com UF para CAR
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

CPF (11 dígitos) ou CNPJ (14 caracteres; letras permitidas). Máscara opcional. Deve existir na base MicroCAD.
Valor entre -90 e 90
Valor entre -180 e 180
Ativa automaticamente a camada CAR 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