MapogosAPI Docs
/
Tutorial · cerca de 15 minutos

Primeiros passos

Siga as etapas na ordem. Ao final, seu sistema estará autenticado, lendo dados, gravando com segurança e recebendo eventos do Mapogos.

Antes de começar você precisa de:
  • Acesso ao painel Mapogos com permissão Gerenciar API (ou alguém da locadora que tenha).
  • Um terminal com curl — ou PHP, Node.js ou Python, se preferir testar já no seu código.
1

Crie a chave de API no painel

No painel do Mapogos, abra o menu Integrações → API do Sistema e clique em Criar nova API. O assistente tem 5 etapas:

  1. Identificação — dê um nome que diga quem vai usar (ex.: Painel BI Financeiro), escolha o ambiente e as carteiras.
  2. Permissões — marque, módulo por módulo, o que a integração pode fazer: Ler, Criar, Atualizar, Excluir, Exportar e LGPD (dados pessoais sem máscara). Libere só o necessário.
  3. Segurança — opcionalmente restrinja os IPs que podem usar a chave e ajuste o limite por minuto.
  4. Webhooks — opcional; pode configurar depois (etapa 10).
  5. Revisão — confira e clique em Criar API.
!
A chave aparece uma única vez
Na tela final, clique em Copiar e guarde a chave na hora. Por segurança o Mapogos guarda só uma impressão digital dela — se perder, use Regenerar no detalhe da chave.
Painel Mapogos › API do Sistema › Criar nova API
1 Identificação2 Permissões3 Segurança4 Webhooks5 Revisão
Clientes
Pagamentos
Veículos
Sua chave (exibida uma vez)mpg_live_A1b2C3d4E5f6_••••••••••••••••Copiar
2

Guarde a chave com segurança

A chave dá acesso aos dados da locadora: trate-a como uma senha. O jeito recomendado é uma variável de ambiente, que todos os exemplos desta documentação usam com o nome MAPOGOS_API_KEY.

×
Nunca faça isso
  • Colocar a chave no código-fonte ou em repositórios (GitHub etc.).
  • Usar a chave em páginas web ou aplicativos que rodam no navegador/celular do usuário.
  • Enviar a chave por e-mail ou WhatsApp em texto aberto.

Formato da chave: mpg_live_… (produção) ou mpg_test_… (ambiente de teste).

Definir a variável
# Linux / macOS (sessão atual)
export MAPOGOS_API_KEY="mpg_live_SEU_PREFIXO_SEU_SEGREDO"
3

Verifique se a API está no ar

A rota /v1/status é pública (não precisa de chave). Use-a para confirmar que seu servidor alcança a API.

Se não houver resposta, verifique firewall/proxy de saída da sua rede: a API usa somente HTTPS, porta 443.

Requisição
Testar ▸
curl https://apimapogos.sixinformatica.com/v1/status
Resposta200 OK
{
    "sucesso": true,
    "dados": {
        "status": "online",
        "versao": "1.0.0",
        "api": "API Mapogos · SIX Informática",
        "banco": "ok",
        "latencia_banco_ms": 2,
        "hora": "2026-10-08T14:30:00-03:00"
    },
    "request_id": "req_a1b2c3d4e5f6a7b8c9d0"
}
4

Faça a primeira chamada autenticada

Envie a chave no cabeçalho Authorization: Bearer <sua-chave>. A rota /v1/me devolve os dados da própria chave — ótima para validar a configuração e ver quais permissões ela tem.

Se receber…SignificaO que fazer
401 nao_autenticadoO cabeçalho não chegouConfira o nome Authorization e a palavra Bearer + espaço
401 chave_invalidaChave errada ou incompletaCopie de novo; ela tem 3 partes separadas por "_"
401 chave_suspensaSuspensa no painelPeça a reativação ao administrador
403 ip_nao_permitidoIP fora da lista da chaveInclua o IP do seu servidor na chave
Requisição
Testar ▸
curl -X GET "https://apimapogos.sixinformatica.com/v1/me" \
  -H "Authorization: Bearer $MAPOGOS_API_KEY"
Resposta200 OK
{
    "sucesso": true,
    "dados": {
        "id": 7,
        "nome": "Painel BI Financeiro",
        "prefixo": "mpg_live_A1b2C3d4E5f6",
        "ambiente": "live",
        "status": "ativa",
        "carteiras": [
            "mapogos",
            "premium"
        ],
        "limite_por_minuto": 120,
        "expira_em": null,
        "permissoes": {
            "clientes": [
                "ler"
            ],
            "pagamentos": [
                "ler",
                "exportar"
            ]
        }
    },
    "request_id": "req_0a1b2c3d4e5f6a7b8c9d"
}
5

Liste registros

