{"name":"OndaAgents API","version":"v1","documentation":"https://api.ondaagents.it/","endpoints":[{"method":"GET","path":"/v1/agents","description":"Elenco agenti (id, name, kind, clara). Filtri: ?kind=clara e ?typology_id="},{"method":"GET","path":"/v1/agents/:id","description":"Configurazione completa di un agente (voce, prompt, tool, MCP, base di conoscenza, RAG, analisi)"},{"method":"PATCH","path":"/v1/agents/:id","description":"Non più disponibile per le chiavi dei clienti (403): gli agenti li gestisce ET"},{"method":"GET","path":"/v1/agents/:id/variables","description":"Variabili dinamiche richieste da un agente (required, with_defaults)"},{"method":"GET","path":"/v1/phone-numbers","description":"Elenco dei numeri di telefono configurati"},{"method":"GET","path":"/v1/campaigns","description":"Elenco campagne con conteggi destinatari per stato"},{"method":"POST","path":"/v1/campaigns","description":"Crea una campagna (JSON: name, agent_id, phone_number_id, recipients[])"},{"method":"GET","path":"/v1/campaigns/:id","description":"Dettaglio campagna: aggregati destinatari"},{"method":"GET","path":"/v1/campaigns/:id/recipients","description":"Destinatari paginati (?status=&page=&page_size=)"},{"method":"POST","path":"/v1/campaigns/:id/start","description":"Avvia una campagna in bozza sul motore per-chiamata (409 se non in draft o avvio concorrente)"},{"method":"POST","path":"/v1/campaigns/:id/cancel","description":"Annulla una campagna (idempotente)"},{"method":"POST","path":"/v1/campaigns/:id/pause","description":"Mette in pausa una lista in corso"},{"method":"POST","path":"/v1/campaigns/:id/resume","description":"Riprende una lista in pausa"},{"method":"POST","path":"/v1/calls","description":"Chiamata diretta a un numero (JSON: agent_id, phone_number_id, phone, variables?). Ritorna id"},{"method":"GET","path":"/v1/calls","description":"Elenco chiamate dirette paginato (?page=&page_size=&status=)"},{"method":"GET","path":"/v1/calls/:id","description":"Dettaglio chiamata: dialogo della telefonata + analysis (esito, riassunto, data_collection)"},{"method":"GET","path":"/v1/calls/:id/audio","description":"Registrazione audio della chiamata (stream)"},{"method":"GET","path":"/v1/recipients/:id/call","description":"Esito chiamata di campagna: durata, esito, dialogo della telefonata"},{"method":"GET","path":"/v1/conversations","description":"Tutte le telefonate, una riga ciascuna: esito, durata, dati raccolti, persona (?agent_id=&location_id=&campaign_id=&origin=&outcome=&status_after=&person_id=&from=&to=&q=&page=&page_size=)"},{"method":"GET","path":"/v1/conversations/:id","description":"Dettaglio di una telefonata: dialogo e dati raccolti completi"},{"method":"GET","path":"/v1/conversations/:id/audio","description":"Registrazione audio della telefonata (stream)"},{"method":"GET","path":"/v1/test-calls","description":"Chiamate di prova della scheda Test, a parte dalle telefonate vere (?agent_id=&location_id=&from=&to=&q=&page=&page_size=)"},{"method":"GET","path":"/v1/test-calls/:id","description":"Dettaglio di una prova: dialogo e dati raccolti dell'ultima telefonata"},{"method":"GET","path":"/v1/test-calls/:id/audio","description":"Registrazione audio dell'ultima telefonata della prova (stream)"},{"method":"GET","path":"/v1/people","description":"Persone in lavorazione, paginate: stato, tentativi, prossima azione, sede, lista, agente, link al gestionale (?location_id=&campaign_id=&agent_id=&status=&active=1&q=&page=&page_size=)"},{"method":"GET","path":"/v1/people/:id","description":"Una persona con la sua cronologia: le telefonate che ha ricevuto, senza trascrizione"},{"method":"GET","path":"/v1/locations","description":"Sedi, paginate: stato (attiva o in pausa, da quando), agente, numero, persone in lavorazione e chiuse per stato (?page=&page_size=)"},{"method":"POST","path":"/v1/locations/:id/pause","description":"Mette in pausa una sede: nessuna chiamata parte finché non la riprendi"},{"method":"POST","path":"/v1/locations/:id/resume","description":"Riprende una sede in pausa"},{"method":"POST","path":"/v1/people/cancel","description":"Annulla persone in lavorazione (JSON: person_ids[] oppure location_id oppure agent_id; dry_run: true per contarle soltanto). Non reversibile"},{"method":"GET","path":"/v1/analytics","description":"Analisi: imbuto per persona (lavorate, raggiunte, convertite), minuti, tabelle per agente, sede, lista e giorno (?days=7|30|90 oppure ?from=&to=, &agent_id=&location_id=&campaign_id=&origin=)"},{"method":"GET","path":"/v1/calendar","description":"Calendario: telefonate fatte, appuntamenti presi, richiami programmati per giorno e in elenco paginato (?from=&to= massimo 45 giorni, &layers=&location_id=&agent_id=&page=&page_size=)"},{"method":"GET","path":"/v1/exclusions","description":"Lista esclusione (opt-out / blacklist)"},{"method":"POST","path":"/v1/exclusions","description":"Aggiungi un numero alla lista esclusione ({phone, reason?})"},{"method":"DELETE","path":"/v1/exclusions/:id","description":"Rimuovi un numero dalla lista esclusione"},{"method":"GET","path":"/v1/webhook","description":"Stato del webhook esiti chiamata ({has_webhook, url, active})"},{"method":"PUT","path":"/v1/webhook","description":"Registra il webhook esiti ({url, secret?}); secret condiviso per la firma HMAC"},{"method":"DELETE","path":"/v1/webhook","description":"Rimuovi il webhook esiti chiamata"},{"method":"GET","path":"/v1/tools","description":"Elenco degli strumenti (tool) configurati sull’account"},{"method":"POST","path":"/v1/tools","description":"Crea uno strumento (webhook o client) dalla configurazione strutturata — sola lettura dal 21/10/2026: risponde 403"},{"method":"GET","path":"/v1/tools/:toolId","description":"Dettaglio di uno strumento (configurazione + agenti dipendenti)"},{"method":"PATCH","path":"/v1/tools/:toolId","description":"Aggiorna uno strumento (rimpiazza la configurazione) — sola lettura dal 21/10/2026: risponde 403"},{"method":"DELETE","path":"/v1/tools/:toolId","description":"Elimina uno strumento (lo stacca anche dagli agenti collegati) — sola lettura dal 21/10/2026: risponde 403"},{"method":"GET","path":"/v1/mcp-servers","description":"Elenco dei server MCP configurati sull’account"},{"method":"POST","path":"/v1/mcp-servers","description":"Crea un server MCP dalla configurazione strutturata — sola lettura dal 21/10/2026: risponde 403"},{"method":"GET","path":"/v1/mcp-servers/:mcpId","description":"Dettaglio di un server MCP (config + tool offerti + approvazioni)"},{"method":"PATCH","path":"/v1/mcp-servers/:mcpId","description":"Aggiorna i campi modificabili di un server MCP — sola lettura dal 21/10/2026: risponde 403"},{"method":"DELETE","path":"/v1/mcp-servers/:mcpId","description":"Elimina un server MCP (409 se in uso da un agente) — sola lettura dal 21/10/2026: risponde 403"},{"method":"POST","path":"/v1/mcp-servers/:mcpId/tool-approvals","description":"Approva un tool offerto dal server MCP ({tool_name, ...}) — sola lettura dal 21/10/2026: risponde 403"},{"method":"DELETE","path":"/v1/mcp-servers/:mcpId/tool-approvals/:toolName","description":"Revoca l’approvazione di un tool del server MCP — sola lettura dal 21/10/2026: risponde 403"},{"method":"GET","path":"/v1/workspace-webhooks","description":"Elenco dei webhook del workspace (quello di sistema è marcato is_system)"},{"method":"POST","path":"/v1/workspace-webhooks","description":"Crea un webhook ({name, url, request_headers?}); ritorna il secret HMAC una volta"},{"method":"PATCH","path":"/v1/workspace-webhooks/:webhookId","description":"Aggiorna un webhook ({name?, is_disabled?, retry_enabled?, request_headers?})"},{"method":"DELETE","path":"/v1/workspace-webhooks/:webhookId","description":"Elimina un webhook del workspace"},{"method":"GET","path":"/v1/knowledge-base","description":"Elenco dei documenti della base di conoscenza (RAG)"},{"method":"POST","path":"/v1/knowledge-base","description":"Crea un documento da testo o URL ({source: text|url, name, text|url}) — sola lettura dal 21/10/2026: risponde 403"},{"method":"DELETE","path":"/v1/knowledge-base/:docId","description":"Elimina un documento della base di conoscenza (lo stacca dagli agenti) — sola lettura dal 21/10/2026: risponde 403"},{"method":"GET","path":"/v1/voices","description":"Elenco delle voci disponibili sull’account"}]}