CDR REST/Webhook
Ingestão HTTP de CDRs com API key, headers de origem, normalização e rating.
CallMint
Documentação técnica
CDR, RADIUS, Real Time e SBC
Guia para conectar softswitches, SBCs e collectors à CallMint com ingestão de CDRs, accounting RADIUS, contratos de eventos em tempo real e mapeamento canônico para billing.
OpenSIPS, Kamailio, FreeSWITCH, Asterisk, Khomp e SBCs comerciais.
Normaliza CDR, RADIUS, syslog, webhook ou exportação vendor-specific.
Valida API key, aplica idempotência, mapeia cliente/trunk e aciona o rating.
Registra ledger, saldos, CDRs, KPIs, alertas e relatórios operacionais.
Ingestão HTTP de CDRs com API key, headers de origem, normalização e rating.
Bridge HTTP para Start, Interim-Update e Stop vindos de FreeRADIUS ou collector dedicado.
Eventos de chamada, trunk status e fraude para alimentar dashboard live e automações.
Mapeamento por origem para manter a CallMint independente do fornecedor de rede.
Visão geral
A CallMint separa origem de rede, adapter, ingestão e billing. Esse desenho permite receber eventos de múltiplos fornecedores sem acoplar o rating ou o ledger a um formato proprietário.
docs/integration-guide.md.
CDR REST/Webhook
Use o endpoint REST quando o SBC, softswitch ou collector consegue emitir CDR finalizado por HTTP. O evento deve ser enviado preferencialmente no encerramento da chamada.
https://app.callmint.com.br/api/v1/cdrs
| Header | Obrigatório | Uso |
|---|---|---|
x-api-key |
Sim | API key da integração SBC/collector. |
x-account-id |
Recomendado | Cliente comercial quando o payload não informa account_id. |
x-trunk-id |
Recomendado | Trunk lógico para auditoria, relatório e live traffic. |
x-source-type |
Não | generic, opensips, kamailio, freeswitch, asterisk, khomp ou vendor SBC. |
x-source-node |
Recomendado | Hostname, IP ou identificador do nó de rede. |
curl -X POST https://app.callmint.com.br/api/v1/cdrs \
-H "Content-Type: application/json" \
-H "x-api-key: $CALLMINT_SBC_API_KEY" \
-H "x-account-id: acct-001" \
-H "x-trunk-id: sbc-mia-02" \
-H "x-source-type: generic" \
-d '{
"call_id": "call-20260519-0001",
"caller": "+12025550100",
"callee": "+5511987654321",
"start_time": "2026-05-19T12:00:00Z",
"duration_seconds": 120,
"billable_seconds": 120
}'
RADIUS Accounting
Para RADIUS nativo, o modelo recomendado é usar um receiver/sidecar na porta UDP 1813. Esse componente valida o shared secret, converte atributos RADIUS em JSON e publica no endpoint HTTP da CallMint.
https://app.callmint.com.br/api/v1/radius/accounting
{
"Acct-Status-Type": "Stop",
"Acct-Session-Id": "radius-session-001",
"User-Name": "acct-001",
"Calling-Station-Id": "+12025550100",
"Called-Station-Id": "+5511987654321",
"NAS-IP-Address": "10.0.0.10",
"Acct-Session-Time": 119,
"Event-Timestamp": "2026-05-19T12:02:00Z"
}
Start abrem a tentativa de chamada, Interim-Update atualiza
duração/estado para live traffic, e Stop fecha CDR, rating e débito.
Real Time
O portal operacional já exibe visão de tráfego em /traffic. A evolução real-time
usa eventos canônicos para alimentar WebSocket, alertas de fraude, CPS e status de trunk.
{
"event_type": "call.started",
"event_id": "evt-20260519-0001",
"occurred_at": "2026-05-19T12:00:00Z",
"call_id": "call-20260519-0001",
"account_id": "acct-001",
"trunk_id": "sbc-mia-02",
"caller": "+12025550100",
"callee": "+5511987654321",
"codec": "G.711u",
"route": "BR-Mobile-LCR",
"sip_state": "early"
}
Softswitches e SBCs
| Plataforma | Caminho recomendado |
|---|---|
| OpenSIPS | acc/dialog para CDR, HTTP async e x-source-type: opensips. |
| Kamailio | acc_json, collector externo ou HTTP async com x-source-type: kamailio. |
| FreeSWITCH | mod_json_cdr, mod_cdr_csv com forwarder, ou Event Socket collector. |
| Asterisk | CDR/CEL via AMI, ODBC export ou script HTTP pós-processamento. |
| Khomp SBC | Exportação de CDR ou webhook usando adapter khomp. |
| Ribbon, AudioCodes, Oracle ACME, Cisco CUBE | RADIUS Accounting, CDR export ou syslog collector com adapter vendor-specific. |
Segurança operacional
API key por origem: gere uma chave por SBC, collector ou trunk lógico para facilitar revogação e auditoria.
Idempotência: preserve call_id ou Acct-Session-Id; reenvios não devem gerar cobrança duplicada.
Retries: em erro 5xx, use backoff exponencial. Em 401/403, pare e revise credenciais.
Transporte: envie eventos sempre por HTTPS; em RADIUS UDP, mantenha receiver em rede privada e shared secret forte.
Checklist
call_id para testar idempotência.