Toda listagem segue o padrão GET /v1/{modulo}. A resposta traz os registros em dados e as informações de paginação em meta.

Campo da respostaO que contém
dadosLista de registros da página atual
meta.totalTotal de registros que atendem ao filtro
meta.pagina / meta.paginasPágina atual / total de páginas
meta.dados_pessoais"mascarados" quando a chave não tem permissão LGPD
request_idIdentificador da chamada — informe ao suporte se precisar
i
Dados pessoais mascarados
Sem a permissão LGPD no módulo, CPF, telefone, e-mail e endereço chegam assim: ***.982.247-**, *******5432. Veja Dados pessoais e carteiras.
Requisição
Testar ▸
curl -X GET "https://apimapogos.sixinformatica.com/v1/clientes?por_pagina=2" \
  -H "Authorization: Bearer $MAPOGOS_API_KEY"
Resposta200 OK
{
    "sucesso": true,
    "dados": [
        {
            "id": 1024,
            "name": "Maria Fernanda Souza",
            "cpf_cnpj": "***.982.247-**",
            "phone": "*******5432",
            "city": "Belém",
            "uf": "PA",
            "created_at": "2026-03-02T10:15:00-03:00"
        }
    ],
    "meta": {
        "total": 655,
        "pagina": 1,
        "por_pagina": 2,
        "paginas": 328,
        "dados_pessoais": "mascarados"
    },
    "request_id": "req_9f8e7d6c5b4a39281706"
}
6

Percorra todas as páginas

Use pagina e por_pagina (máximo 200). Repita aumentando a página até chegar em meta.paginas.

Para volumes muito grandes (carga inicial de BI), prefira a exportação por cursor, que é mais rápida e estável.

✓
Boa prática
Respeite o limite por minuto da chave: se receber 429, aguarde os segundos indicados no cabeçalho Retry-After.
Percorrendo todas as páginas
<?php
$pagina = 1;
do {
  $ch = curl_init('https://apimapogos.sixinformatica.com/v1/clientes?por_pagina=200&pagina=' . $pagina);
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('MAPOGOS_API_KEY')]]);
  $r = json_decode(curl_exec($ch), true);

  foreach ($r['dados'] as $cliente) {
    salvarNoMeuSistema($cliente);
  }
  $pagina++;
} while ($pagina <= $r['meta']['paginas']);
7

Filtre, ordene e escolha os campos

Combine parâmetros na URL para trazer exatamente o que precisa:

ParâmetroExemploEfeito
filtro por campostatus=pagoSomente registros com esse valor
vários valoresstatus=pendente,vencidoQualquer um dos valores
períodocriado_desde=2026-10-01Criados a partir da data
ordenaçãoordenar=-paid_at"-" = do maior para o menor
camposcampos=id,amount,paid_atResposta só com esses campos
buscaq=loganBusca textual nos campos do módulo

Os filtros e ordenações aceitos por cada módulo estão na referência. Um parâmetro desconhecido retorna 400 — de propósito, para que um erro de digitação nunca devolva dados sem filtro.

Pagamentos recebidos em outubro
Testar ▸
curl -X GET "https://apimapogos.sixinformatica.com/v1/pagamentos?status=pago&criado_desde=2026-10-01&ordenar=-paid_at&campos=id,rental_id,amount,paid_at" \
  -H "Authorization: Bearer $MAPOGOS_API_KEY"
Resposta200 OK
{
    "sucesso": true,
    "dados": [
        {
            "id": 88231,
            "rental_id": 1024,
            "amount": "450.00",
            "paid_at": "2026-10-08T09:12:44-03:00"
        }
    ],
    "meta": {
        "total": 1,
        "pagina": 1,
        "por_pagina": 50,
        "paginas": 1
    },
    "request_id": "req_1a2b3c4d5e6f7a8b9c0d"
}
8

Busque só o que mudou (sincronização)

Depois da carga inicial, não baixe tudo de novo. Guarde a hora em que a sincronização começou e, na próxima vez, peça apenas o que foi criado ou alterado desde então com atualizado_desde.

  1. Anote a hora atual (inicio) antes de chamar a API.
  2. Busque ?atualizado_desde=<última sincronização> e percorra as páginas.
  3. Grave/atualize os registros no seu sistema pelo id.
  4. Salve inicio como a nova "última sincronização".
✓
Em tempo real
Para reagir na hora (ex.: pagamento confirmado), combine a sincronização com webhooks.
Sincronização incremental
import os, requests, datetime

H = {"Authorization": f"Bearer {os.environ['MAPOGOS_API_KEY']}"}
ultima = ler_ultima_sincronizacao()          # ex.: "2026-10-08T09:00:00-03:00"
inicio = datetime.datetime.now().astimezone().isoformat(timespec="seconds")

