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.
Documentação da API
Integração MicroCAD Maps - Sistema de Tokens de Acesso
Visão Geral
Endpoint
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
• 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.
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
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:
Parâmetros de Teste
Resultado do Teste
Preencha os campos e clique em "Testar API" para ver o resultado.
Suporte
v1.0 - Janeiro 2024