pagina, paginas = 1, 1
while pagina <= paginas:
    r = requests.get("https://apimapogos.sixinformatica.com/v1/pagamentos", headers=H, timeout=30,
                     params={"atualizado_desde": ultima, "por_pagina": 200, "pagina": pagina}).json()
    for p in r["dados"]:
        gravar_ou_atualizar(p["id"], p)
    paginas, pagina = r["meta"]["paginas"], pagina + 1

salvar_ultima_sincronizacao(inicio)
9

Grave um registro

Para criar use POST; para alterar parte de um registro, PATCH. Envie o corpo em JSON com o cabeçalho Content-Type: application/json (a chave precisa da permissão Criar ou Atualizar no módulo).

Sempre envie o cabeçalho Idempotency-Key com um identificador único da operação. Se a conexão cair e você reenviar, a API devolve a mesma resposta em vez de criar um registro duplicado.

Se algum campo estiver errado, a API responde 422 listando todos os problemas de uma vez em erro.detalhes:

Resposta com erros de validação422 Unprocessable Entity
{
    "sucesso": false,
    "erro": {
        "codigo": "validacao",
        "mensagem": "2 campos inválidos.",
        "detalhes": [
            {
                "campo": "cpf_cnpj",
                "mensagem": "CPF/CNPJ inválido."
            },
            {
                "campo": "email",
                "mensagem": "E-mail inválido."
            }
        ]
    },
    "request_id": "req_5e6f7a8b9c0d1e2f3a4b"
}
Cadastrar um cliente
Testar ▸
curl -X POST "https://apimapogos.sixinformatica.com/v1/clientes" \
  -H "Authorization: Bearer $MAPOGOS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Maria Fernanda Souza","cpf_cnpj":"529.982.247-25","phone":"(91) 99876-5432","email":"maria@exemplo.com.br","city":"Belém","uf":"PA"}'
Resposta201 Created
{
    "sucesso": true,
    "dados": {
        "id": 1031,
        "name": "Maria Fernanda Souza",
        "cpf_cnpj": "52998224725",
        "phone": "91998765432",
        "email": "maria@exemplo.com.br",
        "city": "Belém",
        "uf": "PA",
        "created_at": "2026-10-08T14:32:10-03:00"
    },
    "request_id": "req_7b8c9d0e1f2a3b4c5d6e"
}
10

Receba eventos em tempo real (webhooks)

Com webhooks, o Mapogos chama uma URL do seu sistema quando algo acontece — por exemplo pagamento.confirmado ou veiculo.bloqueado.

  1. Crie no seu sistema um endereço https que aceite POST com JSON.
  2. No painel: API do Sistema → Webhooks → Novo webhook, informe a URL e escolha os eventos.
  3. Copie o segredo exibido (uma única vez) e use-o para validar a assinatura de cada aviso.
  4. Clique em Testar para receber um evento de teste.
  5. Responda 200 em até 10 segundos; processe o restante em segundo plano.

Lista de eventos, formato do aviso e validação da assinatura: Webhooks.

Receptor mínimo com validação da assinatura
<?php
// webhook.php — recebe avisos do Mapogos
$segredo = getenv('MAPOGOS_WEBHOOK_SECRET');
$corpo   = file_get_contents('php://input');
$ts      = $_SERVER['HTTP_X_MAPOGOS_TIMESTAMP'] ?? '';
$assin   = $_SERVER['HTTP_X_MAPOGOS_ASSINATURA'] ?? '';

$esperado = 'sha256=' . hash_hmac('sha256', $ts . '.' . $corpo, $segredo);
if (!hash_equals($esperado, $assin) || abs(time() - (int)$ts) > 300) {
  http_response_code(401);
  exit;
}

$evento = json_decode($corpo, true);
if (!jaProcessado($evento['id'])) {          // evita processar duas vezes
  enfileirar($evento);                        // processe depois, responda rápido
}
http_response_code(200);
11

Leve para produção

Antes de ligar a integração de verdade, confira:

  • A chave fica em variável de ambiente ou cofre de segredos — nunca no código ou no navegador.
  • A chave tem apenas as permissões necessárias (e LGPD só se realmente precisar dos dados pessoais).
  • Se seu servidor tem IP fixo, ele está cadastrado na lista de IPs permitidos da chave.
  • Toda gravação envia Idempotency-Key.
  • Seu código trata 429 esperando o tempo de Retry-After e tenta de novo.
  • Erros são registrados com o request_id da resposta.
  • O receptor de webhooks valida a assinatura, responde rápido e ignora eventos repetidos (mesmo id).
  • Existe um plano de troca de chave (Regenerar) em caso de vazamento.

Pronto! Agora explore a referência completa dos módulos ou teste chamadas no console.