{"openapi":"3.1.0","info":{"title":"ExoVoIP API","version":"0.0.0","description":"API REST di ExoVoIP by Exobyte. Il pannello usa le stesse API.\n\n**Autenticazione**: `Authorization: Bearer exo_live_…` (oppure `X-API-Key`). Le chiavi si creano dal pannello in *Chiavi API*; la chiave completa è mostrata una sola volta.\n\n**Errori**: `{ \"error\": { \"code\", \"message\", \"details?\" } }`. **Paginazione**: `?limit=` e `?cursor=` (valore `nextCursor` della pagina precedente).\n\n**Date** in ISO 8601 UTC. **PATCH**: aggiornamento parziale, `null` azzera il campo.\n\n**Manuale sviluppatori**: [/api/manual/](/api/manual/) (guide, esempi, webhook, tempo reale). **SDK ufficiali**: [TypeScript](/api/sdk/typescript.zip) · [PHP](/api/sdk/php.zip) · [Python](/api/sdk/python.zip).","contact":{"name":"Exobyte","url":"https://centralino.exovoip.it/"}},"servers":[{"url":"https://centralino.exovoip.it","description":"Produzione"}],"tags":[{"name":"Accesso","description":"Sessione del pannello (cookie) e verifica in due passaggi."},{"name":"Stato servizio","description":"Verifica di raggiungibilità."},{"name":"Aziende","description":"Gestione aziende (solo piattaforma)."},{"name":"Interni","description":"Interni, credenziali SIP, deviazioni e inoltri."},{"name":"Linee","description":"Linee SIP (trunk) dell’azienda o condivise."},{"name":"Numeri","description":"Numeri telefonici e destinazione delle chiamate."},{"name":"Regole in entrata","description":"Catene di squillo per numero, linea e chiamante."},{"name":"Regole di uscita","description":"Instradamento in uscita, failover e blocchi."},{"name":"Segreteria","description":"Impostazioni, caselle e messaggi."},{"name":"Registro chiamate","description":"Storico chiamate ed esportazione CSV."},{"name":"Chiavi API","description":"Chiavi di accesso per integrazioni."},{"name":"Sicurezza","description":"Protezione da attacchi (solo piattaforma)."},{"name":"Sistema","description":"Stato servizi e ricarica configurazione (solo piattaforma)."},{"name":"Tempo reale","description":"Stato in tempo reale di chiamate, interni e dispositivi, linee, code, parcheggio e servizio (REST, SSE, WebSocket)."},{"name":"Webhook","description":"Eventi in tempo reale inviati ai tuoi sistemi, firmati con HMAC-SHA256."},{"name":"Orari e chiusure","description":"Calendari, festività, forzature e simulatore."},{"name":"Registrazioni","description":"Regole, ascolto, download, trascrizioni e riassunti."},{"name":"Inoltro al cellulare","description":"Modalità di inoltro delle chiamate al cellulare."},{"name":"Notifiche","description":"Avvisi via email e Telegram e registro invii."},{"name":"Lavori in corso","description":"Stato delle elaborazioni in background."},{"name":"Menu vocali","description":"Menu con scelta tramite tastiera."},{"name":"Gruppi di squillo","description":"Più interni che squillano insieme o in sequenza."},{"name":"Code","description":"Code di attesa con operatori."},{"name":"Musica d’attesa","description":"Musica e annunci durante l’attesa."},{"name":"Messaggi vocali","description":"Messaggi registrati o generati da testo."},{"name":"Rubrica","description":"Contatti aziendali e personali, nome sul display."},{"name":"Operatività","description":"Backup e protezione del server (solo piattaforma)."}],"paths":{"/api/health":{"get":{"operationId":"health","summary":"Stato del servizio","tags":["Stato servizio"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"example":{"status":"ok","version":"1.0.0","uptime":0,"time":"esempio","db":"up"}}}}},"security":[]}},"/api/auth/login":{"post":{"operationId":"auth_login","summary":"Accesso al pannello (imposta i cookie di sessione)","tags":["Accesso"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLoginResponse"},"example":{"status":"ok","user":{"id":12,"email":"mario.rossi@acme.example","name":"Mario Rossi","role":"superadmin","tenantId":12,"tenantName":"esempio","extensionId":12,"totpEnabled":true}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLoginRequestInput"},"example":{"email":"mario.rossi@example.com","password":"una-password-sicura"}}}}}},"/api/auth/refresh":{"post":{"operationId":"auth_refresh","summary":"Rinnovo sessione (cookie exopbx_rt)","tags":["Accesso"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthRefreshResponse"},"example":{"user":{"id":12,"email":"mario.rossi@acme.example","name":"Mario Rossi","role":"superadmin","tenantId":12,"tenantName":"esempio","extensionId":12,"totpEnabled":true}}}}}},"security":[]}},"/api/auth/logout":{"post":{"operationId":"auth_logout","summary":"Uscita","tags":["Accesso"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLogoutResponse"},"example":{"ok":true}}}}},"security":[]}},"/api/auth/me":{"get":{"operationId":"auth_me","summary":"Utente della sessione","tags":["Accesso"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMeResponse"},"example":{"user":{"id":12,"email":"mario.rossi@acme.example","name":"Mario Rossi","role":"superadmin","tenantId":12,"tenantName":"esempio","extensionId":12,"totpEnabled":true}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}]}},"/api/v1/tenants":{"get":{"operationId":"tenants_list","summary":"Elenco aziende","description":"Scope richiesto: `tenants:read`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","suspended","disabled"]}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsListResponse"},"example":{"items":[{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:read","x-access":"superadmin"},"post":{"operationId":"tenants_create","summary":"Crea azienda (+ primo amministratore)","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsCreateResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"admin":{"id":12,"email":"mario.rossi@acme.example","initialPassword":"Pq7Rs2Tu9Vw4Xy6Za8Bc"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsCreateRequestInput"},"example":{"code":"acme","name":"Acme S.r.l.","maxExt":20,"maxCalls":6,"admin":{"email":"admin@acme.example","name":"Mario Rossi"}}}}}}},"/api/v1/tenants/current":{"get":{"operationId":"tenants_current","summary":"Azienda corrente","description":"Scope richiesto: `extensions:read`. Accesso: azienda.","tags":["Aziende"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsCurrentResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio"},"impersonated":true,"stats":{"extensions":1}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"}},"/api/v1/tenants/{id}":{"get":{"operationId":"tenants_get","summary":"Dettaglio azienda","description":"Scope richiesto: `tenants:read`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:read","x-access":"superadmin"},"patch":{"operationId":"tenants_update","summary":"Modifica azienda","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsUpdateRequestInput"},"example":{"name":"Mario Rossi","timezone":"Europe/Rome","lang":"it","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true}}}}},"delete":{"operationId":"tenants_delete","summary":"Disattiva azienda (status=disabled, nessuna cancellazione dati)","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin"}},"/api/v1/tenants/{id}/limits":{"put":{"operationId":"tenants_limits","summary":"Limiti interni e chiamate simultanee","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsLimitsRequestInput"},"example":{"maxExt":1,"maxCalls":1}}}}}},"/api/v1/tenants/{id}/suspend":{"post":{"operationId":"tenants_suspend","summary":"Sospendi azienda","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsSuspendRequestInput"},"example":{"reason":"manual"}}}}}},"/api/v1/tenants/{id}/resume":{"post":{"operationId":"tenants_resume","summary":"Riattiva azienda","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio","recordDefault":"always","retentionDays":1,"storageQuotaMb":1,"aiMonthlyMinutes":1,"outboundBlocks":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true,"voiceNodeId":12,"sipHost":"esempio","suspendedReason":"esempio","suspendedAt":"2026-11-04T10:00:00.000Z","stats":{"extensions":1,"numbers":1,"users":1},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin"}},"/api/v1/tenants/{id}/impersonate":{"post":{"operationId":"tenants_impersonate","summary":"Avvia impersonificazione (audit) e restituisce X-Tenant-Id","description":"Scope richiesto: `tenants:impersonate`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsImpersonateResponse"},"example":{"tenant":{"id":12,"code":"acme","name":"Mario Rossi","status":"active","maxExt":1,"maxCalls":1,"timezone":"Europe/Rome","lang":"esempio"},"header":"X-Tenant-Id","value":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:impersonate","x-access":"superadmin"}},"/api/v1/feature-codes/settings":{"get":{"operationId":"featureCodes_getSettings","summary":"Impostazioni codici funzione (PIN forzatura orari)","description":"Scope richiesto: `extensions:read`. Accesso: azienda.","tags":["featureCodes"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCodesGetSettingsResponse"},"example":{"hasOverridePin":true,"overrideExtensions":["esempio"]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"},"put":{"operationId":"featureCodes_setSettings","summary":"Imposta il PIN per la forzatura orari (*90 / *91 / *92)","description":"Scope richiesto: `extensions:write`. Accesso: azienda.","tags":["featureCodes"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCodesGetSettingsResponse"},"example":{"hasOverridePin":true,"overrideExtensions":["esempio"]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCodesSetSettingsRequestInput"},"example":{"overridePin":"esempio"}}}}}},"/api/v1/extensions":{"get":{"operationId":"extensions_list","summary":"Elenco interni","description":"Scope richiesto: `extensions:read`. Accesso: azienda.","tags":["Interni"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"enabled","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"registered","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsListResponse"},"example":{"items":[{"id":12,"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","avatarUrl":"esempio","enabled":true,"sip":{"username":"acme-101","dtmfMode":"auto","transport":"udp","tlsEnabled":true,"webrtcEnabled":true,"maxContacts":1,"callWaiting":true,"permit":["203.0.113.10"],"advanced":{}},"recordMode":"inherit","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","attachAudio":true,"hasPin":true},"followMe":{"enabled":true,"number":"101","rings":1,"mode":"sequential","confirm":true,"when":"always","callerId":"caller"},"forwarding":{"noAnswer":{"destination":{"type":"extension","extensionId":12},"rings":1},"busy":{"type":"extension","extensionId":12},"unavailable":{"type":"extension","extensionId":12},"busyCheck":true},"canOverrideHours":true,"dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"},"availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true},"registered":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"},"post":{"operationId":"extensions_create","summary":"Crea interno (password SIP mostrata una volta)","description":"Scope richiesto: `extensions:write`. Accesso: azienda.","tags":["Interni"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsCreateResponse"},"example":{"extension":{"id":12,"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","avatarUrl":"esempio","enabled":true,"sip":{"username":"acme-101","dtmfMode":"auto","transport":"udp","tlsEnabled":true,"webrtcEnabled":true,"maxContacts":1,"callWaiting":true,"permit":["203.0.113.10"],"advanced":{}},"recordMode":"inherit","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","attachAudio":true,"hasPin":true},"followMe":{"enabled":true,"number":"101","rings":1,"mode":"sequential","confirm":true,"when":"always","callerId":"caller"},"forwarding":{"noAnswer":{"destination":{"type":"extension","extensionId":12},"rings":1},"busy":{"type":"extension","extensionId":12},"unavailable":{"type":"extension","extensionId":12},"busyCheck":true},"canOverrideHours":true,"dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"},"availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true},"registered":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"sipPassword":"Xk3pQ9vL2mN8rT5wZ7yB4cD6"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsCreateRequestInput"},"example":{"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","pin":"4821"},"followMe":{"enabled":true,"number":"+393331234567","rings":4,"confirm":true},"forwarding":{"busy":{"type":"voicemail","extensionId":12,"greeting":"busy"}}}}}}}},"/api/v1/extensions/{id}":{"get":{"operationId":"extensions_get","summary":"Dettaglio interno","description":"Scope richiesto: `extensions:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetResponse"},"example":{"extension":{"id":12,"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","avatarUrl":"esempio","enabled":true,"sip":{"username":"acme-101","dtmfMode":"auto","transport":"udp","tlsEnabled":true,"webrtcEnabled":true,"maxContacts":1,"callWaiting":true,"permit":["203.0.113.10"],"advanced":{}},"recordMode":"inherit","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","attachAudio":true,"hasPin":true},"followMe":{"enabled":true,"number":"101","rings":1,"mode":"sequential","confirm":true,"when":"always","callerId":"caller"},"forwarding":{"noAnswer":{"destination":{"type":"extension","extensionId":12},"rings":1},"busy":{"type":"extension","extensionId":12},"unavailable":{"type":"extension","extensionId":12},"busyCheck":true},"canOverrideHours":true,"dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"},"availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true},"registered":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"},"patch":{"operationId":"extensions_update","summary":"Modifica interno","description":"Scope richiesto: `extensions:write`. Accesso: azienda.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetResponse"},"example":{"extension":{"id":12,"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","avatarUrl":"esempio","enabled":true,"sip":{"username":"acme-101","dtmfMode":"auto","transport":"udp","tlsEnabled":true,"webrtcEnabled":true,"maxContacts":1,"callWaiting":true,"permit":["203.0.113.10"],"advanced":{}},"recordMode":"inherit","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","attachAudio":true,"hasPin":true},"followMe":{"enabled":true,"number":"101","rings":1,"mode":"sequential","confirm":true,"when":"always","callerId":"caller"},"forwarding":{"noAnswer":{"destination":{"type":"extension","extensionId":12},"rings":1},"busy":{"type":"extension","extensionId":12},"unavailable":{"type":"extension","extensionId":12},"busyCheck":true},"canOverrideHours":true,"dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"},"availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true},"registered":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsUpdateRequestInput"},"example":{"name":"Mario Rossi (Amministrazione)","sip":{"maxContacts":2}}}}}},"delete":{"operationId":"extensions_delete","summary":"Elimina interno (e relativi endpoint SIP)","description":"Scope richiesto: `extensions:write`. Accesso: azienda.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant"}},"/api/v1/extensions/{id}/follow-me":{"put":{"operationId":"extensions_followMe","summary":"Deviazione su cellulare","description":"Scope richiesto: `extensions:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetResponse"},"example":{"extension":{"id":12,"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","avatarUrl":"esempio","enabled":true,"sip":{"username":"acme-101","dtmfMode":"auto","transport":"udp","tlsEnabled":true,"webrtcEnabled":true,"maxContacts":1,"callWaiting":true,"permit":["203.0.113.10"],"advanced":{}},"recordMode":"inherit","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","attachAudio":true,"hasPin":true},"followMe":{"enabled":true,"number":"101","rings":1,"mode":"sequential","confirm":true,"when":"always","callerId":"caller"},"forwarding":{"noAnswer":{"destination":{"type":"extension","extensionId":12},"rings":1},"busy":{"type":"extension","extensionId":12},"unavailable":{"type":"extension","extensionId":12},"busyCheck":true},"canOverrideHours":true,"dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"},"availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true},"registered":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsFollowMeRequestInput"},"example":{"enabled":true,"number":"+393331234567","rings":3,"mode":"sequential"}}}}}},"/api/v1/extensions/{id}/dnd":{"get":{"operationId":"extensions_getDnd","summary":"Stato non disturbare","description":"Scope richiesto: `extensions:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetDndResponse"},"example":{"extensionId":12,"number":"101","dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"},"put":{"operationId":"extensions_setDnd","summary":"Attiva / disattiva non disturbare (comportamento chiamate, scadenza)","description":"Scope richiesto: `extensions:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetDndResponse"},"example":{"extensionId":12,"number":"101","dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsSetDndRequestInput"},"example":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","durationMinutes":1}}}}}},"/api/v1/extensions/{id}/availability":{"get":{"operationId":"extensions_getAvailability","summary":"Orari e stato acceso / spento dell’interno","description":"Scope richiesto: `extensions:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetAvailabilityResponse"},"example":{"extensionId":12,"number":"101","availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"},"put":{"operationId":"extensions_setAvailability","summary":"Imposta gli orari dell’interno o lo accende / spegne (come *95 / *94)","description":"Scope richiesto: `extensions:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsGetAvailabilityResponse"},"example":{"extensionId":12,"number":"101","availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsSetAvailabilityRequestInput"},"example":{"scheduleMode":"always","calendarId":12,"force":"auto"}}}}}},"/api/v1/extensions/{id}/password":{"post":{"operationId":"extensions_resetPassword","summary":"Rigenera password SIP","description":"Scope richiesto: `extensions:write`. Accesso: azienda.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsCreateResponse"},"example":{"extension":{"id":12,"number":"101","name":"Mario Rossi","email":"mario.rossi@acme.example","avatarUrl":"esempio","enabled":true,"sip":{"username":"acme-101","dtmfMode":"auto","transport":"udp","tlsEnabled":true,"webrtcEnabled":true,"maxContacts":1,"callWaiting":true,"permit":["203.0.113.10"],"advanced":{}},"recordMode":"inherit","voicemail":{"enabled":true,"email":"mario.rossi@acme.example","attachAudio":true,"hasPin":true},"followMe":{"enabled":true,"number":"101","rings":1,"mode":"sequential","confirm":true,"when":"always","callerId":"caller"},"forwarding":{"noAnswer":{"destination":{"type":"extension","extensionId":12},"rings":1},"busy":{"type":"extension","extensionId":12},"unavailable":{"type":"extension","extensionId":12},"busyCheck":true},"canOverrideHours":true,"dnd":{"enabled":true,"mode":"busy","expiresAt":"2026-11-04T10:00:00.000Z","setAt":"2026-11-04T10:00:00.000Z","source":"panel"},"availability":{"scheduleMode":"always","calendarId":12,"force":"auto","forceExpiresAt":"2026-11-04T10:00:00.000Z","forceSetAt":"2026-11-04T10:00:00.000Z","forceSource":"phone","available":true},"registered":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"sipPassword":"Xk3pQ9vL2mN8rT5wZ7yB4cD6"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant"}},"/api/v1/extensions/{id}/sip-credentials":{"get":{"operationId":"extensions_sipCredentials","summary":"Credenziali SIP/WebRTC (telefono e softphone)","description":"Scope richiesto: `extensions:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Interni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtensionsSipCredentialsResponse"},"example":{"username":"acme-101","password":"Xk3pQ9vL2mN8rT5wZ7yB4cD6","domain":"centralino.exovoip.it","wssUrl":"wss://centralino.exovoip.it:8089/ws","ports":{"udp":1,"tcp":1,"tls":1}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant"}},"/api/v1/trunks/approvals":{"get":{"operationId":"trunks_approvals","summary":"Linee in attesa di verifica (sovrapposizione di reti)","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Linee"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"status","in":"query","required":false,"schema":{"default":"pending_approval","type":"string","enum":["approved","pending_approval","rejected"]}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApprovalsResponse"},"example":{"items":[{"trunk":{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"tenantName":"esempio","source":"create","overlaps":[{"network":"esempio","host":"sip.provider.example","otherTrunkId":12,"otherTrunkName":"esempio","otherTenantId":12,"otherTenantName":"esempio","otherNetwork":"esempio"}]}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"}},"/api/v1/trunks/{id}/approve":{"post":{"operationId":"trunks_approve","summary":"Approva linea in attesa di verifica","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Linee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApproveResponse"},"example":{"trunk":{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"overlaps":[{"network":"esempio","host":"sip.provider.example","otherTrunkId":12,"otherTrunkName":"esempio","otherTenantId":12,"otherTenantName":"esempio","otherNetwork":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApproveRequestInput"},"example":{"reason":"manual"}}}}}},"/api/v1/trunks/{id}/reject":{"post":{"operationId":"trunks_reject","summary":"Rifiuta linea in attesa di verifica (motivo obbligatorio)","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Linee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApproveResponse"},"example":{"trunk":{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"overlaps":[{"network":"esempio","host":"sip.provider.example","otherTrunkId":12,"otherTrunkName":"esempio","otherTenantId":12,"otherTenantName":"esempio","otherNetwork":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksRejectRequestInput"},"example":{"reason":"manual"}}}}}},"/api/v1/trunks":{"get":{"operationId":"trunks_list","summary":"Elenco linee","description":"Scope richiesto: `trunks:read`. Accesso: azienda o vista globale.","tags":["Linee"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"enabled","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"scope","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","shared","tenant"]}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksListResponse"},"example":{"items":[{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"trunks:read","x-access":"mixed"},"post":{"operationId":"trunks_create","summary":"Crea linea (condivisa solo superadmin)","description":"Scope richiesto: `trunks:write`. Accesso: azienda o vista globale.","tags":["Linee"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApproveResponse"},"example":{"trunk":{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"overlaps":[{"network":"esempio","host":"sip.provider.example","otherTrunkId":12,"otherTrunkName":"esempio","otherTenantId":12,"otherTenantName":"esempio","otherNetwork":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"trunks:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksCreateRequestInput"},"example":{"name":"Linea principale","registration":"outbound","host":"sip.provider.example","username":"0981123456","secret":"password-del-provider","codecs":["alaw","g722"]}}}}}},"/api/v1/trunks/{id}":{"get":{"operationId":"trunks_get","summary":"Dettaglio linea","description":"Scope richiesto: `trunks:read`. Accesso: azienda o vista globale.","tags":["Linee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApproveResponse"},"example":{"trunk":{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"overlaps":[{"network":"esempio","host":"sip.provider.example","otherTrunkId":12,"otherTrunkName":"esempio","otherTenantId":12,"otherTenantName":"esempio","otherNetwork":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"trunks:read","x-access":"mixed"},"patch":{"operationId":"trunks_update","summary":"Modifica linea","description":"Scope richiesto: `trunks:write`. Accesso: azienda o vista globale.","tags":["Linee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksApproveResponse"},"example":{"trunk":{"id":12,"tenantId":12,"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","hasSecret":true,"fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["esempio"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10,"status":"registered","approval":{"status":"approved","reason":"manual","requestedAt":"2026-11-04T10:00:00.000Z","decidedAt":"2026-11-04T10:00:00.000Z"},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"overlaps":[{"network":"esempio","host":"sip.provider.example","otherTrunkId":12,"otherTrunkName":"esempio","otherTenantId":12,"otherTenantName":"esempio","otherNetwork":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"trunks:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrunksUpdateRequestInput"},"example":{"name":"Mario Rossi","enabled":true,"registration":"outbound","host":"sip.provider.example","port":1,"transport":"udp","username":"acme-101","secret":"exo_live_Ab3dE6gH1234567890abcdefghijklmnopqrstuv","fromUser":"esempio","fromDomain":"esempio","outboundProxy":"esempio","allowedHosts":["203.0.113.10"],"qualify":true,"qualifyFrequencyS":10,"callerIdExtraction":{"source":"from","header":"esempio","regex":"esempio"},"didExtraction":{"source":"to","header":"esempio","regex":"esempio"},"debugCidDid":true,"maxChannels":1,"codecs":["alaw"],"dtmfMode":"auto","retryIntervalS":10,"forbiddenRetryIntervalS":10}}}}},"delete":{"operationId":"trunks_delete","summary":"Elimina linea (IN_USE se usata)","description":"Scope richiesto: `trunks:write`. Accesso: azienda o vista globale.","tags":["Linee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"trunks:write","x-access":"mixed"}},"/api/v1/numbers":{"get":{"operationId":"numbers_list","summary":"Elenco numeri","description":"Scope richiesto: `numbers:read`. Accesso: azienda o vista globale.","tags":["Numeri"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"enabled","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"unassigned","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"trunkId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersListResponse"},"example":{"items":[{"id":12,"number":"101","description":"Centralino","tenantId":12,"tenantName":"esempio","trunkId":12,"destination":{"type":"extension","extensionId":12},"recordMode":"inherit","enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:read","x-access":"mixed"},"post":{"operationId":"numbers_create","summary":"Aggiunge numero al pool","description":"Scope richiesto: `numbers:write`. Accesso: solo piattaforma.","tags":["Numeri"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersCreateResponse"},"example":{"number":{"id":12,"number":"101","description":"Centralino","tenantId":12,"tenantName":"esempio","trunkId":12,"destination":{"type":"extension","extensionId":12},"recordMode":"inherit","enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersCreateRequestInput"},"example":{"number":"+390981123456","description":"Centralino","tenantId":3,"trunkId":1}}}}}},"/api/v1/numbers/bulk":{"post":{"operationId":"numbers_bulkCreate","summary":"Aggiunta massiva numeri","description":"Scope richiesto: `numbers:write`. Accesso: solo piattaforma.","tags":["Numeri"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersBulkCreateResponse"},"example":{"created":1,"skipped":["esempio"]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersBulkCreateRequestInput"},"example":{"numbers":["+390981123456","+390981123457"],"tenantId":3,"trunkId":1}}}}}},"/api/v1/numbers/{id}":{"get":{"operationId":"numbers_get","summary":"Dettaglio numero","description":"Scope richiesto: `numbers:read`. Accesso: azienda o vista globale.","tags":["Numeri"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersCreateResponse"},"example":{"number":{"id":12,"number":"101","description":"Centralino","tenantId":12,"tenantName":"esempio","trunkId":12,"destination":{"type":"extension","extensionId":12},"recordMode":"inherit","enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:read","x-access":"mixed"},"patch":{"operationId":"numbers_update","summary":"Destinazione e descrizione del numero","description":"Scope richiesto: `numbers:write`. Accesso: azienda.","tags":["Numeri"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersCreateResponse"},"example":{"number":{"id":12,"number":"101","description":"Centralino","tenantId":12,"tenantName":"esempio","trunkId":12,"destination":{"type":"extension","extensionId":12},"recordMode":"inherit","enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersUpdateRequestInput"},"example":{"description":"Centralino","destination":{"type":"extension","extensionId":12}}}}}},"delete":{"operationId":"numbers_delete","summary":"Rimuove numero dal pool (solo se libero)","description":"Scope richiesto: `numbers:write`. Accesso: solo piattaforma.","tags":["Numeri"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:write","x-access":"superadmin"}},"/api/v1/numbers/{id}/assignment":{"put":{"operationId":"numbers_assign","summary":"Assegna/libera numero e linea","description":"Scope richiesto: `numbers:write`. Accesso: solo piattaforma.","tags":["Numeri"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersCreateResponse"},"example":{"number":{"id":12,"number":"101","description":"Centralino","tenantId":12,"tenantName":"esempio","trunkId":12,"destination":{"type":"extension","extensionId":12},"recordMode":"inherit","enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersAssignRequestInput"},"example":{"tenantId":3,"trunkId":1}}}}}},"/api/v1/inbound-routes":{"get":{"operationId":"inboundRoutes_list","summary":"Elenco regole in entrata","description":"Scope richiesto: `inbound_routes:read`. Accesso: azienda.","tags":["Regole in entrata"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"numberId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"enabled","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","numberId":12,"didPattern":"esempio","trunkId":12,"callerPattern":"esempio","priority":1,"enabled":true,"steps":[{"position":1,"timeoutS":5,"destination":{"type":"extension","extensionId":12},"id":12}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"inbound_routes:read","x-access":"tenant"},"post":{"operationId":"inboundRoutes_create","summary":"Crea regola in entrata","description":"Scope richiesto: `inbound_routes:write`. Accesso: azienda.","tags":["Regole in entrata"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesCreateResponse"},"example":{"route":{"id":12,"name":"Mario Rossi","numberId":12,"didPattern":"esempio","trunkId":12,"callerPattern":"esempio","priority":1,"enabled":true,"steps":[{"position":1,"timeoutS":5,"destination":{"type":"extension","extensionId":12},"id":12}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"inbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesCreateRequestInput"},"example":{"name":"Orario d’ufficio","numberId":7,"priority":10,"steps":[{"timeoutS":20,"destination":{"type":"extension","extensionId":12}},{"timeoutS":20,"destination":{"type":"mobile","number":"+393331234567","confirm":true}},{"timeoutS":60,"destination":{"type":"voicemail","extensionId":12}}]}}}}}},"/api/v1/inbound-routes/order":{"put":{"operationId":"inboundRoutes_reorder","summary":"Riordina priorità","description":"Scope richiesto: `inbound_routes:write`. Accesso: azienda.","tags":["Regole in entrata"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderResponse"},"example":{"ok":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"inbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderRequestInput"},"example":{"ids":[4,2,9]}}}}}},"/api/v1/inbound-routes/{id}":{"get":{"operationId":"inboundRoutes_get","summary":"Dettaglio regola","description":"Scope richiesto: `inbound_routes:read`. Accesso: azienda.","tags":["Regole in entrata"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesCreateResponse"},"example":{"route":{"id":12,"name":"Mario Rossi","numberId":12,"didPattern":"esempio","trunkId":12,"callerPattern":"esempio","priority":1,"enabled":true,"steps":[{"position":1,"timeoutS":5,"destination":{"type":"extension","extensionId":12},"id":12}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"inbound_routes:read","x-access":"tenant"},"patch":{"operationId":"inboundRoutes_update","summary":"Modifica regola (steps sostituisce la catena)","description":"Scope richiesto: `inbound_routes:write`. Accesso: azienda.","tags":["Regole in entrata"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesCreateResponse"},"example":{"route":{"id":12,"name":"Mario Rossi","numberId":12,"didPattern":"esempio","trunkId":12,"callerPattern":"esempio","priority":1,"enabled":true,"steps":[{"position":1,"timeoutS":5,"destination":{"type":"extension","extensionId":12},"id":12}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"inbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesUpdateRequestInput"},"example":{"name":"Mario Rossi","numberId":12,"didPattern":"esempio","trunkId":12,"callerPattern":"esempio","priority":1,"enabled":true,"steps":[{"timeoutS":5,"destination":{"type":"extension","extensionId":12}}]}}}}},"delete":{"operationId":"inboundRoutes_delete","summary":"Elimina regola","description":"Scope richiesto: `inbound_routes:write`. Accesso: azienda.","tags":["Regole in entrata"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"inbound_routes:write","x-access":"tenant"}},"/api/v1/outbound-routes":{"get":{"operationId":"outboundRoutes_list","summary":"Elenco regole di uscita","description":"Scope richiesto: `outbound_routes:read`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"enabled","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","beginsWith":"esempio","restDigits":1,"trim":1,"prepend":"esempio","callerId":"esempio","priority":1,"enabled":true,"trunkIds":[12],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:read","x-access":"tenant"},"post":{"operationId":"outboundRoutes_create","summary":"Crea regola di uscita","description":"Scope richiesto: `outbound_routes:write`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesCreateResponse"},"example":{"route":{"id":12,"name":"Mario Rossi","beginsWith":"esempio","restDigits":1,"trim":1,"prepend":"esempio","callerId":"esempio","priority":1,"enabled":true,"trunkIds":[12],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesCreateRequestInput"},"example":{"name":"Cellulari","beginsWith":"3","restDigits":9,"trim":0,"prepend":"","trunkIds":[1,2]}}}}}},"/api/v1/outbound-routes/order":{"put":{"operationId":"outboundRoutes_reorder","summary":"Riordina priorità","description":"Scope richiesto: `outbound_routes:write`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderResponse"},"example":{"ok":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderRequestInput"},"example":{"ids":[3,1]}}}}}},"/api/v1/outbound-routes/policy":{"get":{"operationId":"outboundRoutes_getPolicy","summary":"Blocchi chiamate per categoria","description":"Scope richiesto: `outbound_routes:read`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesGetPolicyResponse"},"example":{"blocked":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:read","x-access":"tenant"},"put":{"operationId":"outboundRoutes_setPolicy","summary":"Imposta blocchi per categoria e destinazioni di inoltro","description":"Scope richiesto: `outbound_routes:write`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesGetPolicyResponse"},"example":{"blocked":["international"],"forwardDestinationsPolicy":"national_only","forwardDestinationsPolicyLocked":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesSetPolicyRequestInput"},"example":{"blocked":["premium","satellite","international"]}}}}}},"/api/v1/outbound-routes/simulate":{"post":{"operationId":"outboundRoutes_simulate","summary":"Simula instradamento di un numero","description":"Scope richiesto: `outbound_routes:read`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesSimulateResponse"},"example":{"allowed":true,"blockedBy":"international","routeId":12,"dialed":"esempio","trunkIds":[12]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:read","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesSimulateRequestInput"},"example":{"number":"3331234567"}}}}}},"/api/v1/outbound-routes/{id}":{"get":{"operationId":"outboundRoutes_get","summary":"Dettaglio regola","description":"Scope richiesto: `outbound_routes:read`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesCreateResponse"},"example":{"route":{"id":12,"name":"Mario Rossi","beginsWith":"esempio","restDigits":1,"trim":1,"prepend":"esempio","callerId":"esempio","priority":1,"enabled":true,"trunkIds":[12],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:read","x-access":"tenant"},"patch":{"operationId":"outboundRoutes_update","summary":"Modifica regola","description":"Scope richiesto: `outbound_routes:write`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesCreateResponse"},"example":{"route":{"id":12,"name":"Mario Rossi","beginsWith":"esempio","restDigits":1,"trim":1,"prepend":"esempio","callerId":"esempio","priority":1,"enabled":true,"trunkIds":[12],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRoutesUpdateRequestInput"},"example":{"name":"Mario Rossi","beginsWith":"esempio","restDigits":1,"trim":1,"prepend":"esempio","callerId":"esempio","priority":1,"enabled":true,"trunkIds":[12]}}}}},"delete":{"operationId":"outboundRoutes_delete","summary":"Elimina regola","description":"Scope richiesto: `outbound_routes:write`. Accesso: azienda.","tags":["Regole di uscita"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"outbound_routes:write","x-access":"tenant"}},"/api/v1/voicemail/settings":{"get":{"operationId":"voicemail_getSettings","summary":"Impostazioni segreteria azienda","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.","tags":["Segreteria"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailGetSettingsResponse"},"example":{"emailFromName":"esempio","attachAudioDefault":true,"transcribeDefault":true,"maxMessageS":10,"maxMessages":1,"minMessageS":1,"language":"it"}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"},"put":{"operationId":"voicemail_setSettings","summary":"Modifica impostazioni segreteria","description":"Scope richiesto: `voicemail:write`. Accesso: azienda.","tags":["Segreteria"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailGetSettingsResponse"},"example":{"emailFromName":"esempio","attachAudioDefault":true,"transcribeDefault":true,"maxMessageS":10,"maxMessages":1,"minMessageS":1,"language":"it"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailSetSettingsRequestInput"},"example":{"emailFromName":"esempio","attachAudioDefault":true,"transcribeDefault":true,"maxMessageS":10,"maxMessages":1,"minMessageS":1,"language":"it"}}}}}},"/api/v1/voicemail/boxes":{"get":{"operationId":"voicemail_listBoxes","summary":"Caselle segreteria","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.","tags":["Segreteria"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailListBoxesResponse"},"example":{"items":[{"id":12,"extensionId":12,"extensionNumber":"+390981123456","extensionName":"esempio","enabled":true,"hasPin":true,"email":"mario.rossi@acme.example","attachAudio":true,"deleteAfterEmail":true,"transcribe":true,"greeting":"default","greetingPromptId":12,"maxMessageS":10,"counts":{"new":1,"old":1},"updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"}},"/api/v1/voicemail/boxes/{extensionId}":{"get":{"operationId":"voicemail_getBox","summary":"Casella di un interno","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailGetBoxResponse"},"example":{"box":{"id":12,"extensionId":12,"extensionNumber":"+390981123456","extensionName":"esempio","enabled":true,"hasPin":true,"email":"mario.rossi@acme.example","attachAudio":true,"deleteAfterEmail":true,"transcribe":true,"greeting":"default","greetingPromptId":12,"maxMessageS":10,"counts":{"new":1,"old":1},"updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"},"put":{"operationId":"voicemail_updateBox","summary":"Modifica casella","description":"Scope richiesto: `voicemail:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailGetBoxResponse"},"example":{"box":{"id":12,"extensionId":12,"extensionNumber":"+390981123456","extensionName":"esempio","enabled":true,"hasPin":true,"email":"mario.rossi@acme.example","attachAudio":true,"deleteAfterEmail":true,"transcribe":true,"greeting":"default","greetingPromptId":12,"maxMessageS":10,"counts":{"new":1,"old":1},"updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailUpdateBoxRequestInput"},"example":{"enabled":true,"pin":"esempio","email":"mario.rossi@acme.example","attachAudio":true,"deleteAfterEmail":true,"transcribe":true,"greeting":"default","greetingPromptId":12,"maxMessageS":10}}}}}},"/api/v1/voicemail/boxes/{extensionId}/messages":{"get":{"operationId":"voicemail_listMessages","summary":"Messaggi in segreteria","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"folder","in":"query","required":false,"schema":{"type":"string","enum":["INBOX","Old","Urgent"]}},{"name":"unread","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailListMessagesResponse"},"example":{"items":[{"id":"esempio","folder":"INBOX","callerNumber":"+393331234567","callerName":"esempio","durationS":1,"receivedAt":"2026-11-04T10:00:00.000Z","linkedid":"1762250400.123","transcript":"esempio"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"}},"/api/v1/voicemail/boxes/{extensionId}/messages/{messageId}/audio":{"get":{"operationId":"voicemail_messageAudio","summary":"Ascolto messaggio (audio/wav o audio/mpeg)","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Audio del messaggio","content":{"audio/wav":{"schema":{"type":"string","contentMediaType":"audio/wav"}},"audio/mpeg":{"schema":{"type":"string","contentMediaType":"audio/mpeg"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"}},"/api/v1/voicemail/boxes/{extensionId}/messages/{messageId}":{"patch":{"operationId":"voicemail_updateMessage","summary":"Sposta messaggio (letto/archiviato)","description":"Scope richiesto: `voicemail:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderResponse"},"example":{"ok":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailUpdateMessageRequestInput"},"example":{"folder":"INBOX"}}}}},"delete":{"operationId":"voicemail_deleteMessage","summary":"Elimina messaggio","description":"Scope richiesto: `voicemail:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:write","x-access":"tenant"}},"/api/v1/cdr":{"get":{"operationId":"cdr_list","summary":"Registro chiamate (una voce per chiamata)","description":"Scope richiesto: `cdr:read`. Accesso: azienda o vista globale.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Registro chiamate"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"number","in":"query","required":false,"schema":{"type":"string","maxLength":32}},{"name":"extension","in":"query","required":false,"schema":{"type":"string","maxLength":16}},{"name":"disposition","in":"query","required":false,"schema":{"type":"string","enum":["answered","no_answer","busy","failed","congestion"]}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["inbound","outbound","internal"]}},{"name":"did","in":"query","required":false,"schema":{"type":"string","maxLength":32}},{"name":"trunkId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"minDurationS","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"maxDurationS","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"hasRecording","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrListResponse"},"example":{"items":[{"linkedid":"1762250400.123","start":"2026-11-04T10:00:00.000Z","end":"2026-11-04T10:00:00.000Z","direction":"inbound","callerNumber":"+393331234567","callerName":"esempio","calledNumber":"+390981123456","did":"+390981123456","extensions":["esempio"],"disposition":"answered","durationS":1,"billsec":1,"legs":1,"hasRecording":true,"tenantCode":"esempio"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"cdr:read","x-access":"mixed"}},"/api/v1/cdr/export.csv":{"get":{"operationId":"cdr_export","summary":"Esporta CSV","description":"Scope richiesto: `cdr:read`. Accesso: azienda o vista globale.","tags":["Registro chiamate"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"number","in":"query","required":false,"schema":{"type":"string","maxLength":32}},{"name":"extension","in":"query","required":false,"schema":{"type":"string","maxLength":16}},{"name":"disposition","in":"query","required":false,"schema":{"type":"string","enum":["answered","no_answer","busy","failed","congestion"]}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["inbound","outbound","internal"]}},{"name":"did","in":"query","required":false,"schema":{"type":"string","maxLength":32}},{"name":"trunkId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"minDurationS","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"maxDurationS","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"hasRecording","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"File CSV (separatore ;)","content":{"text/csv":{"schema":{"type":"string"},"example":"Data inizio;Data fine;Direzione;...\r\n"}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"cdr:read","x-access":"mixed"}},"/api/v1/cdr/{linkedid}":{"get":{"operationId":"cdr_get","summary":"Chiamata completa (tutte le tratte)","description":"Scope richiesto: `cdr:read`. Accesso: azienda o vista globale.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Registro chiamate"],"parameters":[{"name":"linkedid","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":150,"pattern":"^[A-Za-z0-9._-]+$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrGetResponse"},"example":{"call":{"linkedid":"1762250400.123","start":"2026-11-04T10:00:00.000Z","end":"2026-11-04T10:00:00.000Z","direction":"inbound","callerNumber":"+393331234567","callerName":"esempio","calledNumber":"+390981123456","did":"+390981123456","extensions":["esempio"],"disposition":"answered","durationS":1,"billsec":1,"legs":1,"hasRecording":true,"tenantCode":"esempio"},"legs":[{"id":12,"uniqueid":"1762250400.123","linkedid":"1762250400.123","sequence":1,"start":"2026-11-04T10:00:00.000Z","answer":"2026-11-04T10:00:00.000Z","end":"2026-11-04T10:00:00.000Z","durationS":1,"billsec":1,"src":"esempio","dst":"esempio","clid":"esempio","channel":"PJSIP/acme-101-0000002a","dstchannel":"esempio","lastapp":"esempio","lastdata":"esempio","disposition":"answered","direction":"inbound","did":"+390981123456","recordingId":12}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"cdr:read","x-access":"mixed"}},"/api/v1/api-keys":{"get":{"operationId":"apiKeys_list","summary":"Elenco chiavi API","description":"Scope richiesto: `api_keys:read`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","expired","revoked"]}},{"name":"tenantId","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"string","const":"global"}]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","prefix":"exo_live_Ab3dE6gH","env":"live","tenantId":12,"scopes":["*"],"allowedIps":["esempio"],"expiresAt":"2026-11-04T10:00:00.000Z","lastUsedAt":"2026-11-04T10:00:00.000Z","lastUsedIp":"203.0.113.10","revokedAt":"2026-11-04T10:00:00.000Z","rotatedFromId":12,"status":"active","createdBy":{"id":12,"name":"Mario Rossi"},"createdAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:read","x-access":"mixed"},"post":{"operationId":"apiKeys_create","summary":"Crea chiave (segreto mostrato una volta)","description":"Scope richiesto: `api_keys:write`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysCreateResponse"},"example":{"apiKey":{"id":12,"name":"Mario Rossi","prefix":"exo_live_Ab3dE6gH","env":"live","tenantId":12,"scopes":["*"],"allowedIps":["esempio"],"expiresAt":"2026-11-04T10:00:00.000Z","lastUsedAt":"2026-11-04T10:00:00.000Z","lastUsedIp":"203.0.113.10","revokedAt":"2026-11-04T10:00:00.000Z","rotatedFromId":12,"status":"active","createdBy":{"id":12,"name":"Mario Rossi"},"createdAt":"2026-11-04T10:00:00.000Z"},"secret":"exo_live_Ab3dE6gH1234567890abcdefghijklmnopqrstuv"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysCreateRequestInput"},"example":{"name":"Integrazione CRM","scopes":["extensions:read","cdr:read"],"allowedIps":["203.0.113.10","198.51.100.0/24"],"expiresAt":"2027-12-31T23:00:00.000Z"}}}}}},"/api/v1/api-keys/{id}":{"get":{"operationId":"apiKeys_get","summary":"Dettaglio chiave","description":"Scope richiesto: `api_keys:read`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysGetResponse"},"example":{"apiKey":{"id":12,"name":"Mario Rossi","prefix":"exo_live_Ab3dE6gH","env":"live","tenantId":12,"scopes":["*"],"allowedIps":["esempio"],"expiresAt":"2026-11-04T10:00:00.000Z","lastUsedAt":"2026-11-04T10:00:00.000Z","lastUsedIp":"203.0.113.10","revokedAt":"2026-11-04T10:00:00.000Z","rotatedFromId":12,"status":"active","createdBy":{"id":12,"name":"Mario Rossi"},"createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:read","x-access":"mixed"},"patch":{"operationId":"apiKeys_update","summary":"Modifica nome, scope, IP, scadenza","description":"Scope richiesto: `api_keys:write`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysGetResponse"},"example":{"apiKey":{"id":12,"name":"Mario Rossi","prefix":"exo_live_Ab3dE6gH","env":"live","tenantId":12,"scopes":["*"],"allowedIps":["esempio"],"expiresAt":"2026-11-04T10:00:00.000Z","lastUsedAt":"2026-11-04T10:00:00.000Z","lastUsedIp":"203.0.113.10","revokedAt":"2026-11-04T10:00:00.000Z","rotatedFromId":12,"status":"active","createdBy":{"id":12,"name":"Mario Rossi"},"createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysUpdateRequestInput"},"example":{"name":"Mario Rossi","scopes":["*"],"allowedIps":["203.0.113.10"],"expiresAt":"2026-11-04T10:00:00.000Z"}}}}}},"/api/v1/api-keys/{id}/rotate":{"post":{"operationId":"apiKeys_rotate","summary":"Rotazione con periodo di sovrapposizione","description":"Scope richiesto: `api_keys:write`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysCreateResponse"},"example":{"apiKey":{"id":12,"name":"Mario Rossi","prefix":"exo_live_Ab3dE6gH","env":"live","tenantId":12,"scopes":["*"],"allowedIps":["esempio"],"expiresAt":"2026-11-04T10:00:00.000Z","lastUsedAt":"2026-11-04T10:00:00.000Z","lastUsedIp":"203.0.113.10","revokedAt":"2026-11-04T10:00:00.000Z","rotatedFromId":12,"status":"active","createdBy":{"id":12,"name":"Mario Rossi"},"createdAt":"2026-11-04T10:00:00.000Z"},"secret":"exo_live_Ab3dE6gH1234567890abcdefghijklmnopqrstuv"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysRotateRequestInput"},"example":{"overlapHours":24}}}}}},"/api/v1/api-keys/{id}/revoke":{"post":{"operationId":"apiKeys_revoke","summary":"Revoca immediata","description":"Scope richiesto: `api_keys:write`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysGetResponse"},"example":{"apiKey":{"id":12,"name":"Mario Rossi","prefix":"exo_live_Ab3dE6gH","env":"live","tenantId":12,"scopes":["*"],"allowedIps":["esempio"],"expiresAt":"2026-11-04T10:00:00.000Z","lastUsedAt":"2026-11-04T10:00:00.000Z","lastUsedIp":"203.0.113.10","revokedAt":"2026-11-04T10:00:00.000Z","rotatedFromId":12,"status":"active","createdBy":{"id":12,"name":"Mario Rossi"},"createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:write","x-access":"mixed"}},"/api/v1/api-keys/{id}/usage":{"get":{"operationId":"apiKeys_usage","summary":"Log di utilizzo","description":"Scope richiesto: `api_keys:read`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysUsageResponse"},"example":{"items":[{"id":12,"ts":"2026-11-04T10:00:00.000Z","method":"GET","route":"/v1/extensions/:id","status":1,"ip":"203.0.113.10","durationMs":1}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:read","x-access":"mixed"}},"/api/v1/api-keys/{id}/usage/stats":{"get":{"operationId":"apiKeys_usageStats","summary":"Consumi giornalieri (30 giorni)","description":"Scope richiesto: `api_keys:read`. Accesso: azienda o vista globale.","tags":["Chiavi API"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysUsageStatsResponse"},"example":{"days":[{"date":"2026-11-04","requests":1,"errors":1}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"api_keys:read","x-access":"mixed"}},"/api/v1/security/summary":{"get":{"operationId":"security_summary","summary":"Riepilogo tentativi bloccati sugli interni dell’azienda","description":"Scope richiesto: `extensions:read`. Accesso: azienda.","tags":["Sicurezza"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySummaryResponse"},"example":{"periodHours":1,"blockedAttempts":1,"byExtension":[{"extensionId":12,"number":"101","blockedAttempts":1}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"}},"/api/v1/security/status":{"get":{"operationId":"security_status","summary":"Stato fail2ban/nftables/GeoIP e contatori","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityStatusResponse"},"example":{"secd":"up","fail2ban":"up","nftables":"up","bannedCount":1,"jails":[{"name":"asterisk-auth","enabled":true,"currentlyFailed":1,"totalFailed":1,"currentlyBanned":1,"totalBanned":1}],"attemptsByHour":[{"hour":"2026-11-04T10:00:00.000Z","count":1}],"attemptsByCountry":[{"country":"esempio","count":1}],"geo":{"databaseUpdatedAt":"2026-11-04T10:00:00.000Z","source":"esempio"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"}},"/api/v1/security/bans":{"get":{"operationId":"security_bans","summary":"IP bannati","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"ip","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"jail","in":"query","required":false,"schema":{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]}},{"name":"country","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Z]{2}$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityBansResponse"},"example":{"items":[{"ip":"203.0.113.10","jail":"asterisk-auth","country":"esempio","reason":"manual","attempts":1,"bannedAt":"2026-11-04T10:00:00.000Z","expiresAt":"2026-11-04T10:00:00.000Z","tenantId":12}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"},"post":{"operationId":"security_ban","summary":"Ban manuale IP/subnet","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderResponse"},"example":{"ok":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityBanRequestInput"},"example":{"ip":"203.0.113.10","durationS":3600,"reason":"manual"}}}}}},"/api/v1/security/bans/unban":{"post":{"operationId":"security_unban","summary":"Sblocca IP","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderResponse"},"example":{"ok":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityUnbanRequestInput"},"example":{"ip":"203.0.113.10","jail":"asterisk-auth","whitelist":false}}}}}},"/api/v1/security/jails":{"get":{"operationId":"security_jails","summary":"Parametri jail","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityJailsResponse"},"example":{"jails":[{"name":"asterisk-auth","enabled":true,"maxRetry":1,"findTimeS":10,"banTimeS":60,"banTimeIncrement":true,"banTimeFactor":1,"banTimeMaxS":60,"updatedAt":"2026-11-04T10:00:00.000Z"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"}},"/api/v1/security/jails/{name}":{"put":{"operationId":"security_updateJail","summary":"Modifica jail","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityUpdateJailResponse"},"example":{"name":"asterisk-auth","enabled":true,"maxRetry":1,"findTimeS":10,"banTimeS":60,"banTimeIncrement":true,"banTimeFactor":1,"banTimeMaxS":60,"updatedAt":"2026-11-04T10:00:00.000Z"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityUpdateJailRequestInput"},"example":{"enabled":true,"maxRetry":1,"findTimeS":10,"banTimeS":60,"banTimeIncrement":true,"banTimeFactor":1,"banTimeMaxS":60}}}}}},"/api/v1/security/geo":{"get":{"operationId":"security_geo","summary":"Paesi consentiti per servizio","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGeoResponse"},"example":{"services":[{"service":"sip","enabled":true,"allowedCountries":["esempio"],"action":"drop_and_ban","updatedAt":"2026-11-04T10:00:00.000Z"}],"databaseUpdatedAt":"2026-11-04T10:00:00.000Z"}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"}},"/api/v1/security/geo/{service}":{"put":{"operationId":"security_updateGeo","summary":"Modifica paesi consentiti","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"service","in":"path","required":true,"schema":{"type":"string","enum":["sip","webrtc","panel","api","ssh"]}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityUpdateGeoResponse"},"example":{"service":"sip","enabled":true,"allowedCountries":["esempio"],"action":"drop_and_ban","updatedAt":"2026-11-04T10:00:00.000Z"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityUpdateGeoRequestInput"},"example":{"enabled":true,"allowedCountries":["esempio"],"action":"drop_and_ban"}}}}}},"/api/v1/security/whitelist":{"get":{"operationId":"security_whitelist","summary":"Whitelist","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["manual","trunk","exobyte","ai","travel"]}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityWhitelistResponse"},"example":{"items":[{"id":12,"cidr":"esempio","country":"esempio","label":"esempio","tenantId":12,"extensionId":12,"source":"manual","expiresAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"},"post":{"operationId":"security_addWhitelist","summary":"Aggiunge eccezione (IP/rete o paese, anche temporanea)","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityAddWhitelistResponse"},"example":{"id":12,"cidr":"esempio","country":"esempio","label":"esempio","tenantId":12,"extensionId":12,"source":"manual","expiresAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityAddWhitelistRequestInput"},"example":{"cidr":"203.0.113.10","country":"esempio","label":"esempio","tenantId":12,"extensionId":12,"expiresAt":"2026-11-04T10:00:00.000Z"}}}}}},"/api/v1/security/whitelist/{id}":{"delete":{"operationId":"security_deleteWhitelist","summary":"Rimuove eccezione","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin"}},"/api/v1/security/settings":{"get":{"operationId":"security_getSettings","summary":"Rate limit SIP, User-Agent bloccati, alert","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGetSettingsResponse"},"example":{"sipRateLimitPerSec":1,"sipRateBurst":1,"blockedUserAgents":["esempio"],"alertEmail":"mario.rossi@acme.example","alertOnTenantIpBan":true,"alertOnAttackBurst":true}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"},"put":{"operationId":"security_setSettings","summary":"Modifica impostazioni sicurezza","description":"Scope richiesto: `security:write`. Accesso: solo piattaforma.","tags":["Sicurezza"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGetSettingsResponse"},"example":{"sipRateLimitPerSec":1,"sipRateBurst":1,"blockedUserAgents":["esempio"],"alertEmail":"mario.rossi@acme.example","alertOnTenantIpBan":true,"alertOnAttackBurst":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySetSettingsRequestInput"},"example":{"sipRateLimitPerSec":1,"sipRateBurst":1,"blockedUserAgents":["esempio"],"alertEmail":"mario.rossi@acme.example","alertOnTenantIpBan":true,"alertOnAttackBurst":true}}}}}},"/api/v1/security/logs":{"get":{"operationId":"security_logs","summary":"Log sicurezza filtrabili","description":"Scope richiesto: `security:read`. Accesso: solo piattaforma.","tags":["Sicurezza"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["asterisk","fail2ban","geoip","panel","api","audit"]}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"ip","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityLogsResponse"},"example":{"items":[{"id":"esempio","ts":"2026-11-04T10:00:00.000Z","source":"asterisk","level":"info","ip":"203.0.113.10","country":"esempio","jail":"asterisk-auth","message":"esempio","details":{}}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"security:read","x-access":"superadmin"}},"/api/v1/system/status":{"get":{"operationId":"system_status","summary":"Stato servizi, Asterisk, host, reload","description":"Scope richiesto: `system:read`. Accesso: solo piattaforma.","tags":["Sistema"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemStatusResponse"},"example":{"version":"1.0.0","services":[{"name":"asterisk","state":"up","since":"2026-11-04T10:00:00.000Z","detail":"esempio"}],"asterisk":{"version":"1.0.0","uptimeS":1,"lastReloadAt":"2026-11-04T10:00:00.000Z","activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"host":{"loadAvg":[1],"memTotalBytes":1,"memFreeBytes":1,"disks":[{"path":"esempio","totalBytes":1,"freeBytes":1}]},"reload":{"pending":1,"running":1,"lastFinishedAt":"2026-11-04T10:00:00.000Z","lastError":"esempio"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:read","x-access":"superadmin"}},"/api/v1/system/reload":{"post":{"operationId":"system_reload","summary":"Accoda reload configurazione","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["Sistema"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"202":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemReloadResponse"},"example":{"job":{"id":12,"tenantId":12,"scope":"auto","reason":"manual","status":"pending","attempts":1,"actions":["esempio"],"error":"esempio","requestedBy":1,"notBefore":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemReloadRequestInput"},"example":{"tenantId":3,"scope":"auto","reason":"verifica configurazione"}}}}}},"/api/v1/system/reload-jobs":{"get":{"operationId":"system_reloadJobs","summary":"Storico reload","description":"Scope richiesto: `system:read`. Accesso: solo piattaforma.","tags":["Sistema"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","running","done","skipped","failed"]}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemReloadJobsResponse"},"example":{"items":[{"id":12,"tenantId":12,"scope":"auto","reason":"manual","status":"pending","attempts":1,"actions":["esempio"],"error":"esempio","requestedBy":1,"notBefore":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:read","x-access":"superadmin"}},"/api/v1/system/reload-jobs/{id}":{"get":{"operationId":"system_reloadJob","summary":"Dettaglio reload","description":"Scope richiesto: `system:read`. Accesso: solo piattaforma.","tags":["Sistema"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemReloadResponse"},"example":{"job":{"id":12,"tenantId":12,"scope":"auto","reason":"manual","status":"pending","attempts":1,"actions":["esempio"],"error":"esempio","requestedBy":1,"notBefore":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:read","x-access":"superadmin"}},"/api/v1/live/snapshot":{"get":{"operationId":"live_snapshot","summary":"Fotografia completa in tempo reale (chiamate, interni, linee, code, parcheggio, stato servizio)","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveSnapshotResponse"},"example":{"tenantId":12,"generatedAt":"2026-11-04T10:00:00.000Z","channels":[{"uniqueid":"1762250400.123","linkedid":"1762250400.123","channel":"PJSIP/acme-101-0000002a","state":"down","direction":"inbound","callerNumber":"+393331234567","callerName":"esempio","connectedNumber":"+390981123456","connectedName":"esempio","tenantId":12,"extensionId":12,"extensionNumber":"+390981123456","trunkId":12,"queueId":12,"application":"esempio","recording":true,"onHold":true,"bridgedTo":"esempio","startedAt":"2026-11-04T10:00:00.000Z","answeredAt":"2026-11-04T10:00:00.000Z","durationS":1,"talkS":1}],"extensions":[{"tenantId":12,"extensionId":12,"number":"101","name":"Mario Rossi","state":"idle","registered":true,"availability":"available","dnd":true,"presence":{"state":"esempio","subtype":"esempio","message":"esempio"},"contacts":[{"userAgent":"esempio","ip":"203.0.113.10","port":1,"transport":"udp","status":"reachable","rttMs":1,"expiresAt":"2026-11-04T10:00:00.000Z","lastSeenAt":"2026-11-04T10:00:00.000Z"}],"activeCalls":1,"lastSeenAt":"2026-11-04T10:00:00.000Z"}],"trunks":[{"trunkId":12,"tenantId":12,"name":"Mario Rossi","shared":true,"status":"registered","registration":{"status":"registered","since":"2026-11-04T10:00:00.000Z","reason":"manual"},"reachability":{"status":"reachable","rttMs":1,"since":"2026-11-04T10:00:00.000Z"},"activeChannels":1,"maxChannels":1}],"queues":[{"tenantId":12,"queueId":12,"number":"101","name":"Mario Rossi","waiting":1,"longestWaitS":1,"completed":1,"abandoned":1,"callers":[{"uniqueid":"1762250400.123","position":1,"callerNumber":"+393331234567","callerName":"esempio","joinedAt":"2026-11-04T10:00:00.000Z","waitS":1}],"members":[{"extensionId":12,"number":"101","name":"Mario Rossi","state":"idle","paused":true,"pausedReason":"esempio","inCall":true,"callsTaken":1,"lastCallAt":"2026-11-04T10:00:00.000Z"}]}],"parking":[{"tenantId":12,"space":"esempio","uniqueid":"1762250400.123","callerNumber":"+393331234567","callerName":"esempio","parkedBy":"esempio","parkedAt":"2026-11-04T10:00:00.000Z","timeoutAt":"2026-11-04T10:00:00.000Z"}],"health":{"status":"operational","checkedAt":"2026-11-04T10:00:00.000Z","telephony":"up","tenant":{"extensionsTotal":1,"extensionsRegistered":1,"activeCalls":1,"trunksTotal":1,"trunksUp":1,"queuesWaiting":1},"platform":{"asterisk":{"state":"up","version":"1.0.0","startedAt":"2026-11-04T10:00:00.000Z","uptimeS":1,"lastReloadAt":"2026-11-04T10:00:00.000Z","since":"2026-11-04T10:00:00.000Z"},"ami":{"connected":true,"since":"2026-11-04T10:00:00.000Z"},"services":[{"name":"Mario Rossi","state":"up","since":"2026-11-04T10:00:00.000Z","lastBeatAt":"2026-11-04T10:00:00.000Z","detail":"esempio"}],"api":{"version":"1.0.0","pid":1,"uptimeS":1,"rssBytes":1,"heapUsedBytes":1},"host":{"loadAvg":[1],"memTotalBytes":1,"memFreeBytes":1},"activeChannels":1,"activeCalls":1,"registeredEndpoints":1,"voiceNodes":[{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","activeCalls":1,"tls":true,"webrtc":true}]}}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/channels":{"get":{"operationId":"live_channels","summary":"Chiamate in corso","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveChannelsResponse"},"example":{"channels":[{"uniqueid":"1762250400.123","linkedid":"1762250400.123","channel":"PJSIP/acme-101-0000002a","state":"down","direction":"inbound","callerNumber":"+393331234567","callerName":"esempio","connectedNumber":"+390981123456","connectedName":"esempio","tenantId":12,"extensionId":12,"extensionNumber":"+390981123456","trunkId":12,"queueId":12,"application":"esempio","recording":true,"onHold":true,"bridgedTo":"esempio","startedAt":"2026-11-04T10:00:00.000Z","answeredAt":"2026-11-04T10:00:00.000Z","durationS":1,"talkS":1}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/extensions":{"get":{"operationId":"live_extensions","summary":"Stato interni (registrazione, disponibilità, dispositivi)","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveExtensionsResponse"},"example":{"extensions":[{"tenantId":12,"extensionId":12,"number":"101","name":"Mario Rossi","state":"idle","registered":true,"availability":"available","dnd":true,"presence":{"state":"esempio","subtype":"esempio","message":"esempio"},"contacts":[{"userAgent":"esempio","ip":"203.0.113.10","port":1,"transport":"udp","status":"reachable","rttMs":1,"expiresAt":"2026-11-04T10:00:00.000Z","lastSeenAt":"2026-11-04T10:00:00.000Z"}],"activeCalls":1,"lastSeenAt":"2026-11-04T10:00:00.000Z"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/devices":{"get":{"operationId":"live_devices","summary":"Dispositivi registrati (IP, porta, trasporto, latenza, raggiungibilità)","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveDevicesResponse"},"example":{"devices":[{"userAgent":"esempio","ip":"203.0.113.10","port":1,"transport":"udp","status":"reachable","rttMs":1,"expiresAt":"2026-11-04T10:00:00.000Z","lastSeenAt":"2026-11-04T10:00:00.000Z","tenantId":12,"extensionId":12,"number":"101","name":"Mario Rossi"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/trunks":{"get":{"operationId":"live_trunks","summary":"Stato linee (registrazione, raggiungibilità, chiamate attive)","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveTrunksResponse"},"example":{"trunks":[{"trunkId":12,"tenantId":12,"name":"Mario Rossi","shared":true,"status":"registered","registration":{"status":"registered","since":"2026-11-04T10:00:00.000Z","reason":"manual"},"reachability":{"status":"reachable","rttMs":1,"since":"2026-11-04T10:00:00.000Z"},"activeChannels":1,"maxChannels":1}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/queues":{"get":{"operationId":"live_queues","summary":"Code: chiamanti in attesa e stato operatori","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveQueuesResponse"},"example":{"queues":[{"tenantId":12,"queueId":12,"number":"101","name":"Mario Rossi","waiting":1,"longestWaitS":1,"completed":1,"abandoned":1,"callers":[{"uniqueid":"1762250400.123","position":1,"callerNumber":"+393331234567","callerName":"esempio","joinedAt":"2026-11-04T10:00:00.000Z","waitS":1}],"members":[{"extensionId":12,"number":"101","name":"Mario Rossi","state":"idle","paused":true,"pausedReason":"esempio","inCall":true,"callsTaken":1,"lastCallAt":"2026-11-04T10:00:00.000Z"}]}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/health":{"get":{"operationId":"live_health","summary":"Stato del servizio (dettaglio tecnico solo piattaforma)","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveHealthResponse"},"example":{"status":"operational","checkedAt":"2026-11-04T10:00:00.000Z","telephony":"up","tenant":{"extensionsTotal":1,"extensionsRegistered":1,"activeCalls":1,"trunksTotal":1,"trunksUp":1,"queuesWaiting":1},"platform":{"asterisk":{"state":"up","version":"1.0.0","startedAt":"2026-11-04T10:00:00.000Z","uptimeS":1,"lastReloadAt":"2026-11-04T10:00:00.000Z","since":"2026-11-04T10:00:00.000Z"},"ami":{"connected":true,"since":"2026-11-04T10:00:00.000Z"},"services":[{"name":"Mario Rossi","state":"up","since":"2026-11-04T10:00:00.000Z","lastBeatAt":"2026-11-04T10:00:00.000Z","detail":"esempio"}],"api":{"version":"1.0.0","pid":1,"uptimeS":1,"rssBytes":1,"heapUsedBytes":1},"host":{"loadAvg":[1],"memTotalBytes":1,"memFreeBytes":1},"activeChannels":1,"activeCalls":1,"registeredEndpoints":1,"voiceNodes":[{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","activeCalls":1,"tls":true,"webrtc":true}]}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/events":{"get":{"operationId":"live_events","summary":"Eventi in tempo reale (SSE), filtrabili con ?types=","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"types","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Flusso text/event-stream: ogni evento ha `event: <type>` e `data: <JSON>` (schema dell’evento). Heartbeat ogni 15 secondi.","content":{"text/event-stream":{"schema":{"type":"string"},"x-event-schema":{"$ref":"#/components/schemas/LiveEventsResponse"},"example":"event: snapshot\ndata: {\"type\":\"snapshot\",\"tenantId\":12,\"channels\":[{\"uniqueid\":\"1762250400.123\",\"linkedid\":\"1762250400.123\",\"channel\":\"PJSIP/acme-101-0000002a\",\"state\":\"down\",\"direction\":\"inbound\",\"callerNumber\":\"+393331234567\",\"callerName\":\"esempio\",\"connectedNumber\":\"+390981123456\",\"connectedName\":\"esempio\",\"tenantId\":12,\"extensionId\":12,\"extensionNumber\":\"+390981123456\",\"trunkId\":12,\"queueId\":12,\"application\":\"esempio\",\"recording\":true,\"onHold\":true,\"bridgedTo\":\"esempio\",\"startedAt\":\"2026-11-04T10:00:00.000Z\",\"answeredAt\":\"2026-11-04T10:00:00.000Z\",\"durationS\":1,\"talkS\":1}],\"extensions\":[{\"tenantId\":12,\"extensionId\":12,\"number\":\"101\",\"name\":\"Mario Rossi\",\"state\":\"idle\",\"registered\":true,\"availability\":\"available\",\"dnd\":true,\"presence\":{\"state\":\"esempio\",\"subtype\":\"esempio\",\"message\":\"esempio\"},\"contacts\":[{\"userAgent\":\"esempio\",\"ip\":\"203.0.113.10\",\"port\":1,\"transport\":\"udp\",\"status\":\"reachable\",\"rttMs\":1,\"expiresAt\":\"2026-11-04T10:00:00.000Z\",\"lastSeenAt\":\"2026-11-04T10:00:00.000Z\"}],\"activeCalls\":1,\"lastSeenAt\":\"2026-11-04T10:00:00.000Z\"}],\"trunks\":[{\"trunkId\":12,\"tenantId\":12,\"name\":\"Mario Rossi\",\"shared\":true,\"status\":\"registered\",\"registration\":{\"status\":\"registered\",\"since\":\"2026-11-04T10:00:00.000Z\",\"reason\":\"manual\"},\"reachability\":{\"status\":\"reachable\",\"rttMs\":1,\"since\":\"2026-11-04T10:00:00.000Z\"},\"activeChannels\":1,\"maxChannels\":1}],\"queues\":[{\"tenantId\":12,\"queueId\":12,\"number\":\"101\",\"name\":\"Mario Rossi\",\"waiting\":1,\"longestWaitS\":1,\"completed\":1,\"abandoned\":1,\"callers\":[{\"uniqueid\":\"1762250400.123\",\"position\":1,\"callerNumber\":\"+393331234567\",\"callerName\":\"esempio\",\"joinedAt\":\"2026-11-04T10:00:00.000Z\",\"waitS\":1}],\"members\":[{\"extensionId\":12,\"number\":\"101\",\"name\":\"Mario Rossi\",\"state\":\"idle\",\"paused\":true,\"pausedReason\":\"esempio\",\"inCall\":true,\"callsTaken\":1,\"lastCallAt\":\"2026-11-04T10:00:00.000Z\"}]}],\"parking\":[{\"tenantId\":12,\"space\":\"esempio\",\"uniqueid\":\"1762250400.123\",\"callerNumber\":\"+393331234567\",\"callerName\":\"esempio\",\"parkedBy\":\"esempio\",\"parkedAt\":\"2026-11-04T10:00:00.000Z\",\"timeoutAt\":\"2026-11-04T10:00:00.000Z\"}],\"health\":{\"status\":\"operational\",\"checkedAt\":\"2026-11-04T10:00:00.000Z\",\"telephony\":\"up\",\"tenant\":{\"extensionsTotal\":1,\"extensionsRegistered\":1,\"activeCalls\":1,\"trunksTotal\":1,\"trunksUp\":1,\"queuesWaiting\":1},\"platform\":{\"asterisk\":{\"state\":\"up\",\"version\":\"1.0.0\",\"startedAt\":\"2026-11-04T10:00:00.000Z\",\"uptimeS\":1,\"lastReloadAt\":\"2026-11-04T10:00:00.000Z\",\"since\":\"2026-11-04T10:00:00.000Z\"},\"ami\":{\"connected\":true,\"since\":\"2026-11-04T10:00:00.000Z\"},\"services\":[{\"name\":\"Mario Rossi\",\"state\":\"up\",\"since\":\"2026-11-04T10:00:00.000Z\",\"lastBeatAt\":\"2026-11-04T10:00:00.000Z\",\"detail\":\"esempio\"}],\"api\":{\"version\":\"1.0.0\",\"pid\":1,\"uptimeS\":1,\"rssBytes\":1,\"heapUsedBytes\":1},\"host\":{\"loadAvg\":[1],\"memTotalBytes\":1,\"memFreeBytes\":1},\"activeChannels\":1,\"activeCalls\":1,\"registeredEndpoints\":1,\"voiceNodes\":[{\"id\":12,\"name\":\"Mario Rossi\",\"state\":\"pending\",\"sipHost\":\"esempio\",\"lastSeenAt\":\"2026-11-04T10:00:00.000Z\",\"activeCalls\":1,\"tls\":true,\"webrtc\":true}]}}}\n\n"}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/live/ws":{"get":{"operationId":"live_ws","summary":"Eventi in tempo reale (WebSocket), filtrabili con ?types=","description":"Scope richiesto: `live:read`. Accesso: azienda o vista globale.","tags":["Tempo reale"],"parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"types","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"101":{"description":"Passaggio a WebSocket: ogni messaggio è un evento JSON (stesso schema di /v1/live/events). Una GET senza upgrade risponde 426.","x-event-schema":{"$ref":"#/components/schemas/LiveEventsResponse"}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"mixed"}},"/api/v1/webhooks/event-types":{"get":{"operationId":"webhooks_eventTypes","summary":"Tipi di evento sottoscrivibili","description":"Scope richiesto: `webhooks:read`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksEventTypesResponse"},"example":{"items":["esempio"]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:read","x-access":"mixed"}},"/api/v1/webhooks":{"get":{"operationId":"webhooks_list","summary":"Elenco webhook (piattaforma senza X-Tenant-Id)","description":"Scope richiesto: `webhooks:read`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksListResponse"},"example":{"items":[{"id":12,"tenantId":12,"name":"Mario Rossi","url":"esempio","events":["*"],"enabled":true,"secretHint":"esempio","lastSuccessAt":"2026-11-04T10:00:00.000Z","lastFailureAt":"2026-11-04T10:00:00.000Z","consecutiveFailures":1,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:read","x-access":"mixed"},"post":{"operationId":"webhooks_create","summary":"Crea webhook (segreto di firma mostrato una sola volta)","description":"Scope richiesto: `webhooks:write`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksCreateResponse"},"example":{"webhook":{"id":12,"tenantId":12,"name":"Mario Rossi","url":"esempio","events":["*"],"enabled":true,"secretHint":"esempio","lastSuccessAt":"2026-11-04T10:00:00.000Z","lastFailureAt":"2026-11-04T10:00:00.000Z","consecutiveFailures":1,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"secret":"exo_live_Ab3dE6gH1234567890abcdefghijklmnopqrstuv"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksCreateRequestInput"},"example":{"name":"Mario Rossi","url":"https://centralino.exovoip.it/","events":["*"],"enabled":true}}}}}},"/api/v1/webhooks/{id}":{"get":{"operationId":"webhooks_get","summary":"Dettaglio webhook","description":"Scope richiesto: `webhooks:read`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksGetResponse"},"example":{"webhook":{"id":12,"tenantId":12,"name":"Mario Rossi","url":"esempio","events":["*"],"enabled":true,"secretHint":"esempio","lastSuccessAt":"2026-11-04T10:00:00.000Z","lastFailureAt":"2026-11-04T10:00:00.000Z","consecutiveFailures":1,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:read","x-access":"mixed"},"patch":{"operationId":"webhooks_update","summary":"Modifica webhook","description":"Scope richiesto: `webhooks:write`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksGetResponse"},"example":{"webhook":{"id":12,"tenantId":12,"name":"Mario Rossi","url":"esempio","events":["*"],"enabled":true,"secretHint":"esempio","lastSuccessAt":"2026-11-04T10:00:00.000Z","lastFailureAt":"2026-11-04T10:00:00.000Z","consecutiveFailures":1,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksUpdateRequestInput"},"example":{"name":"Mario Rossi","url":"https://centralino.exovoip.it/","events":["*"],"enabled":true}}}}},"delete":{"operationId":"webhooks_delete","summary":"Elimina webhook e storico invii","description":"Scope richiesto: `webhooks:write`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:write","x-access":"mixed"}},"/api/v1/webhooks/{id}/rotate-secret":{"post":{"operationId":"webhooks_rotateSecret","summary":"Nuovo segreto di firma (mostrato una sola volta)","description":"Scope richiesto: `webhooks:write`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksCreateResponse"},"example":{"webhook":{"id":12,"tenantId":12,"name":"Mario Rossi","url":"esempio","events":["*"],"enabled":true,"secretHint":"esempio","lastSuccessAt":"2026-11-04T10:00:00.000Z","lastFailureAt":"2026-11-04T10:00:00.000Z","consecutiveFailures":1,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"secret":"exo_live_Ab3dE6gH1234567890abcdefghijklmnopqrstuv"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:write","x-access":"mixed"}},"/api/v1/webhooks/{id}/test":{"post":{"operationId":"webhooks_test","summary":"Invio di prova (evento webhook.test)","description":"Scope richiesto: `webhooks:write`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksTestResponse"},"example":{"delivery":{"id":12,"webhookId":12,"eventId":"esempio","eventType":"esempio","status":"pending","attempts":1,"responseStatus":1,"durationMs":1,"error":"esempio","createdAt":"2026-11-04T10:00:00.000Z","lastAttemptAt":"2026-11-04T10:00:00.000Z","deliveredAt":"2026-11-04T10:00:00.000Z","nextAttemptAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:write","x-access":"mixed"}},"/api/v1/webhooks/{id}/deliveries":{"get":{"operationId":"webhooks_deliveries","summary":"Registro invii (esito, codice risposta, tentativi)","description":"Scope richiesto: `webhooks:read`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","success","retrying","failed"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksDeliveriesResponse"},"example":{"items":[{"id":12,"webhookId":12,"eventId":"esempio","eventType":"esempio","status":"pending","attempts":1,"responseStatus":1,"durationMs":1,"error":"esempio","createdAt":"2026-11-04T10:00:00.000Z","lastAttemptAt":"2026-11-04T10:00:00.000Z","deliveredAt":"2026-11-04T10:00:00.000Z","nextAttemptAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:read","x-access":"mixed"}},"/api/v1/webhooks/{id}/deliveries/{deliveryId}/retry":{"post":{"operationId":"webhooks_redeliver","summary":"Nuovo invio di un evento già registrato","description":"Scope richiesto: `webhooks:write`. Accesso: azienda o vista globale.","tags":["Webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksTestResponse"},"example":{"delivery":{"id":12,"webhookId":12,"eventId":"esempio","eventType":"esempio","status":"pending","attempts":1,"responseStatus":1,"durationMs":1,"error":"esempio","createdAt":"2026-11-04T10:00:00.000Z","lastAttemptAt":"2026-11-04T10:00:00.000Z","deliveredAt":"2026-11-04T10:00:00.000Z","nextAttemptAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"webhooks:write","x-access":"mixed"}},"/api/v1/calendars":{"get":{"operationId":"calendars_list","summary":"Elenco calendari con stato corrente","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"esempio","icalLastSyncAt":"2026-11-04T10:00:00.000Z","icalLastError":"esempio","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"status":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"},"post":{"operationId":"calendars_create","summary":"Crea calendario (festività nazionali precaricate)","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateResponse"},"example":{"calendar":{"id":12,"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"esempio","icalLastSyncAt":"2026-11-04T10:00:00.000Z","icalLastError":"esempio","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"status":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateRequestInput"},"example":{"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"https://centralino.exovoip.it/","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"preloadHolidays":true}}}}}},"/api/v1/calendars/holidays":{"get":{"operationId":"calendars_holidays","summary":"Anteprima festività di un anno e patroni disponibili","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","minimum":2000,"maximum":2100}},{"name":"istat","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]{6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsHolidaysResponse"},"example":{"holidays":[{"key":"new_year","date":"2026-11-04","name":"Mario Rossi"}],"patrons":[{"istat":"esempio","city":"esempio","saint":"esempio","month":1,"day":1}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"}},"/api/v1/calendars/{id}":{"get":{"operationId":"calendars_get","summary":"Dettaglio calendario","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateResponse"},"example":{"calendar":{"id":12,"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"esempio","icalLastSyncAt":"2026-11-04T10:00:00.000Z","icalLastError":"esempio","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"status":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"},"patch":{"operationId":"calendars_update","summary":"Modifica calendario","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateResponse"},"example":{"calendar":{"id":12,"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"esempio","icalLastSyncAt":"2026-11-04T10:00:00.000Z","icalLastError":"esempio","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"status":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsUpdateRequestInput"},"example":{"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"https://centralino.exovoip.it/"}}}}},"delete":{"operationId":"calendars_delete","summary":"Elimina calendario (IN_USE se assegnato)","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant"}},"/api/v1/calendars/{id}/hours":{"put":{"operationId":"calendars_setHours","summary":"Sostituisce le fasce settimanali","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSetHoursResponse"},"example":{"ranges":[{"weekday":1,"start":"esempio","end":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSetHoursRequestInput"},"example":{"ranges":[{"weekday":1,"start":"esempio","end":"esempio"}]}}}}}},"/api/v1/calendars/{id}/status":{"get":{"operationId":"calendars_status","summary":"Stato attuale e prossima transizione","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsStatusResponse"},"example":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"}},"/api/v1/calendars/{id}/force":{"post":{"operationId":"calendars_force","summary":"Forza aperto/chiuso con scadenza","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateResponse"},"example":{"calendar":{"id":12,"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"esempio","icalLastSyncAt":"2026-11-04T10:00:00.000Z","icalLastError":"esempio","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"status":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsForceRequestInput"},"example":{"state":"open","mode":"next_transition","hours":1,"until":"2026-11-04T10:00:00.000Z","note":"esempio"}}}}},"delete":{"operationId":"calendars_clearForce","summary":"Ripristina orari automatici","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateResponse"},"example":{"calendar":{"id":12,"name":"Mario Rossi","description":"Centralino","timezone":"Europe/Rome","isDefault":true,"openDestination":{"type":"extension","extensionId":12},"closedDestination":{"type":"extension","extensionId":12},"closedPromptId":12,"defaultForceMode":"next_transition","defaultForceHours":1,"icalUrl":"esempio","icalLastSyncAt":"2026-11-04T10:00:00.000Z","icalLastError":"esempio","hours":[{"weekday":1,"start":"esempio","end":"esempio"}],"status":{"state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","nextTransitionAt":"2026-11-04T10:00:00.000Z","nextState":"open","force":{"state":"auto","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"setAt":"2026-11-04T10:00:00.000Z","note":"esempio"}},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant"}},"/api/v1/calendars/{id}/overrides":{"get":{"operationId":"calendars_overrides","summary":"Storico forzature","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsOverridesResponse"},"example":{"items":[{"id":12,"calendarId":12,"state":"open","mode":"next_transition","expiresAt":"2026-11-04T10:00:00.000Z","source":"phone","byExtension":"esempio","byUserId":12,"note":"esempio","createdAt":"2026-11-04T10:00:00.000Z","endedAt":"2026-11-04T10:00:00.000Z","endReason":"expired"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"}},"/api/v1/calendars/{id}/simulate":{"post":{"operationId":"calendars_simulate","summary":"Simulatore: cosa succede il giorno X all’ora Y","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSimulateResponse"},"example":{"at":"esempio","timezone":"Europe/Rome","state":"open","reason":"force","exceptionId":12,"exceptionName":"esempio","promptId":12,"destination":{"type":"extension","extensionId":12},"nextTransitionAt":"2026-11-04T10:00:00.000Z","day":[{"start":"esempio","end":"esempio","state":"open"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSimulateRequestInput"},"example":{"at":"esempio","ignoreForce":true,"numberId":12}}}}}},"/api/v1/calendars/{id}/holidays":{"post":{"operationId":"calendars_preloadHolidays","summary":"Carica festività nazionali e patrono","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsPreloadHolidaysResponse"},"example":{"created":1,"skipped":1}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsPreloadHolidaysRequestInput"},"example":{"keys":["new_year"],"patron":{"istat":"esempio"},"replace":false}}}}}},"/api/v1/calendars/{id}/exceptions":{"get":{"operationId":"calendars_listExceptions","summary":"Eccezioni (chiusure e aperture straordinarie)","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["manual","holiday","ical"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsListExceptionsResponse"},"example":{"items":[{"id":12,"calendarId":12,"name":"Mario Rossi","type":"open","dateFrom":"2026-11-04","dateTo":"2026-11-04","startTime":"esempio","endTime":"esempio","recurring":true,"holidayKey":"esempio","source":"manual","promptId":12,"destination":{"type":"extension","extensionId":12},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"},"post":{"operationId":"calendars_createException","summary":"Crea eccezione","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateExceptionResponse"},"example":{"exception":{"id":12,"calendarId":12,"name":"Mario Rossi","type":"open","dateFrom":"2026-11-04","dateTo":"2026-11-04","startTime":"esempio","endTime":"esempio","recurring":true,"holidayKey":"esempio","source":"manual","promptId":12,"destination":{"type":"extension","extensionId":12},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateExceptionRequestInput"},"example":{"name":"Mario Rossi","type":"open","dateFrom":"2026-11-04","dateTo":"2026-11-04","startTime":"esempio","endTime":"esempio","recurring":false,"promptId":12,"destination":{"type":"extension","extensionId":12}}}}}}},"/api/v1/calendars/{id}/exceptions/{exceptionId}":{"patch":{"operationId":"calendars_updateException","summary":"Modifica eccezione","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"exceptionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsCreateExceptionResponse"},"example":{"exception":{"id":12,"calendarId":12,"name":"Mario Rossi","type":"open","dateFrom":"2026-11-04","dateTo":"2026-11-04","startTime":"esempio","endTime":"esempio","recurring":true,"holidayKey":"esempio","source":"manual","promptId":12,"destination":{"type":"extension","extensionId":12},"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsUpdateExceptionRequestInput"},"example":{"name":"Mario Rossi","type":"open","dateFrom":"2026-11-04","dateTo":"2026-11-04","startTime":"esempio","endTime":"esempio","recurring":false,"promptId":12,"destination":{"type":"extension","extensionId":12}}}}}},"delete":{"operationId":"calendars_deleteException","summary":"Elimina eccezione","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"exceptionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant"}},"/api/v1/calendars/{id}/ical/import":{"post":{"operationId":"calendars_importIcal","summary":"Importa eventi iCal (file o indirizzo)","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsImportIcalResponse"},"example":{"created":1,"updated":1,"deleted":1,"skipped":1}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsImportIcalRequestInput"},"example":{"ics":"esempio","url":"https://centralino.exovoip.it/","type":"open","replace":true}}}}}},"/api/v1/calendars/{id}/ical/export.ics":{"get":{"operationId":"calendars_exportIcal","summary":"Esporta in formato iCal","description":"Scope richiesto: `calendars:read`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Calendario iCalendar (RFC 5545)","content":{"text/calendar":{"schema":{"type":"string"},"example":"BEGIN:VCALENDAR\r\n..."}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:read","x-access":"tenant"}},"/api/v1/calendars/{id}/ical/sync":{"post":{"operationId":"calendars_syncIcal","summary":"Sincronizza ora dall’indirizzo iCal configurato","description":"Scope richiesto: `calendars:write`. Accesso: azienda.","tags":["Orari e chiusure"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"calendars:write","x-access":"tenant"}},"/api/v1/numbers/{id}/calendar":{"get":{"operationId":"numbers_getCalendar","summary":"Calendario e destinazione di chiusura del numero","description":"Scope richiesto: `numbers:read`. Accesso: azienda.","tags":["Numeri"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersGetCalendarResponse"},"example":{"assignment":{"numberId":12,"calendarId":12,"closedDestination":{"type":"extension","extensionId":12}}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:read","x-access":"tenant"},"put":{"operationId":"numbers_setCalendar","summary":"Assegna calendario e destinazione di chiusura al numero","description":"Scope richiesto: `numbers:write`. Accesso: azienda.","tags":["Numeri"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersGetCalendarResponse"},"example":{"assignment":{"numberId":12,"calendarId":12,"closedDestination":{"type":"extension","extensionId":12}}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"numbers:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumbersSetCalendarRequestInput"},"example":{"calendarId":12,"closedDestination":{"type":"extension","extensionId":12}}}}}}},"/api/v1/recordings":{"get":{"operationId":"recordings_list","summary":"Registrazioni (filtri e ricerca nelle trascrizioni)","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["inbound","outbound","internal"]}},{"name":"extensionId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"queueId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"number","in":"query","required":false,"schema":{"type":"string","maxLength":32}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":100}},{"name":"hasTranscript","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsListResponse"},"example":{"items":[{"id":12,"linkedid":"1762250400.123","uniqueid":"1762250400.123","direction":"inbound","caller":"esempio","callerName":"esempio","callee":"esempio","extensionId":12,"queueId":12,"numberId":12,"startedAt":"2026-11-04T10:00:00.000Z","durationS":1,"sizeBytes":1,"format":"wav","stereo":true,"status":"recording","transcriptStatus":"none","summaryStatus":"none","summary":"esempio","expiresAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"}},"/api/v1/recordings/settings":{"get":{"operationId":"recordings_getSettings","summary":"Conservazione, formato e permessi di ascolto","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsGetSettingsResponse"},"example":{"retentionDays":1,"format":"opus","supervisorsCanListen":true,"supervisorsCanDownload":false,"usersCanListenOwn":false,"quotaMb":1,"usedMb":0}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"},"put":{"operationId":"recordings_setSettings","summary":"Modifica impostazioni registrazioni","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsGetSettingsResponse"},"example":{"retentionDays":1,"format":"opus","supervisorsCanListen":true,"supervisorsCanDownload":false,"usersCanListenOwn":false,"quotaMb":1,"usedMb":0}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsSetSettingsRequestInput"},"example":{"retentionDays":1,"format":"opus","supervisorsCanListen":true,"supervisorsCanDownload":false,"usersCanListenOwn":false,"quotaMb":1}}}}}},"/api/v1/recordings/policies":{"get":{"operationId":"recordings_listPolicies","summary":"Regole di registrazione per livello","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsListPoliciesResponse"},"example":{"policies":[{"id":12,"scope":"tenant","targetId":12,"mode":"inherit","inbound":true,"outbound":true,"internal":true,"stereo":true,"announceInboundPromptId":12,"announceOutboundPromptId":12,"announceEnabled":true,"autoTranscribe":true,"autoSummarize":true,"updatedAt":"2026-11-04T10:00:00.000Z"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"}},"/api/v1/recordings/policies/effective":{"get":{"operationId":"recordings_effectivePolicy","summary":"Regola effettiva per interno / numero / coda","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"extensionId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"numberId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"queueId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsEffectivePolicyResponse"},"example":{"mode":"always","inbound":true,"outbound":true,"internal":true,"stereo":true,"announceEnabled":true,"announceInboundPromptId":12,"announceOutboundPromptId":12,"autoTranscribe":true,"autoSummarize":true,"sources":{}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"}},"/api/v1/recordings/policies/{scope}/{targetId}":{"put":{"operationId":"recordings_upsertPolicy","summary":"Imposta la regola di un livello (targetId 0 = azienda)","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","enum":["tenant","number","queue","extension"]}},{"name":"targetId","in":"path","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsUpsertPolicyResponse"},"example":{"policy":{"id":12,"scope":"tenant","targetId":12,"mode":"inherit","inbound":true,"outbound":true,"internal":true,"stereo":true,"announceInboundPromptId":12,"announceOutboundPromptId":12,"announceEnabled":true,"autoTranscribe":true,"autoSummarize":true,"updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsUpsertPolicyRequestInput"},"example":{"mode":"inherit","inbound":true,"outbound":true,"internal":true,"stereo":true,"announceInboundPromptId":12,"announceOutboundPromptId":12,"announceEnabled":true,"autoTranscribe":true,"autoSummarize":true}}}}},"delete":{"operationId":"recordings_deletePolicy","summary":"Rimuove la regola (torna a ereditare)","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","enum":["tenant","number","queue","extension"]}},{"name":"targetId","in":"path","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant"}},"/api/v1/recordings/access-log":{"get":{"operationId":"recordings_accessLog","summary":"Registro ascolti, download e cancellazioni","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"recordingId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"userId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsAccessLogResponse"},"example":{"items":[{"id":12,"recordingId":12,"action":"listen","userId":12,"userEmail":"esempio","apiKeyId":12,"ip":"203.0.113.10","createdAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant"}},"/api/v1/recordings/{id}":{"get":{"operationId":"recordings_get","summary":"Dettaglio registrazione","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsGetResponse"},"example":{"recording":{"id":12,"linkedid":"1762250400.123","uniqueid":"1762250400.123","direction":"inbound","caller":"esempio","callerName":"esempio","callee":"esempio","extensionId":12,"queueId":12,"numberId":12,"startedAt":"2026-11-04T10:00:00.000Z","durationS":1,"sizeBytes":1,"format":"wav","stereo":true,"status":"recording","transcriptStatus":"none","summaryStatus":"none","summary":"esempio","expiresAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"},"delete":{"operationId":"recordings_delete","summary":"Elimina registrazione (audit)","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","maxLength":255}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant"}},"/api/v1/recordings/{id}/audio":{"get":{"operationId":"recordings_audio","summary":"Ascolto / download (registrato nel registro ascolti)","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"download","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["both","left","right"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Audio del messaggio","content":{"audio/wav":{"schema":{"type":"string","contentMediaType":"audio/wav"}},"audio/mpeg":{"schema":{"type":"string","contentMediaType":"audio/mpeg"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"}},"/api/v1/recordings/{id}/transcript":{"get":{"operationId":"recordings_transcript","summary":"Trascrizione e riassunto","description":"Scope richiesto: `recordings:read`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsTranscriptResponse"},"example":{"transcript":{"recordingId":12,"transcriptStatus":"none","summaryStatus":"none","language":"esempio","provider":"esempio","text":"esempio","segments":[{"startS":0,"endS":0,"speaker":"caller","text":"esempio"}],"summary":"esempio","error":"esempio","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:read","x-access":"tenant"}},"/api/v1/recordings/{id}/transcribe":{"post":{"operationId":"recordings_transcribe","summary":"Richiede la trascrizione","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsTranscribeRequestInput"},"example":{"force":false,"language":"esempio"}}}}}},"/api/v1/recordings/{id}/summarize":{"post":{"operationId":"recordings_summarize","summary":"Richiede il riassunto","description":"Scope richiesto: `recordings:write`. Accesso: azienda.","tags":["Registrazioni"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"recordings:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsTranscribeRequestInput"},"example":{"force":false,"language":"esempio"}}}}}},"/api/v1/voicemail/boxes/{extensionId}/messages/{messageId}/meta":{"get":{"operationId":"voicemail_messageMeta","summary":"Nome in rubrica, stato trascrizione ed email","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailMessageMetaResponse"},"example":{"meta":{"messageId":"esempio","msgId":"esempio","callerName":"esempio","transcriptStatus":"none","transcriptPreview":"esempio","emailStatus":"none","emailedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"}},"/api/v1/voicemail/boxes/{extensionId}/messages/{messageId}/transcript":{"get":{"operationId":"voicemail_messageTranscript","summary":"Trascrizione del messaggio","description":"Scope richiesto: `voicemail:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailMessageTranscriptResponse"},"example":{"transcript":{"extensionId":12,"messageId":"esempio","msgId":"esempio","status":"none","language":"esempio","provider":"esempio","text":"esempio","error":"esempio","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:read","x-access":"tenant"}},"/api/v1/voicemail/boxes/{extensionId}/messages/{messageId}/transcribe":{"post":{"operationId":"voicemail_transcribeMessage","summary":"Richiede la trascrizione del messaggio","description":"Scope richiesto: `voicemail:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingsTranscribeRequestInput"},"example":{"force":false,"language":"esempio"}}}}}},"/api/v1/voicemail/boxes/{extensionId}/messages/{messageId}/email":{"post":{"operationId":"voicemail_resendEmail","summary":"Reinvia l’email con audio e trascrizione","description":"Scope richiesto: `voicemail:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Segreteria"],"parameters":[{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]+:\\d{1,6}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"voicemail:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailResendEmailRequestInput"},"example":{"to":"mario.rossi@acme.example"}}}}}},"/api/v1/extensions/{id}/invisible-forwarding":{"get":{"operationId":"forwarding_get","summary":"Modalità di inoltro al cellulare","description":"Scope richiesto: `extensions:read`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Inoltro al cellulare"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardingGetResponse"},"example":{"forwarding":{"extensionId":12,"style":"confirm","silentTimeoutS":5,"whisperText":"esempio","whisperPromptId":12,"updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:read","x-access":"tenant"},"put":{"operationId":"forwarding_update","summary":"Imposta conferma / silenziosa / sussurro","description":"Scope richiesto: `extensions:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Inoltro al cellulare"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardingGetResponse"},"example":{"forwarding":{"extensionId":12,"style":"confirm","silentTimeoutS":5,"whisperText":"esempio","whisperPromptId":12,"updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"extensions:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardingUpdateRequestInput"},"example":{"style":"confirm","silentTimeoutS":5,"whisperText":"esempio","whisperPromptId":12}}}}}},"/api/v1/extensions/{id}/provider-divert":{"get":{"operationId":"forwarding_getProviderDivert","summary":"Deviazione presso il provider (solo Exobyte)","description":"Scope richiesto: `tenants:write`. Accesso: azienda.","tags":["Inoltro al cellulare"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardingGetProviderDivertResponse"},"example":{"divert":{"extensionId":12,"enabled":true,"number":"101","method":"sip302","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"tenant"},"put":{"operationId":"forwarding_setProviderDivert","summary":"Imposta deviazione presso il provider (solo Exobyte)","description":"Scope richiesto: `tenants:write`. Accesso: azienda.","tags":["Inoltro al cellulare"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardingGetProviderDivertResponse"},"example":{"divert":{"extensionId":12,"enabled":true,"number":"101","method":"sip302","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardingSetProviderDivertRequestInput"},"example":{"enabled":true,"number":"101","method":"sip302"}}}}}},"/api/v1/notifications/settings":{"get":{"operationId":"notifications_getSettings","summary":"Regole di notifica (superadmin senza azienda: piattaforma)","description":"Scope richiesto: `notifications:read`. Accesso: azienda o vista globale.","tags":["Notifiche"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsGetSettingsResponse"},"example":{"rules":[{"event":"missed_call","enabled":true,"channels":["email"],"emails":["mario.rossi@acme.example"],"includeAdmins":true,"extensionIds":[12],"queueIds":[12],"numberIds":[12]}],"telegram":{"enabled":true,"chatId":"esempio","hasBotToken":true},"lang":"it"}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"notifications:read","x-access":"mixed"},"put":{"operationId":"notifications_setSettings","summary":"Modifica regole di notifica","description":"Scope richiesto: `notifications:write`. Accesso: azienda o vista globale.","tags":["Notifiche"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsGetSettingsResponse"},"example":{"rules":[{"event":"missed_call","enabled":true,"channels":["email"],"emails":["mario.rossi@acme.example"],"includeAdmins":true,"extensionIds":[12],"queueIds":[12],"numberIds":[12]}],"telegram":{"enabled":true,"chatId":"esempio","hasBotToken":true},"lang":"it"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"notifications:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsSetSettingsRequestInput"},"example":{"rules":[{"event":"missed_call","enabled":true,"channels":["email"],"emails":["mario.rossi@acme.example"],"includeAdmins":true,"extensionIds":[12],"queueIds":[12],"numberIds":[12]}],"telegram":{"enabled":true,"chatId":"esempio","botToken":"esempio"},"lang":"it"}}}}}},"/api/v1/notifications/log":{"get":{"operationId":"notifications_log","summary":"Registro notifiche inviate","description":"Scope richiesto: `notifications:read`. Accesso: azienda o vista globale.","tags":["Notifiche"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"event","in":"query","required":false,"schema":{"type":"string","enum":["missed_call","voicemail","calendar_force","trunk_approval","recording_ready"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","waiting_config","sent","failed","skipped"]}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsLogResponse"},"example":{"items":[{"id":12,"tenantId":12,"event":"missed_call","channel":"email","recipient":"esempio","subject":"esempio","status":"queued","error":"esempio","relatedType":"esempio","relatedId":"esempio","createdAt":"2026-11-04T10:00:00.000Z","sentAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"notifications:read","x-access":"mixed"}},"/api/v1/notifications/test":{"post":{"operationId":"notifications_test","summary":"Invio di prova","description":"Scope richiesto: `notifications:write`. Accesso: azienda o vista globale.","tags":["Notifiche"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsTestResponse"},"example":{"status":"queued","logId":12}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"notifications:write","x-access":"mixed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsTestRequestInput"},"example":{"channel":"email","to":"esempio"}}}}}},"/api/v1/jobs/{id}":{"get":{"operationId":"jobs_get","summary":"Stato di un lavoro in background","description":"Scope richiesto: `media:read`. Accesso: azienda o vista globale.","tags":["Lavori in corso"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"mixed"}},"/api/v1/ivrs":{"get":{"operationId":"ivrs_list","summary":"Menu vocali","description":"Scope richiesto: `ivrs:read`. Accesso: azienda.","tags":["Menu vocali"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","description":"Centralino","lang":"esempio","greetingPromptId":12,"greetingText":"esempio","invalidPromptId":12,"timeoutPromptId":12,"timeoutS":1,"maxRetries":1,"interDigitTimeoutS":1,"directDial":true,"directDialExtensions":["esempio"],"timeoutDestination":{"type":"extension","extensionId":12},"invalidDestination":{"type":"extension","extensionId":12},"calendarId":12,"options":[{"digit":"0","label":"esempio","destination":{"type":"extension","extensionId":12}}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ivrs:read","x-access":"tenant"},"post":{"operationId":"ivrs_create","summary":"Crea menu vocale","description":"Scope richiesto: `ivrs:write`. Accesso: azienda.","tags":["Menu vocali"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsCreateResponse"},"example":{"ivr":{"id":12,"name":"Mario Rossi","description":"Centralino","lang":"esempio","greetingPromptId":12,"greetingText":"esempio","invalidPromptId":12,"timeoutPromptId":12,"timeoutS":1,"maxRetries":1,"interDigitTimeoutS":1,"directDial":true,"directDialExtensions":["esempio"],"timeoutDestination":{"type":"extension","extensionId":12},"invalidDestination":{"type":"extension","extensionId":12},"calendarId":12,"options":[{"digit":"0","label":"esempio","destination":{"type":"extension","extensionId":12}}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ivrs:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsCreateRequestInput"},"example":{"name":"Mario Rossi","description":"Centralino","lang":"it","greetingPromptId":12,"greetingText":"esempio","invalidPromptId":12,"timeoutPromptId":12,"timeoutS":7,"maxRetries":3,"interDigitTimeoutS":2,"directDial":false,"directDialExtensions":["esempio"],"timeoutDestination":{"type":"extension","extensionId":12},"invalidDestination":{"type":"extension","extensionId":12},"calendarId":12,"options":[{"digit":"0","label":"esempio","destination":{"type":"extension","extensionId":12}}],"enabled":true}}}}}},"/api/v1/ivrs/{id}":{"get":{"operationId":"ivrs_get","summary":"Dettaglio menu vocale","description":"Scope richiesto: `ivrs:read`. Accesso: azienda.","tags":["Menu vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsCreateResponse"},"example":{"ivr":{"id":12,"name":"Mario Rossi","description":"Centralino","lang":"esempio","greetingPromptId":12,"greetingText":"esempio","invalidPromptId":12,"timeoutPromptId":12,"timeoutS":1,"maxRetries":1,"interDigitTimeoutS":1,"directDial":true,"directDialExtensions":["esempio"],"timeoutDestination":{"type":"extension","extensionId":12},"invalidDestination":{"type":"extension","extensionId":12},"calendarId":12,"options":[{"digit":"0","label":"esempio","destination":{"type":"extension","extensionId":12}}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ivrs:read","x-access":"tenant"},"patch":{"operationId":"ivrs_update","summary":"Modifica menu vocale (options sostituisce)","description":"Scope richiesto: `ivrs:write`. Accesso: azienda.","tags":["Menu vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsCreateResponse"},"example":{"ivr":{"id":12,"name":"Mario Rossi","description":"Centralino","lang":"esempio","greetingPromptId":12,"greetingText":"esempio","invalidPromptId":12,"timeoutPromptId":12,"timeoutS":1,"maxRetries":1,"interDigitTimeoutS":1,"directDial":true,"directDialExtensions":["esempio"],"timeoutDestination":{"type":"extension","extensionId":12},"invalidDestination":{"type":"extension","extensionId":12},"calendarId":12,"options":[{"digit":"0","label":"esempio","destination":{"type":"extension","extensionId":12}}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ivrs:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsUpdateRequestInput"},"example":{"name":"Mario Rossi","description":"Centralino","lang":"it","greetingPromptId":12,"greetingText":"esempio","invalidPromptId":12,"timeoutPromptId":12,"timeoutS":1,"maxRetries":1,"interDigitTimeoutS":1,"directDial":true,"directDialExtensions":["esempio"],"timeoutDestination":{"type":"extension","extensionId":12},"invalidDestination":{"type":"extension","extensionId":12},"calendarId":12,"options":[{"digit":"0","label":"esempio","destination":{"type":"extension","extensionId":12}}],"enabled":true}}}}},"delete":{"operationId":"ivrs_delete","summary":"Elimina menu vocale (IN_USE se usato)","description":"Scope richiesto: `ivrs:write`. Accesso: azienda.","tags":["Menu vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ivrs:write","x-access":"tenant"}},"/api/v1/ivrs/{id}/greeting-text":{"post":{"operationId":"ivrs_greetingText","summary":"Testo del messaggio suggerito dalle opzioni","description":"Scope richiesto: `ivrs:read`. Accesso: azienda.","tags":["Menu vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IvrsGreetingTextResponse"},"example":{"text":"esempio","generatedBy":"template"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ivrs:read","x-access":"tenant"}},"/api/v1/ring-groups":{"get":{"operationId":"ringGroups_list","summary":"Gruppi di squillo","description":"Scope richiesto: `ring_groups:read`. Accesso: azienda.","tags":["Gruppi di squillo"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RingGroupsListResponse"},"example":{"items":[{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","strategy":"simultaneous","ringTimeS":1,"memberRingS":1,"memberExtensionIds":[12],"externalNumbers":["+390981123456"],"skipBusy":true,"callerHears":"ring","mohClassId":12,"callerIdPrefix":"esempio","failoverDestination":{"type":"extension","extensionId":12},"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ring_groups:read","x-access":"tenant"},"post":{"operationId":"ringGroups_create","summary":"Crea gruppo di squillo","description":"Scope richiesto: `ring_groups:write`. Accesso: azienda.","tags":["Gruppi di squillo"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RingGroupsCreateResponse"},"example":{"ringGroup":{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","strategy":"simultaneous","ringTimeS":1,"memberRingS":1,"memberExtensionIds":[12],"externalNumbers":["+390981123456"],"skipBusy":true,"callerHears":"ring","mohClassId":12,"callerIdPrefix":"esempio","failoverDestination":{"type":"extension","extensionId":12},"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ring_groups:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RingGroupsCreateRequestInput"},"example":{"number":"101","name":"Mario Rossi","description":"Centralino","strategy":"simultaneous","ringTimeS":25,"memberRingS":15,"memberExtensionIds":[12],"externalNumbers":["+390981123456"],"skipBusy":true,"callerHears":"ring","mohClassId":12,"callerIdPrefix":"esempio","failoverDestination":{"type":"extension","extensionId":12},"enabled":true}}}}}},"/api/v1/ring-groups/{id}":{"get":{"operationId":"ringGroups_get","summary":"Dettaglio gruppo","description":"Scope richiesto: `ring_groups:read`. Accesso: azienda.","tags":["Gruppi di squillo"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RingGroupsCreateResponse"},"example":{"ringGroup":{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","strategy":"simultaneous","ringTimeS":1,"memberRingS":1,"memberExtensionIds":[12],"externalNumbers":["+390981123456"],"skipBusy":true,"callerHears":"ring","mohClassId":12,"callerIdPrefix":"esempio","failoverDestination":{"type":"extension","extensionId":12},"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ring_groups:read","x-access":"tenant"},"patch":{"operationId":"ringGroups_update","summary":"Modifica gruppo","description":"Scope richiesto: `ring_groups:write`. Accesso: azienda.","tags":["Gruppi di squillo"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RingGroupsCreateResponse"},"example":{"ringGroup":{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","strategy":"simultaneous","ringTimeS":1,"memberRingS":1,"memberExtensionIds":[12],"externalNumbers":["+390981123456"],"skipBusy":true,"callerHears":"ring","mohClassId":12,"callerIdPrefix":"esempio","failoverDestination":{"type":"extension","extensionId":12},"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ring_groups:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RingGroupsUpdateRequestInput"},"example":{"number":"101","name":"Mario Rossi","description":"Centralino","strategy":"simultaneous","ringTimeS":5,"memberRingS":5,"memberExtensionIds":[12],"externalNumbers":["+390981123456"],"skipBusy":true,"callerHears":"ring","mohClassId":12,"callerIdPrefix":"esempio","failoverDestination":{"type":"extension","extensionId":12},"enabled":true}}}}},"delete":{"operationId":"ringGroups_delete","summary":"Elimina gruppo (IN_USE se usato)","description":"Scope richiesto: `ring_groups:write`. Accesso: azienda.","tags":["Gruppi di squillo"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"ring_groups:write","x-access":"tenant"}},"/api/v1/queues":{"get":{"operationId":"queues_list","summary":"Code","description":"Scope richiesto: `queues:read`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesListResponse"},"example":{"items":[{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","lang":"esempio","strategy":"ringall","progressiveStepS":1,"agentTimeoutS":1,"wrapupS":1,"ringInUse":true,"callerHears":"moh","mohClassId":12,"greetingPromptId":12,"announcePosition":true,"announceHoldtime":true,"announceFrequencyS":1,"periodicPromptId":12,"periodicFrequencyS":1,"callerIdPrefix":"esempio","maxCallers":1,"maxWaitS":1,"maxWaitDestination":{"type":"extension","extensionId":12},"emptyDestination":{"type":"extension","extensionId":12},"noAnswerRounds":1,"noAnswerDestination":{"type":"extension","extensionId":12},"voicemailDigit":"esempio","voicemailExtensionId":12,"callbackEnabled":true,"callbackDigit":"esempio","calendarId":12,"recordMode":"inherit","members":[{"extensionId":12,"position":1,"penalty":1,"paused":true}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:read","x-access":"tenant"},"post":{"operationId":"queues_create","summary":"Crea coda","description":"Scope richiesto: `queues:write`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesCreateResponse"},"example":{"queue":{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","lang":"esempio","strategy":"ringall","progressiveStepS":1,"agentTimeoutS":1,"wrapupS":1,"ringInUse":true,"callerHears":"moh","mohClassId":12,"greetingPromptId":12,"announcePosition":true,"announceHoldtime":true,"announceFrequencyS":1,"periodicPromptId":12,"periodicFrequencyS":1,"callerIdPrefix":"esempio","maxCallers":1,"maxWaitS":1,"maxWaitDestination":{"type":"extension","extensionId":12},"emptyDestination":{"type":"extension","extensionId":12},"noAnswerRounds":1,"noAnswerDestination":{"type":"extension","extensionId":12},"voicemailDigit":"esempio","voicemailExtensionId":12,"callbackEnabled":true,"callbackDigit":"esempio","calendarId":12,"recordMode":"inherit","members":[{"extensionId":12,"position":1,"penalty":1,"paused":true}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesCreateRequestInput"},"example":{"number":"101","name":"Mario Rossi","description":"Centralino","lang":"it","strategy":"ringall","progressiveStepS":5,"agentTimeoutS":15,"wrapupS":5,"ringInUse":false,"callerHears":"moh","mohClassId":12,"greetingPromptId":12,"announcePosition":true,"announceHoldtime":true,"announceFrequencyS":45,"periodicPromptId":12,"periodicFrequencyS":15,"callerIdPrefix":"esempio","maxCallers":1,"maxWaitS":300,"maxWaitDestination":{"type":"extension","extensionId":12},"emptyDestination":{"type":"extension","extensionId":12},"noAnswerRounds":1,"noAnswerDestination":{"type":"extension","extensionId":12},"voicemailDigit":"esempio","voicemailExtensionId":12,"callbackEnabled":false,"callbackDigit":"esempio","calendarId":12,"recordMode":"inherit","members":[{"extensionId":12,"position":1,"penalty":1,"paused":true}],"enabled":true}}}}}},"/api/v1/queues/{id}":{"get":{"operationId":"queues_get","summary":"Dettaglio coda","description":"Scope richiesto: `queues:read`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesCreateResponse"},"example":{"queue":{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","lang":"esempio","strategy":"ringall","progressiveStepS":1,"agentTimeoutS":1,"wrapupS":1,"ringInUse":true,"callerHears":"moh","mohClassId":12,"greetingPromptId":12,"announcePosition":true,"announceHoldtime":true,"announceFrequencyS":1,"periodicPromptId":12,"periodicFrequencyS":1,"callerIdPrefix":"esempio","maxCallers":1,"maxWaitS":1,"maxWaitDestination":{"type":"extension","extensionId":12},"emptyDestination":{"type":"extension","extensionId":12},"noAnswerRounds":1,"noAnswerDestination":{"type":"extension","extensionId":12},"voicemailDigit":"esempio","voicemailExtensionId":12,"callbackEnabled":true,"callbackDigit":"esempio","calendarId":12,"recordMode":"inherit","members":[{"extensionId":12,"position":1,"penalty":1,"paused":true}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:read","x-access":"tenant"},"patch":{"operationId":"queues_update","summary":"Modifica coda (members sostituisce)","description":"Scope richiesto: `queues:write`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesCreateResponse"},"example":{"queue":{"id":12,"number":"101","name":"Mario Rossi","description":"Centralino","lang":"esempio","strategy":"ringall","progressiveStepS":1,"agentTimeoutS":1,"wrapupS":1,"ringInUse":true,"callerHears":"moh","mohClassId":12,"greetingPromptId":12,"announcePosition":true,"announceHoldtime":true,"announceFrequencyS":1,"periodicPromptId":12,"periodicFrequencyS":1,"callerIdPrefix":"esempio","maxCallers":1,"maxWaitS":1,"maxWaitDestination":{"type":"extension","extensionId":12},"emptyDestination":{"type":"extension","extensionId":12},"noAnswerRounds":1,"noAnswerDestination":{"type":"extension","extensionId":12},"voicemailDigit":"esempio","voicemailExtensionId":12,"callbackEnabled":true,"callbackDigit":"esempio","calendarId":12,"recordMode":"inherit","members":[{"extensionId":12,"position":1,"penalty":1,"paused":true}],"enabled":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesUpdateRequestInput"},"example":{"number":"101","name":"Mario Rossi","description":"Centralino","lang":"it","strategy":"ringall","progressiveStepS":5,"agentTimeoutS":5,"wrapupS":1,"ringInUse":true,"callerHears":"moh","mohClassId":12,"greetingPromptId":12,"announcePosition":true,"announceHoldtime":true,"announceFrequencyS":15,"periodicPromptId":12,"periodicFrequencyS":15,"callerIdPrefix":"esempio","maxCallers":1,"maxWaitS":10,"maxWaitDestination":{"type":"extension","extensionId":12},"emptyDestination":{"type":"extension","extensionId":12},"noAnswerRounds":1,"noAnswerDestination":{"type":"extension","extensionId":12},"voicemailDigit":"esempio","voicemailExtensionId":12,"callbackEnabled":true,"callbackDigit":"esempio","calendarId":12,"recordMode":"inherit","members":[{"extensionId":12,"position":1,"penalty":1,"paused":true}],"enabled":true}}}}},"delete":{"operationId":"queues_delete","summary":"Elimina coda (IN_USE se usata)","description":"Scope richiesto: `queues:write`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:write","x-access":"tenant"}},"/api/v1/queues/{id}/live":{"get":{"operationId":"queues_live","summary":"Chiamanti in attesa e stato operatori","description":"Scope richiesto: `live:read`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesLiveResponse"},"example":{"live":{"queueId":12,"waiting":1,"longestWaitS":1,"agents":[{"extensionId":12,"state":"idle","callsTaken":1}]}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"live:read","x-access":"tenant"}},"/api/v1/queues/{id}/members/{extensionId}/pause":{"put":{"operationId":"queues_pauseMember","summary":"Pausa / ripresa operatore","description":"Scope richiesto: `queues:write`. Accesso: azienda.\n\nIl ruolo utente può operare solo sul proprio interno.","tags":["Code"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"extensionId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundRoutesReorderResponse"},"example":{"ok":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesPauseMemberRequestInput"},"example":{"paused":true}}}}}},"/api/v1/queues/{id}/callbacks":{"get":{"operationId":"queues_callbacks","summary":"Richiamate richieste dai chiamanti","description":"Scope richiesto: `queues:read`. Accesso: azienda.","tags":["Code"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","calling","done","failed","cancelled"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesCallbacksResponse"},"example":{"items":[{"id":12,"queueId":12,"number":"101","callerName":"esempio","status":"pending","attempts":1,"requestedAt":"2026-11-04T10:00:00.000Z","lastAttemptAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"queues:read","x-access":"tenant"}},"/api/v1/moh":{"get":{"operationId":"moh_list","summary":"Classi musica d’attesa (azienda + Exobyte)","description":"Scope richiesto: `media:read`. Accesso: azienda.","tags":["Musica d’attesa"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MohListResponse"},"example":{"classes":[{"id":12,"tenantId":12,"name":"Mario Rossi","description":"Centralino","source":"exobyte","tracks":[{"promptId":12,"name":"Mario Rossi","durationMs":1,"status":"esempio"}],"shuffle":true,"announcePromptIds":[12],"announceEveryS":1,"isDefault":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"tenant"},"post":{"operationId":"moh_create","summary":"Crea classe musica d’attesa","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Musica d’attesa"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MohCreateResponse"},"example":{"mohClass":{"id":12,"tenantId":12,"name":"Mario Rossi","description":"Centralino","source":"exobyte","tracks":[{"promptId":12,"name":"Mario Rossi","durationMs":1,"status":"esempio"}],"shuffle":true,"announcePromptIds":[12],"announceEveryS":1,"isDefault":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MohCreateRequestInput"},"example":{"name":"Mario Rossi","description":"Centralino","source":"exobyte","trackPromptIds":[12],"shuffle":false,"announcePromptIds":[12],"announceEveryS":15,"isDefault":false}}}}}},"/api/v1/moh/{id}":{"get":{"operationId":"moh_get","summary":"Dettaglio classe","description":"Scope richiesto: `media:read`. Accesso: azienda.","tags":["Musica d’attesa"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MohCreateResponse"},"example":{"mohClass":{"id":12,"tenantId":12,"name":"Mario Rossi","description":"Centralino","source":"exobyte","tracks":[{"promptId":12,"name":"Mario Rossi","durationMs":1,"status":"esempio"}],"shuffle":true,"announcePromptIds":[12],"announceEveryS":1,"isDefault":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"tenant"},"patch":{"operationId":"moh_update","summary":"Modifica classe (tracce e annunci)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Musica d’attesa"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MohCreateResponse"},"example":{"mohClass":{"id":12,"tenantId":12,"name":"Mario Rossi","description":"Centralino","source":"exobyte","tracks":[{"promptId":12,"name":"Mario Rossi","durationMs":1,"status":"esempio"}],"shuffle":true,"announcePromptIds":[12],"announceEveryS":1,"isDefault":true,"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MohUpdateRequestInput"},"example":{"name":"Mario Rossi","description":"Centralino","source":"exobyte","trackPromptIds":[12],"shuffle":true,"announcePromptIds":[12],"announceEveryS":15,"isDefault":true}}}}},"delete":{"operationId":"moh_delete","summary":"Elimina classe (IN_USE se usata)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Musica d’attesa"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant"}},"/api/v1/prompts":{"get":{"operationId":"prompts_list","summary":"Messaggi vocali e tracce","description":"Scope richiesto: `media:read`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["prompt","announcement","moh","whisper"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","kind":"prompt","source":"tts","text":"esempio","lang":"esempio","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7},"status":"draft","temporary":true,"error":"esempio","durationMs":1,"version":1,"usedBy":[{"type":"esempio","id":12,"name":"Mario Rossi"}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"tenant"},"post":{"operationId":"prompts_createTts","summary":"Crea messaggio da testo (voce AI o provvisorio)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsCreateTtsResponse"},"example":{"prompt":{"id":12,"name":"Mario Rossi","kind":"prompt","source":"tts","text":"esempio","lang":"esempio","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7},"status":"draft","temporary":true,"error":"esempio","durationMs":1,"version":1,"usedBy":[{"type":"esempio","id":12,"name":"Mario Rossi"}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsCreateTtsRequestInput"},"example":{"name":"Mario Rossi","kind":"prompt","text":"esempio","lang":"it","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7}}}}}}},"/api/v1/prompts/upload":{"post":{"operationId":"prompts_upload","summary":"Carica audio (normalizzato e convertito)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsCreateTtsResponse"},"example":{"prompt":{"id":12,"name":"Mario Rossi","kind":"prompt","source":"tts","text":"esempio","lang":"esempio","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7},"status":"draft","temporary":true,"error":"esempio","durationMs":1,"version":1,"usedBy":[{"type":"esempio","id":12,"name":"Mario Rossi"}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"allOf":[{"$ref":"#/components/schemas/PromptsUploadRequestInput"},{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}]}}}}}},"/api/v1/prompts/{id}":{"get":{"operationId":"prompts_get","summary":"Dettaglio messaggio","description":"Scope richiesto: `media:read`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsCreateTtsResponse"},"example":{"prompt":{"id":12,"name":"Mario Rossi","kind":"prompt","source":"tts","text":"esempio","lang":"esempio","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7},"status":"draft","temporary":true,"error":"esempio","durationMs":1,"version":1,"usedBy":[{"type":"esempio","id":12,"name":"Mario Rossi"}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"tenant"},"patch":{"operationId":"prompts_update","summary":"Modifica testo / voce (rigenera)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsCreateTtsResponse"},"example":{"prompt":{"id":12,"name":"Mario Rossi","kind":"prompt","source":"tts","text":"esempio","lang":"esempio","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7},"status":"draft","temporary":true,"error":"esempio","durationMs":1,"version":1,"usedBy":[{"type":"esempio","id":12,"name":"Mario Rossi"}],"createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsUpdateRequestInput"},"example":{"name":"Mario Rossi","text":"esempio","lang":"it","voiceId":"esempio","params":{"stability":0,"similarity":0,"style":0,"speed":0.7}}}}}},"delete":{"operationId":"prompts_delete","summary":"Elimina messaggio (IN_USE se usato)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant"}},"/api/v1/prompts/{id}/generate":{"post":{"operationId":"prompts_generate","summary":"Rigenera l’audio","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarsSyncIcalResponse"},"example":{"job":{"id":12,"tenantId":12,"kind":"recording.process","status":"pending","attempts":1,"error":"esempio","relatedType":"esempio","relatedId":"esempio","runAfter":"2026-11-04T10:00:00.000Z","startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","createdAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant"}},"/api/v1/prompts/{id}/audio":{"get":{"operationId":"prompts_audio","summary":"Anteprima audio","description":"Scope richiesto: `media:read`. Accesso: azienda.","tags":["Messaggi vocali"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Audio del messaggio","content":{"audio/wav":{"schema":{"type":"string","contentMediaType":"audio/wav"}},"audio/mpeg":{"schema":{"type":"string","contentMediaType":"audio/mpeg"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"tenant"}},"/api/v1/contacts":{"get":{"operationId":"contacts_list","summary":"Rubrica aziendale e personale","description":"Scope richiesto: `contacts:read`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"scope","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","company","personal"]}},{"name":"tag","in":"query","required":false,"schema":{"type":"string","maxLength":32}},{"name":"vip","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"blocked","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsListResponse"},"example":{"items":[{"id":12,"ownerExtensionId":12,"name":"Mario Rossi","company":"esempio","email":"mario.rossi@acme.example","notes":"esempio","tags":["esempio"],"vip":true,"blocked":true,"numbers":[{"number":"101","label":"mobile"}],"source":"manual","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}],"nextCursor":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:read","x-access":"tenant"},"post":{"operationId":"contacts_create","summary":"Crea contatto","description":"Scope richiesto: `contacts:write`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsCreateResponse"},"example":{"contact":{"id":12,"ownerExtensionId":12,"name":"Mario Rossi","company":"esempio","email":"mario.rossi@acme.example","notes":"esempio","tags":["esempio"],"vip":true,"blocked":true,"numbers":[{"number":"101","label":"mobile"}],"source":"manual","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsCreateRequestInput"},"example":{"ownerExtensionId":12,"name":"Mario Rossi","company":"esempio","email":"mario.rossi@acme.example","notes":"esempio","tags":["esempio"],"vip":false,"blocked":false,"numbers":[{"number":"101","label":"mobile"}]}}}}}},"/api/v1/contacts/lookup":{"get":{"operationId":"contacts_lookup","summary":"Ricerca per numero (nome sul display)","description":"Scope richiesto: `contacts:read`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"number","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":32}},{"name":"extensionId","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsLookupResponse"},"example":{"number":"101","match":{"kind":"personal","contactId":12,"extensionId":12,"name":"Mario Rossi","company":"esempio","displayName":"esempio","vip":true,"blocked":true}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:read","x-access":"tenant"}},"/api/v1/contacts/import":{"post":{"operationId":"contacts_import","summary":"Importa CSV / vCard","description":"Scope richiesto: `contacts:write`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsImportResponse"},"example":{"created":1,"updated":1,"skipped":1,"errors":[{"line":1,"message":"esempio"}]}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsImportRequestInput"},"example":{"format":"csv","data":"esempio","ownerExtensionId":12,"onDuplicate":"update","columns":{}}}}}}},"/api/v1/contacts/export":{"get":{"operationId":"contacts_export","summary":"Esporta CSV / vCard","description":"Scope richiesto: `contacts:read`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"default":"csv","type":"string","enum":["csv","vcard"]}},{"name":"scope","in":"query","required":false,"schema":{"default":"company","type":"string","enum":["all","company","personal"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"File CSV (separatore ;)","content":{"text/csv":{"schema":{"type":"string"},"example":"Data inizio;Data fine;Direzione;...\r\n"}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:read","x-access":"tenant"}},"/api/v1/contacts/settings":{"get":{"operationId":"contacts_getSettings","summary":"Impostazioni ricerca nome e blacklist","description":"Scope richiesto: `contacts:read`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsGetSettingsResponse"},"example":{"lookupEnabled":true,"lookupOrder":["personal"],"vipPrefix":"esempio","includeCompany":true,"blockedAction":"reject","blockedPromptId":12}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:read","x-access":"tenant"},"put":{"operationId":"contacts_setSettings","summary":"Modifica impostazioni rubrica","description":"Scope richiesto: `contacts:write`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsGetSettingsResponse"},"example":{"lookupEnabled":true,"lookupOrder":["personal"],"vipPrefix":"esempio","includeCompany":true,"blockedAction":"reject","blockedPromptId":12}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsSetSettingsRequestInput"},"example":{"lookupEnabled":true,"lookupOrder":["personal"],"vipPrefix":"esempio","includeCompany":true,"blockedAction":"reject","blockedPromptId":12}}}}}},"/api/v1/contacts/{id}":{"get":{"operationId":"contacts_get","summary":"Dettaglio contatto","description":"Scope richiesto: `contacts:read`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsCreateResponse"},"example":{"contact":{"id":12,"ownerExtensionId":12,"name":"Mario Rossi","company":"esempio","email":"mario.rossi@acme.example","notes":"esempio","tags":["esempio"],"vip":true,"blocked":true,"numbers":[{"number":"101","label":"mobile"}],"source":"manual","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:read","x-access":"tenant"},"patch":{"operationId":"contacts_update","summary":"Modifica contatto (numbers sostituisce)","description":"Scope richiesto: `contacts:write`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsCreateResponse"},"example":{"contact":{"id":12,"ownerExtensionId":12,"name":"Mario Rossi","company":"esempio","email":"mario.rossi@acme.example","notes":"esempio","tags":["esempio"],"vip":true,"blocked":true,"numbers":[{"number":"101","label":"mobile"}],"source":"manual","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsUpdateRequestInput"},"example":{"ownerExtensionId":12,"name":"Mario Rossi","company":"esempio","email":"mario.rossi@acme.example","notes":"esempio","tags":["esempio"],"vip":true,"blocked":true,"numbers":[{"number":"101","label":"mobile"}]}}}}},"delete":{"operationId":"contacts_delete","summary":"Elimina contatto","description":"Scope richiesto: `contacts:write`. Accesso: azienda.","tags":["Rubrica"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"contacts:write","x-access":"tenant"}},"/api/v1/ops/status":{"get":{"operationId":"ops_status","summary":"Stato backup, firewall, lavori in background e servizi esterni","description":"Scope richiesto: `system:read`. Accesso: solo piattaforma.","tags":["Operatività"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpsStatusResponse"},"example":{"backup":{"state":"ok","lastSuccessAt":"2026-11-04T10:00:00.000Z","lastRun":{"startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","ok":true,"sizeBytes":1,"file":"esempio","error":"esempio"},"history":[{"startedAt":"2026-11-04T10:00:00.000Z","finishedAt":"2026-11-04T10:00:00.000Z","ok":true,"sizeBytes":1,"file":"esempio","error":"esempio"}],"retentionDays":1,"offsite":{"enabled":true,"lastUploadAt":"2026-11-04T10:00:00.000Z"}},"firewall":{"secd":"up","backend":"nftables","version":"1.0.0","dryRun":true,"sets":[{"name":"Mario Rossi","entries":1}],"fail2ban":{"state":"up","action":"esempio","jails":["esempio"]},"detail":"esempio"},"jobs":{"pending":1,"waitingConfig":1,"running":1,"failed24h":1},"providers":{"elevenlabs":true,"ovhAi":true,"ovhStt":true,"scaleway":true,"smtp":true,"telegram":true},"checkedAt":"2026-11-04T10:00:00.000Z"}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:read","x-access":"superadmin"}},"/api/v1/voice-nodes":{"get":{"operationId":"voiceNodes_list","summary":"Server voce collegati e stato","description":"Scope richiesto: `system:read`. Accesso: solo piattaforma.","tags":["voiceNodes"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesListResponse"},"example":{"items":[{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","publicIp":"esempio","hostname":"esempio","tlsEnabled":true,"webrtcEnabled":true,"packageVersion":"esempio","asteriskVersion":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","enrolledAt":"2026-11-04T10:00:00.000Z","enrollmentPendingUntil":"2026-11-04T10:00:00.000Z","tenants":1,"health":{"asterisk":{"up":true,"version":"1.0.0","uptimeS":1,"activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"services":[{"name":"Mario Rossi","state":"up"}],"certificate":{"domain":"centralino.exovoip.it","expiresAt":"2026-11-04T10:00:00.000Z"},"host":{"loadAvg":[1],"memTotalBytes":0,"memFreeBytes":0,"diskTotalBytes":0,"diskFreeBytes":0},"warnings":["esempio"]},"notes":"esempio","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}]}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:read","x-access":"superadmin"},"post":{"operationId":"voiceNodes_create","summary":"Aggiunge un server voce (codice di attivazione mostrato una volta)","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voiceNodes"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"201":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesCreateResponse"},"example":{"node":{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","publicIp":"esempio","hostname":"esempio","tlsEnabled":true,"webrtcEnabled":true,"packageVersion":"esempio","asteriskVersion":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","enrolledAt":"2026-11-04T10:00:00.000Z","enrollmentPendingUntil":"2026-11-04T10:00:00.000Z","tenants":1,"health":{"asterisk":{"up":true,"version":"1.0.0","uptimeS":1,"activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"services":[{"name":"Mario Rossi","state":"up"}],"certificate":{"domain":"centralino.exovoip.it","expiresAt":"2026-11-04T10:00:00.000Z"},"host":{"loadAvg":[1],"memTotalBytes":0,"memFreeBytes":0,"diskTotalBytes":0,"diskFreeBytes":0},"warnings":["esempio"]},"notes":"esempio","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"enrollment":{"code":"acme","expiresAt":"2026-11-04T10:00:00.000Z","installCommand":"esempio"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesCreateRequestInput"},"example":{"name":"Mario Rossi","sipHost":"esempio","notes":"esempio"}}}}}},"/api/v1/voice-nodes/{id}":{"get":{"operationId":"voiceNodes_get","summary":"Dettaglio server voce","description":"Scope richiesto: `system:read`. Accesso: solo piattaforma.","tags":["voiceNodes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesGetResponse"},"example":{"node":{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","publicIp":"esempio","hostname":"esempio","tlsEnabled":true,"webrtcEnabled":true,"packageVersion":"esempio","asteriskVersion":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","enrolledAt":"2026-11-04T10:00:00.000Z","enrollmentPendingUntil":"2026-11-04T10:00:00.000Z","tenants":1,"health":{"asterisk":{"up":true,"version":"1.0.0","uptimeS":1,"activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"services":[{"name":"Mario Rossi","state":"up"}],"certificate":{"domain":"centralino.exovoip.it","expiresAt":"2026-11-04T10:00:00.000Z"},"host":{"loadAvg":[1],"memTotalBytes":0,"memFreeBytes":0,"diskTotalBytes":0,"diskFreeBytes":0},"warnings":["esempio"]},"notes":"esempio","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:read","x-access":"superadmin"},"patch":{"operationId":"voiceNodes_update","summary":"Modifica nome, host SIP, note","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voiceNodes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesGetResponse"},"example":{"node":{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","publicIp":"esempio","hostname":"esempio","tlsEnabled":true,"webrtcEnabled":true,"packageVersion":"esempio","asteriskVersion":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","enrolledAt":"2026-11-04T10:00:00.000Z","enrollmentPendingUntil":"2026-11-04T10:00:00.000Z","tenants":1,"health":{"asterisk":{"up":true,"version":"1.0.0","uptimeS":1,"activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"services":[{"name":"Mario Rossi","state":"up"}],"certificate":{"domain":"centralino.exovoip.it","expiresAt":"2026-11-04T10:00:00.000Z"},"host":{"loadAvg":[1],"memTotalBytes":0,"memFreeBytes":0,"diskTotalBytes":0,"diskFreeBytes":0},"warnings":["esempio"]},"notes":"esempio","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesUpdateRequestInput"},"example":{"name":"Mario Rossi","sipHost":"esempio","notes":"esempio"}}}}},"delete":{"operationId":"voiceNodes_delete","summary":"Elimina server voce (solo senza aziende assegnate)","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voiceNodes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"204":{"description":"Operazione completata"},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin"}},"/api/v1/voice-nodes/{id}/enrollment-code":{"post":{"operationId":"voiceNodes_enrollmentCode","summary":"Nuovo codice di attivazione (installazione o reinstallazione)","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voiceNodes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesCreateResponse"},"example":{"node":{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","publicIp":"esempio","hostname":"esempio","tlsEnabled":true,"webrtcEnabled":true,"packageVersion":"esempio","asteriskVersion":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","enrolledAt":"2026-11-04T10:00:00.000Z","enrollmentPendingUntil":"2026-11-04T10:00:00.000Z","tenants":1,"health":{"asterisk":{"up":true,"version":"1.0.0","uptimeS":1,"activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"services":[{"name":"Mario Rossi","state":"up"}],"certificate":{"domain":"centralino.exovoip.it","expiresAt":"2026-11-04T10:00:00.000Z"},"host":{"loadAvg":[1],"memTotalBytes":0,"memFreeBytes":0,"diskTotalBytes":0,"diskFreeBytes":0},"warnings":["esempio"]},"notes":"esempio","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"},"enrollment":{"code":"acme","expiresAt":"2026-11-04T10:00:00.000Z","installCommand":"esempio"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin"}},"/api/v1/voice-nodes/{id}/revoke":{"post":{"operationId":"voiceNodes_revoke","summary":"Disattiva il server voce e ne revoca le credenziali","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voiceNodes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceNodesGetResponse"},"example":{"node":{"id":12,"name":"Mario Rossi","state":"pending","sipHost":"esempio","publicIp":"esempio","hostname":"esempio","tlsEnabled":true,"webrtcEnabled":true,"packageVersion":"esempio","asteriskVersion":"esempio","lastSeenAt":"2026-11-04T10:00:00.000Z","enrolledAt":"2026-11-04T10:00:00.000Z","enrollmentPendingUntil":"2026-11-04T10:00:00.000Z","tenants":1,"health":{"asterisk":{"up":true,"version":"1.0.0","uptimeS":1,"activeChannels":1,"activeCalls":1,"registeredEndpoints":1},"services":[{"name":"Mario Rossi","state":"up"}],"certificate":{"domain":"centralino.exovoip.it","expiresAt":"2026-11-04T10:00:00.000Z"},"host":{"loadAvg":[1],"memTotalBytes":0,"memFreeBytes":0,"diskTotalBytes":0,"diskFreeBytes":0},"warnings":["esempio"]},"notes":"esempio","createdAt":"2026-11-04T10:00:00.000Z","updatedAt":"2026-11-04T10:00:00.000Z"}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin"}},"/api/v1/tenants/{id}/voice-node":{"get":{"operationId":"tenants_getVoiceNode","summary":"Server voce e host SIP dell’azienda","description":"Scope richiesto: `tenants:read`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetVoiceNodeResponse"},"example":{"tenantId":12,"voiceNodeId":12,"voiceNodeName":"esempio","sipHost":"esempio","effectiveSipHost":"esempio","webrtcAvailable":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:read","x-access":"superadmin"},"put":{"operationId":"tenants_setVoiceNode","summary":"Assegna server voce e host SIP dei telefoni","description":"Scope richiesto: `tenants:write`. Accesso: solo piattaforma.","tags":["Aziende"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsGetVoiceNodeResponse"},"example":{"tenantId":12,"voiceNodeId":12,"voiceNodeName":"esempio","sipHost":"esempio","effectiveSipHost":"esempio","webrtcAvailable":true}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"tenants:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsSetVoiceNodeRequestInput"},"example":{"voiceNodeId":12,"sipHost":"esempio"}}}}}},"/api/v1/voices":{"get":{"operationId":"voices_list","summary":"Voci disponibili (la predefinita per prima)","description":"Scope richiesto: `media:read`. Accesso: azienda o vista globale.","tags":["voices"],"parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["it","en","de","fr","es"]}},{"name":"gender","in":"query","required":false,"schema":{"type":"string","enum":["female","male","neutral"]}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesListResponse"},"example":{"items":[{"voiceId":"esempio","name":"Mario Rossi","fullName":"esempio","description":"Centralino","gender":"female","age":"esempio","accent":"esempio","tone":"esempio","useCase":"esempio","languages":["esempio"],"category":"esempio","quality":"verified","previewAvailable":true,"active":true,"isPlatformDefault":true,"isTenantDefault":true,"isDefault":true,"sortOrder":1}],"defaultVoiceId":"esempio","platformDefaultVoiceId":"esempio","tenantDefaultVoiceId":"esempio","catalog":{"syncedAt":"2026-11-04T10:00:00.000Z","pending":true,"lastError":"esempio","total":1},"samples":{"maxChars":1,"dailyLimit":1,"usedToday":1}}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"mixed"}},"/api/v1/voices/sync":{"post":{"operationId":"voices_sync","summary":"Aggiorna subito il catalogo delle voci","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voices"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSyncResponse"},"example":{"catalog":{"syncedAt":"2026-11-04T10:00:00.000Z","pending":true,"lastError":"esempio","total":1}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin"}},"/api/v1/voices/default":{"put":{"operationId":"voices_setTenantDefault","summary":"Voce predefinita dell’azienda (null = quella della piattaforma)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["voices"],"parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSetTenantDefaultResponse"},"example":{"voiceId":"esempio","defaultVoiceId":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSetTenantDefaultRequestInput"},"example":{"voiceId":"esempio"}}}}}},"/api/v1/voices/platform-default":{"put":{"operationId":"voices_setPlatformDefault","summary":"Voce predefinita della piattaforma","description":"Scope richiesto: `system:write`. Accesso: solo piattaforma.","tags":["voices"],"responses":{"200":{"description":"Risposta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSetTenantDefaultResponse"},"example":{"voiceId":"esempio","defaultVoiceId":"esempio"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"system:write","x-access":"superadmin","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSetTenantDefaultRequestInput"},"example":{"voiceId":"esempio"}}}}}},"/api/v1/voices/{voiceId}/preview":{"get":{"operationId":"voices_preview","summary":"Ascolto di esempio della voce (mp3)","description":"Scope richiesto: `media:read`. Accesso: azienda o vista globale.","tags":["voices"],"parameters":[{"name":"voiceId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{4,64}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Facoltativo per superadmin e chiavi globali: senza header la vista è globale.","schema":{"type":"string","pattern":"^[0-9]+$"}}],"responses":{"200":{"description":"Audio del messaggio","content":{"audio/wav":{"schema":{"type":"string","contentMediaType":"audio/wav"}},"audio/mpeg":{"schema":{"type":"string","contentMediaType":"audio/mpeg"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:read","x-access":"mixed"}},"/api/v1/voices/{voiceId}/sample":{"post":{"operationId":"voices_sample","summary":"Ascolta la voce con un testo a scelta (max 200 caratteri, prove giornaliere limitate)","description":"Scope richiesto: `media:write`. Accesso: azienda.","tags":["voices"],"parameters":[{"name":"voiceId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{4,64}$"}},{"name":"X-Tenant-Id","in":"header","required":false,"description":"Azienda su cui operare: obbligatorio per superadmin e chiavi globali, ignorato per le chiavi aziendali.","schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Stessa chiave e stesso corpo: stessa risposta per 24 ore. Corpo diverso: 409 IDEMPOTENCY_CONFLICT.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Audio del messaggio","content":{"audio/wav":{"schema":{"type":"string","contentMediaType":"audio/wav"}},"audio/mpeg":{"schema":{"type":"string","contentMediaType":"audio/mpeg"}}}},"400":{"description":"Dati non validi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Dati non validi"}}}}},"401":{"description":"Autenticazione mancante o chiave non valida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"UNAUTHORIZED","message":"Autenticazione richiesta"}}}}},"403":{"description":"Permessi insufficienti (scope, azienda o IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"SCOPE_MISSING","message":"Permessi insufficienti"}}}}},"404":{"description":"Risorsa non trovata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"NOT_FOUND","message":"Risorsa non trovata"}}}}},"409":{"description":"Conflitto (duplicato, limite raggiunto, risorsa in uso)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"CONFLICT","message":"Conflitto"}}}}},"429":{"description":"Limite di richieste superato","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":{"code":"RATE_LIMITED","message":"Limite di richieste superato per questa chiave"}}}}}},"security":[{"apiKeyBearer":[]},{"apiKeyHeader":[]},{"sessionCookie":[]}],"x-scope":"media:write","x-access":"tenant","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSampleRequestInput"},"example":{"text":"esempio","lang":"it"}}}}}}},"components":{"schemas":{"DestinationInput":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"extension"},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","extensionId"]},{"type":"object","properties":{"type":{"type":"string","const":"ring_group"},"ringGroupId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","ringGroupId"]},{"type":"object","properties":{"type":{"type":"string","const":"queue"},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","queueId"]},{"type":"object","properties":{"type":{"type":"string","const":"ivr"},"ivrId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","ivrId"]},{"type":"object","properties":{"type":{"type":"string","const":"voicemail"},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"greeting":{"type":"string","enum":["unavailable","busy","none"]}},"required":["type","extensionId"]},{"type":"object","properties":{"type":{"type":"string","const":"playback"},"promptId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"then":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]}},"required":["type","promptId"]},{"type":"object","properties":{"type":{"type":"string","const":"mobile"},"number":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},"confirm":{"type":"boolean"},"ringTimeS":{"type":"integer","minimum":5,"maximum":120}},"required":["type","number"]},{"type":"object","properties":{"type":{"type":"string","const":"hangup"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"busy"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"ai_assistant"},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"auto_answer"},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"notifyExtensionIds":{"maxItems":20,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"calendar"},"calendarId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"open":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"closed":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]}},"required":["type","calendarId"]}]},"AuthLoginRequestInput":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["email","password"]},"TenantsCreateRequestInput":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9]{1,19}$"},"name":{"type":"string","minLength":2,"maxLength":160},"timezone":{"default":"Europe/Rome","type":"string","minLength":1,"maxLength":64},"lang":{"default":"it","type":"string","enum":["it","en"]},"maxExt":{"default":50,"type":"integer","minimum":0,"maximum":10000},"maxCalls":{"default":10,"type":"integer","minimum":0,"maximum":1000},"recordDefault":{"default":"never","type":"string","enum":["always","on_demand","never"]},"retentionDays":{"default":90,"type":"integer","minimum":1,"maximum":3650},"storageQuotaMb":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"aiMonthlyMinutes":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"outboundBlocks":{"default":["premium","satellite"],"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"default":"national_only","type":"string","enum":["national_only","national_and_eu","any"]},"forwardDestinationsPolicyLocked":{"default":false,"type":"boolean"},"admin":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":160}},"required":["email","name"]}},"required":["code","name"]},"TenantsUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":160},"timezone":{"type":"string","minLength":1,"maxLength":64},"lang":{"type":"string","enum":["it","en"]},"recordDefault":{"type":"string","enum":["always","on_demand","never"]},"retentionDays":{"type":"integer","minimum":1,"maximum":3650},"storageQuotaMb":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"aiMonthlyMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"outboundBlocks":{"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"type":"string","enum":["national_only","national_and_eu","any"]},"forwardDestinationsPolicyLocked":{"type":"boolean"}}},"TenantsLimitsRequestInput":{"type":"object","properties":{"maxExt":{"type":"integer","minimum":0,"maximum":10000},"maxCalls":{"type":"integer","minimum":0,"maximum":1000}},"required":["maxExt","maxCalls"]},"TenantsSuspendRequestInput":{"type":"object","properties":{"reason":{"type":"string","maxLength":255}}},"FeatureCodesSetSettingsRequestInput":{"type":"object","properties":{"overridePin":{"anyOf":[{"type":"string","pattern":"^[0-9]{4,8}$"},{"type":"null"}]}}},"ExtensionsCreateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string","minLength":1,"maxLength":160},"email":{"default":null,"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"sipPassword":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[\\x21-\\x7e]+$"},"sip":{"default":{},"type":"object","properties":{"dtmfMode":{"default":"auto","type":"string","enum":["auto","rfc4733","info","inband"]},"transport":{"default":"udp","type":"string","enum":["udp","tcp","tls"]},"tlsEnabled":{"default":true,"type":"boolean"},"webrtcEnabled":{"default":true,"type":"boolean"},"maxContacts":{"default":3,"type":"integer","minimum":1,"maximum":5},"callWaiting":{"default":true,"type":"boolean"},"permit":{"default":[],"maxItems":20,"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"advanced":{"anyOf":[{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":255}},{"type":"null"}]}}},"recordMode":{"default":"inherit","type":"string","enum":["inherit","always","on_demand","never"]},"voicemail":{"default":{},"type":"object","properties":{"enabled":{"default":true,"type":"boolean"},"email":{"default":null,"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"default":true,"type":"boolean"},"pin":{"anyOf":[{"type":"string","pattern":"^[0-9]{4,8}$"},{"type":"null"}]}}},"followMe":{"default":{},"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"number":{"default":null,"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"rings":{"default":5,"type":"integer","minimum":1,"maximum":20},"mode":{"default":"sequential","type":"string","enum":["sequential","simultaneous"]},"confirm":{"default":true,"type":"boolean"},"when":{"default":"always","type":"string","enum":["always","open","closed"]},"callerId":{"default":"caller","type":"string","enum":["caller","did"]}}},"forwarding":{"default":{},"type":"object","properties":{"noAnswer":{"default":{"destination":null,"rings":5},"type":"object","properties":{"destination":{"default":null,"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"rings":{"default":5,"type":"integer","minimum":1,"maximum":20}}},"busy":{"default":null,"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"unavailable":{"default":null,"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"busyCheck":{"default":true,"type":"boolean"}}},"canOverrideHours":{"default":false,"type":"boolean"}},"required":["number","name"]},"ExtensionsUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"avatarUrl":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}]},"enabled":{"type":"boolean"},"sip":{"type":"object","properties":{"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"transport":{"type":"string","enum":["udp","tcp","tls"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"maxContacts":{"type":"integer","minimum":1,"maximum":5},"callWaiting":{"type":"boolean"},"permit":{"maxItems":20,"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"advanced":{"anyOf":[{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":255}},{"type":"null"}]}}},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"voicemail":{"type":"object","properties":{"enabled":{"type":"boolean"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"pin":{"anyOf":[{"type":"string","pattern":"^[0-9]{4,8}$"},{"type":"null"}]}}},"followMe":{"type":"object","properties":{"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20},"mode":{"type":"string","enum":["sequential","simultaneous"]},"confirm":{"type":"boolean"},"when":{"type":"string","enum":["always","open","closed"]},"callerId":{"type":"string","enum":["caller","did"]}}},"forwarding":{"type":"object","properties":{"noAnswer":{"type":"object","properties":{"destination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20}}},"busy":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"unavailable":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"busyCheck":{"type":"boolean"}}},"canOverrideHours":{"type":"boolean"}}},"ExtensionsFollowMeRequestInput":{"type":"object","properties":{"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20},"mode":{"type":"string","enum":["sequential","simultaneous"]},"confirm":{"type":"boolean"},"when":{"type":"string","enum":["always","open","closed"]},"callerId":{"type":"string","enum":["caller","did"]}}},"ExtensionsSetDndRequestInput":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["busy","voicemail","forward"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationMinutes":{"type":"integer","minimum":1,"maximum":43200}}},"ExtensionsSetAvailabilityRequestInput":{"type":"object","properties":{"scheduleMode":{"type":"string","enum":["always","tenant","calendar"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"force":{"type":"string","enum":["auto","on","off"]}}},"TrunksApproveRequestInput":{"type":"object","properties":{"reason":{"type":"string","maxLength":500}}},"TrunksRejectRequestInput":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["reason"]},"TrunksCreateRequestInput":{"type":"object","properties":{"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"registration":{"default":"outbound","type":"string","enum":["outbound","inbound","none"]},"host":{"type":"string","minLength":1,"maxLength":255},"port":{"default":5060,"type":"integer","minimum":1,"maximum":65535},"transport":{"default":"udp","type":"string","enum":["udp","tcp","tls"]},"username":{"default":null,"anyOf":[{"type":"string","maxLength":128},{"type":"null"}]},"secret":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"fromUser":{"default":null,"anyOf":[{"type":"string","maxLength":128},{"type":"null"}]},"fromDomain":{"default":null,"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"outboundProxy":{"default":null,"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"allowedHosts":{"default":[],"maxItems":50,"type":"array","items":{"anyOf":[{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]},{"type":"string","format":"hostname","pattern":"^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$"}]}},"qualify":{"default":true,"type":"boolean"},"qualifyFrequencyS":{"default":60,"type":"integer","minimum":10,"maximum":3600},"callerIdExtraction":{"default":{"source":"from","header":null,"regex":null},"type":"object","properties":{"source":{"type":"string","enum":["from","pai","rpid","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"]},"didExtraction":{"default":{"source":"to","header":null,"regex":null},"type":"object","properties":{"source":{"type":"string","enum":["to","ruri","diversion","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"]},"debugCidDid":{"default":false,"type":"boolean"},"maxChannels":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"codecs":{"default":["alaw","ulaw","g722"],"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["alaw","ulaw","g722","opus","g729","gsm"]}},"dtmfMode":{"default":"rfc4733","type":"string","enum":["auto","rfc4733","info","inband"]},"retryIntervalS":{"default":45,"type":"integer","minimum":10,"maximum":3600},"forbiddenRetryIntervalS":{"default":300,"type":"integer","minimum":10,"maximum":86400}},"required":["name","host"]},"TrunksUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"type":"boolean"},"registration":{"type":"string","enum":["outbound","inbound","none"]},"host":{"type":"string","minLength":1,"maxLength":255},"port":{"type":"integer","minimum":1,"maximum":65535},"transport":{"type":"string","enum":["udp","tcp","tls"]},"username":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}]},"secret":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"fromUser":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}]},"fromDomain":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"outboundProxy":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"allowedHosts":{"maxItems":50,"type":"array","items":{"anyOf":[{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]},{"type":"string","format":"hostname","pattern":"^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$"}]}},"qualify":{"type":"boolean"},"qualifyFrequencyS":{"type":"integer","minimum":10,"maximum":3600},"callerIdExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["from","pai","rpid","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"]},"didExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["to","ruri","diversion","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"]},"debugCidDid":{"type":"boolean"},"maxChannels":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"codecs":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["alaw","ulaw","g722","opus","g729","gsm"]}},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"retryIntervalS":{"type":"integer","minimum":10,"maximum":3600},"forbiddenRetryIntervalS":{"type":"integer","minimum":10,"maximum":86400}}},"NumbersCreateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},"description":{"default":null,"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"tenantId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"trunkId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"}},"required":["number"]},"NumbersBulkCreateRequestInput":{"type":"object","properties":{"numbers":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"}},"tenantId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"trunkId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["numbers"]},"NumbersUpdateRequestInput":{"type":"object","properties":{"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"enabled":{"type":"boolean"}}},"NumbersAssignRequestInput":{"type":"object","properties":{"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["tenantId"]},"InboundRoutesCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"numberId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"didPattern":{"default":null,"anyOf":[{"type":"string","pattern":"^(_[0-9XZN.!+\\-[\\]]{1,40}|\\+?[0-9]{1,32})$"},{"type":"null"}]},"trunkId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerPattern":{"default":null,"anyOf":[{"type":"string","pattern":"^(_[0-9XZN.!+\\-[\\]]{1,40}|\\+?[0-9]{1,32})$"},{"type":"null"}]},"priority":{"default":100,"type":"integer","minimum":1,"maximum":10000},"enabled":{"default":true,"type":"boolean"},"steps":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"timeoutS":{"type":"integer","minimum":5,"maximum":600},"destination":{"$ref":"#/components/schemas/DestinationInput"}},"required":["timeoutS","destination"]},"description":"Catena ordinata: la posizione è l’indice nell’array"}},"required":["name","steps"]},"InboundRoutesReorderRequestInput":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["ids"]},"InboundRoutesUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"numberId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"didPattern":{"anyOf":[{"type":"string","pattern":"^(_[0-9XZN.!+\\-[\\]]{1,40}|\\+?[0-9]{1,32})$"},{"type":"null"}]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerPattern":{"anyOf":[{"type":"string","pattern":"^(_[0-9XZN.!+\\-[\\]]{1,40}|\\+?[0-9]{1,32})$"},{"type":"null"}]},"priority":{"type":"integer","minimum":1,"maximum":10000},"enabled":{"type":"boolean"},"steps":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"timeoutS":{"type":"integer","minimum":5,"maximum":600},"destination":{"$ref":"#/components/schemas/DestinationInput"}},"required":["timeoutS","destination"]},"description":"Catena ordinata: la posizione è l’indice nell’array"}}},"OutboundRoutesCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"beginsWith":{"default":"","type":"string","pattern":"^\\+?[0-9*#]{0,20}$"},"restDigits":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"trim":{"default":0,"type":"integer","minimum":0,"maximum":20},"prepend":{"default":"","type":"string","pattern":"^\\+?[0-9]{0,16}$"},"callerId":{"default":null,"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"priority":{"default":100,"type":"integer","minimum":1,"maximum":10000},"enabled":{"default":true,"type":"boolean"},"trunkIds":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["name","trunkIds"]},"OutboundRoutesSetPolicyRequestInput":{"type":"object","properties":{"blocked":{"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"type":"string","enum":["national_only","national_and_eu","any"]}}},"OutboundRoutesSimulateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^\\+?[0-9*#]{1,32}$"},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["number"]},"OutboundRoutesUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"beginsWith":{"type":"string","pattern":"^\\+?[0-9*#]{0,20}$"},"restDigits":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"trim":{"type":"integer","minimum":0,"maximum":20},"prepend":{"type":"string","pattern":"^\\+?[0-9]{0,16}$"},"callerId":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"priority":{"type":"integer","minimum":1,"maximum":10000},"enabled":{"type":"boolean"},"trunkIds":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}}},"VoicemailSetSettingsRequestInput":{"type":"object","properties":{"emailFromName":{"type":"string","maxLength":120},"attachAudioDefault":{"type":"boolean"},"transcribeDefault":{"type":"boolean"},"maxMessageS":{"type":"integer","minimum":10,"maximum":600},"maxMessages":{"type":"integer","minimum":1,"maximum":1000},"minMessageS":{"type":"integer","minimum":0,"maximum":10},"language":{"type":"string","enum":["it","en"]}},"required":["emailFromName","attachAudioDefault","transcribeDefault","maxMessageS","maxMessages","minMessageS","language"]},"VoicemailUpdateBoxRequestInput":{"type":"object","properties":{"enabled":{"type":"boolean"},"pin":{"anyOf":[{"type":"string","pattern":"^[0-9]{4,8}$"},{"type":"null"}]},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"deleteAfterEmail":{"type":"boolean"},"transcribe":{"type":"boolean"},"greeting":{"type":"string","enum":["default","custom"]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"maxMessageS":{"anyOf":[{"type":"integer","minimum":10,"maximum":600},{"type":"null"}]}}},"VoicemailUpdateMessageRequestInput":{"type":"object","properties":{"folder":{"type":"string","enum":["INBOX","Old","Urgent"]}},"required":["folder"]},"ApiKeysCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"scopes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","enum":["*","extensions:read","extensions:write","trunks:read","trunks:write","numbers:read","numbers:write","inbound_routes:read","inbound_routes:write","outbound_routes:read","outbound_routes:write","voicemail:read","voicemail:write","cdr:read","api_keys:read","api_keys:write","live:read","calls:control","calendars:read","calendars:write","recordings:read","recordings:write","ivrs:read","ivrs:write","ring_groups:read","ring_groups:write","queues:read","queues:write","media:read","media:write","contacts:read","contacts:write","notifications:read","notifications:write","webhooks:read","webhooks:write","tenants:*","tenants:read","tenants:write","tenants:impersonate","security:*","security:read","security:write","system:*","system:read","system:write"]}},"allowedIps":{"default":[],"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"expiresAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"env":{"default":"live","type":"string","enum":["live","test"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","scopes"]},"ApiKeysUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"scopes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","enum":["*","extensions:read","extensions:write","trunks:read","trunks:write","numbers:read","numbers:write","inbound_routes:read","inbound_routes:write","outbound_routes:read","outbound_routes:write","voicemail:read","voicemail:write","cdr:read","api_keys:read","api_keys:write","live:read","calls:control","calendars:read","calendars:write","recordings:read","recordings:write","ivrs:read","ivrs:write","ring_groups:read","ring_groups:write","queues:read","queues:write","media:read","media:write","contacts:read","contacts:write","notifications:read","notifications:write","webhooks:read","webhooks:write","tenants:*","tenants:read","tenants:write","tenants:impersonate","security:*","security:read","security:write","system:*","system:read","system:write"]}},"allowedIps":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}}},"ApiKeysRotateRequestInput":{"type":"object","properties":{"overlapHours":{"default":24,"type":"integer","minimum":0,"maximum":168}}},"SecurityBanRequestInput":{"type":"object","properties":{"ip":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]},"durationS":{"default":3600,"anyOf":[{"type":"integer","minimum":60,"maximum":9007199254740991},{"type":"null"}]},"reason":{"type":"string","maxLength":255}},"required":["ip"]},"SecurityUnbanRequestInput":{"type":"object","properties":{"ip":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]},"jail":{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]},"whitelist":{"default":false,"type":"boolean"}},"required":["ip"]},"SecurityUpdateJailRequestInput":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxRetry":{"type":"integer","minimum":1,"maximum":100},"findTimeS":{"type":"integer","minimum":10,"maximum":604800},"banTimeS":{"type":"integer","minimum":60,"maximum":31536000},"banTimeIncrement":{"type":"boolean"},"banTimeFactor":{"type":"number","minimum":1,"maximum":100},"banTimeMaxS":{"anyOf":[{"type":"integer","minimum":60,"maximum":9007199254740991},{"type":"null"}]}}},"SecurityUpdateGeoRequestInput":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowedCountries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"action":{"type":"string","enum":["drop_and_ban","drop"]}}},"SecurityAddWhitelistRequestInput":{"type":"object","properties":{"cidr":{"default":null,"anyOf":[{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]},{"type":"null"}]},"country":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}]},"label":{"default":null,"anyOf":[{"type":"string","maxLength":160},{"type":"null"}]},"tenantId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}}},"SecuritySetSettingsRequestInput":{"type":"object","properties":{"sipRateLimitPerSec":{"type":"integer","minimum":1,"maximum":1000},"sipRateBurst":{"type":"integer","minimum":1,"maximum":5000},"blockedUserAgents":{"maxItems":200,"type":"array","items":{"type":"string","minLength":2,"maxLength":64}},"alertEmail":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"alertOnTenantIpBan":{"type":"boolean"},"alertOnAttackBurst":{"type":"boolean"}},"required":["sipRateLimitPerSec","sipRateBurst","blockedUserAgents","alertEmail","alertOnTenantIpBan","alertOnAttackBurst"]},"SystemReloadRequestInput":{"type":"object","properties":{"tenantId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"scope":{"default":"auto","type":"string","enum":["auto","pjsip","dialplan","queues","moh","voicemail","all","restart"]},"reason":{"default":"manual","type":"string","minLength":1,"maxLength":255}}},"WebhooksCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","enum":["*","channel.update","channel.hangup","extension.state","extension.registration","extension.dnd","extension.contact","trunk.state","queue.caller.join","queue.caller.leave","queue.member","parking.update","calendar.override","system.status","system.asterisk","system.service","system.reload"]}},"enabled":{"default":true,"type":"boolean"}},"required":["name","url","events"]},"WebhooksUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","enum":["*","channel.update","channel.hangup","extension.state","extension.registration","extension.dnd","extension.contact","trunk.state","queue.caller.join","queue.caller.leave","queue.member","parking.update","calendar.override","system.status","system.asterisk","system.service","system.reload"]}},"enabled":{"type":"boolean"}}},"CalendarsCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string","maxLength":64,"pattern":"^[A-Za-z]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"},{"type":"null"}]},"isDefault":{"type":"boolean"},"openDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"closedDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"closedPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"defaultForceMode":{"type":"string","enum":["next_transition","hours","until","manual"]},"defaultForceHours":{"anyOf":[{"type":"integer","minimum":1,"maximum":720},{"type":"null"}]},"icalUrl":{"anyOf":[{"type":"string","maxLength":1024,"format":"uri"},{"type":"null"}]},"hours":{"maxItems":70,"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"}},"required":["weekday","start","end"]}},"preloadHolidays":{"default":true,"type":"boolean"}},"required":["name"]},"CalendarsUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string","maxLength":64,"pattern":"^[A-Za-z]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"},{"type":"null"}]},"isDefault":{"type":"boolean"},"openDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"closedDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"closedPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"defaultForceMode":{"type":"string","enum":["next_transition","hours","until","manual"]},"defaultForceHours":{"anyOf":[{"type":"integer","minimum":1,"maximum":720},{"type":"null"}]},"icalUrl":{"anyOf":[{"type":"string","maxLength":1024,"format":"uri"},{"type":"null"}]}}},"CalendarsSetHoursRequestInput":{"type":"object","properties":{"ranges":{"maxItems":70,"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"}},"required":["weekday","start","end"]}}},"required":["ranges"]},"CalendarsForceRequestInput":{"type":"object","properties":{"state":{"type":"string","enum":["open","closed"]},"mode":{"default":"next_transition","type":"string","enum":["next_transition","hours","until","manual"]},"hours":{"type":"integer","minimum":1,"maximum":720},"until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"note":{"type":"string","maxLength":255}},"required":["state"]},"CalendarsSimulateRequestInput":{"type":"object","properties":{"at":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T([01][0-9]|2[0-3]):[0-5][0-9]$"},"ignoreForce":{"default":true,"type":"boolean"},"numberId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["at"]},"CalendarsPreloadHolidaysRequestInput":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string","enum":["new_year","epiphany","easter","easter_monday","liberation","labour","republic","assumption","st_francis","all_saints","immaculate","christmas","st_stephen"]}},"patron":{"anyOf":[{"anyOf":[{"type":"object","properties":{"istat":{"type":"string","pattern":"^[0-9]{6}$"}},"required":["istat"]},{"type":"object","properties":{"saint":{"type":"string","minLength":1,"maxLength":120},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31}},"required":["saint","month","day"]}]},{"type":"null"}]},"replace":{"default":false,"type":"boolean"}}},"CalendarsCreateExceptionRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"type":{"default":"closed","type":"string","enum":["open","closed"]},"dateFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"dateTo":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"startTime":{"anyOf":[{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]},"endTime":{"anyOf":[{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"},{"type":"null"}]},"recurring":{"default":false,"type":"boolean"},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]}},"required":["name","dateFrom","dateTo"]},"CalendarsUpdateExceptionRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"type":{"default":"closed","type":"string","enum":["open","closed"]},"dateFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"dateTo":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"startTime":{"anyOf":[{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]},"endTime":{"anyOf":[{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"},{"type":"null"}]},"recurring":{"default":false,"type":"boolean"},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]}}},"CalendarsImportIcalRequestInput":{"type":"object","properties":{"ics":{"type":"string","maxLength":1000000},"url":{"type":"string","maxLength":1024,"format":"uri"},"type":{"default":"closed","type":"string","enum":["open","closed"]},"replace":{"default":true,"type":"boolean"}}},"NumbersSetCalendarRequestInput":{"type":"object","properties":{"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"closedDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]}},"required":["calendarId","closedDestination"]},"RecordingsSetSettingsRequestInput":{"type":"object","properties":{"retentionDays":{"type":"integer","minimum":0,"maximum":3650},"format":{"default":"mp3","type":"string","enum":["opus","mp3"]},"supervisorsCanListen":{"default":true,"type":"boolean"},"supervisorsCanDownload":{"default":false,"type":"boolean"},"usersCanListenOwn":{"default":false,"type":"boolean"},"quotaMb":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}}},"RecordingsUpsertPolicyRequestInput":{"type":"object","properties":{"mode":{"type":"string","enum":["inherit","always","on_demand","never"]},"inbound":{"type":["boolean","null"]},"outbound":{"type":["boolean","null"]},"internal":{"type":["boolean","null"]},"stereo":{"type":["boolean","null"]},"announceInboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceOutboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceEnabled":{"type":["boolean","null"]},"autoTranscribe":{"type":["boolean","null"]},"autoSummarize":{"type":["boolean","null"]}}},"RecordingsTranscribeRequestInput":{"type":"object","properties":{"force":{"default":false,"type":"boolean"},"language":{"type":"string","pattern":"^[a-z]{2}$"}}},"VoicemailResendEmailRequestInput":{"type":"object","properties":{"to":{"type":"string","maxLength":255,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}},"ForwardingUpdateRequestInput":{"type":"object","properties":{"style":{"type":"string","enum":["confirm","silent","whisper"]},"silentTimeoutS":{"type":"integer","minimum":5,"maximum":60},"whisperText":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"whisperPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}}},"ForwardingSetProviderDivertRequestInput":{"type":"object","properties":{"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"method":{"type":"string","enum":["sip302","ovh_api"]}}},"NotificationsSetSettingsRequestInput":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"event":{"type":"string","enum":["missed_call","voicemail","calendar_force","trunk_approval","recording_ready"]},"enabled":{"type":"boolean"},"channels":{"type":"array","items":{"type":"string","enum":["email","telegram"]}},"emails":{"maxItems":20,"type":"array","items":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"includeAdmins":{"type":"boolean"},"extensionIds":{"maxItems":200,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"queueIds":{"maxItems":100,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"numberIds":{"maxItems":100,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["event","enabled","channels","emails","includeAdmins","extensionIds","queueIds","numberIds"]}},"telegram":{"type":"object","properties":{"enabled":{"type":"boolean"},"chatId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"botToken":{"anyOf":[{"type":"string","pattern":"^[0-9]{5,15}:[A-Za-z0-9_-]{20,64}$"},{"type":"null"}]}}},"lang":{"type":"string","enum":["it","en"]}}},"NotificationsTestRequestInput":{"type":"object","properties":{"channel":{"type":"string","enum":["email","telegram"]},"to":{"type":"string","maxLength":255}},"required":["channel"]},"IvrsCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"lang":{"default":"it","type":"string","enum":["it","en","de","fr","es"]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingText":{"anyOf":[{"type":"string","maxLength":2500},{"type":"null"}]},"invalidPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutS":{"default":7,"type":"integer","minimum":1,"maximum":60},"maxRetries":{"default":3,"type":"integer","minimum":0,"maximum":10},"interDigitTimeoutS":{"default":2,"type":"integer","minimum":1,"maximum":10},"directDial":{"default":false,"type":"boolean"},"directDialExtensions":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","pattern":"^[0-9]{2,6}$"}},"timeoutDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"invalidDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"options":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"digit":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","*","#"]},"label":{"type":["string","null"]},"destination":{"$ref":"#/components/schemas/DestinationInput"}},"required":["digit","label","destination"]}},"enabled":{"default":true,"type":"boolean"}},"required":["name"]},"IvrsUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"lang":{"type":"string","enum":["it","en","de","fr","es"]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingText":{"anyOf":[{"type":"string","maxLength":2500},{"type":"null"}]},"invalidPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutS":{"type":"integer","minimum":1,"maximum":60},"maxRetries":{"type":"integer","minimum":0,"maximum":10},"interDigitTimeoutS":{"type":"integer","minimum":1,"maximum":10},"directDial":{"type":"boolean"},"directDialExtensions":{"maxItems":500,"type":"array","items":{"type":"string","pattern":"^[0-9]{2,6}$"}},"timeoutDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"invalidDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"options":{"maxItems":12,"type":"array","items":{"type":"object","properties":{"digit":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","*","#"]},"label":{"type":["string","null"]},"destination":{"$ref":"#/components/schemas/DestinationInput"}},"required":["digit","label","destination"]}},"enabled":{"type":"boolean"}}},"RingGroupsCreateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"strategy":{"default":"simultaneous","type":"string","enum":["simultaneous","sequential"]},"ringTimeS":{"default":25,"type":"integer","minimum":5,"maximum":600},"memberRingS":{"default":15,"type":"integer","minimum":5,"maximum":120},"memberExtensionIds":{"default":[],"maxItems":100,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"externalNumbers":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"}},"skipBusy":{"default":true,"type":"boolean"},"callerHears":{"default":"ring","type":"string","enum":["ring","moh"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerIdPrefix":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]},"failoverDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"}},"required":["number","name"]},"RingGroupsUpdateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"strategy":{"type":"string","enum":["simultaneous","sequential"]},"ringTimeS":{"type":"integer","minimum":5,"maximum":600},"memberRingS":{"type":"integer","minimum":5,"maximum":120},"memberExtensionIds":{"maxItems":100,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"externalNumbers":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"}},"skipBusy":{"type":"boolean"},"callerHears":{"type":"string","enum":["ring","moh"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerIdPrefix":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]},"failoverDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"enabled":{"type":"boolean"}}},"QueuesCreateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"lang":{"default":"it","type":"string","enum":["it","en","de","fr","es"]},"strategy":{"default":"rrmemory","type":"string","enum":["ringall","linear","linear_progressive","leastrecent","fewestcalls","rrmemory","random"]},"progressiveStepS":{"anyOf":[{"type":"integer","minimum":5,"maximum":300},{"type":"null"}]},"agentTimeoutS":{"default":15,"type":"integer","minimum":5,"maximum":120},"wrapupS":{"default":5,"type":"integer","minimum":0,"maximum":600},"ringInUse":{"default":false,"type":"boolean"},"callerHears":{"default":"moh","type":"string","enum":["moh","ring"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announcePosition":{"default":true,"type":"boolean"},"announceHoldtime":{"default":true,"type":"boolean"},"announceFrequencyS":{"default":45,"type":"integer","minimum":15,"maximum":600},"periodicPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodicFrequencyS":{"anyOf":[{"type":"integer","minimum":15,"maximum":600},{"type":"null"}]},"callerIdPrefix":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]},"maxCallers":{"anyOf":[{"type":"integer","minimum":1,"maximum":500},{"type":"null"}]},"maxWaitS":{"default":300,"type":"integer","minimum":10,"maximum":7200},"maxWaitDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"emptyDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"noAnswerRounds":{"anyOf":[{"type":"integer","minimum":1,"maximum":50},{"type":"null"}]},"noAnswerDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"voicemailDigit":{"anyOf":[{"type":"string","pattern":"^[0-9*#]$"},{"type":"null"}]},"voicemailExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callbackEnabled":{"default":false,"type":"boolean"},"callbackDigit":{"anyOf":[{"type":"string","pattern":"^[0-9*#]$"},{"type":"null"}]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"recordMode":{"default":"inherit","type":"string","enum":["inherit","always","on_demand","never"]},"members":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"penalty":{"type":"integer","minimum":0,"maximum":100},"paused":{"type":"boolean"}},"required":["extensionId","position","penalty","paused"]}},"enabled":{"default":true,"type":"boolean"}},"required":["number","name"]},"QueuesUpdateRequestInput":{"type":"object","properties":{"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"lang":{"type":"string","enum":["it","en","de","fr","es"]},"strategy":{"type":"string","enum":["ringall","linear","linear_progressive","leastrecent","fewestcalls","rrmemory","random"]},"progressiveStepS":{"anyOf":[{"type":"integer","minimum":5,"maximum":300},{"type":"null"}]},"agentTimeoutS":{"type":"integer","minimum":5,"maximum":120},"wrapupS":{"type":"integer","minimum":0,"maximum":600},"ringInUse":{"type":"boolean"},"callerHears":{"type":"string","enum":["moh","ring"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announcePosition":{"type":"boolean"},"announceHoldtime":{"type":"boolean"},"announceFrequencyS":{"type":"integer","minimum":15,"maximum":600},"periodicPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodicFrequencyS":{"anyOf":[{"type":"integer","minimum":15,"maximum":600},{"type":"null"}]},"callerIdPrefix":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]},"maxCallers":{"anyOf":[{"type":"integer","minimum":1,"maximum":500},{"type":"null"}]},"maxWaitS":{"type":"integer","minimum":10,"maximum":7200},"maxWaitDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"emptyDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"noAnswerRounds":{"anyOf":[{"type":"integer","minimum":1,"maximum":50},{"type":"null"}]},"noAnswerDestination":{"anyOf":[{"$ref":"#/components/schemas/DestinationInput"},{"type":"null"}]},"voicemailDigit":{"anyOf":[{"type":"string","pattern":"^[0-9*#]$"},{"type":"null"}]},"voicemailExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callbackEnabled":{"type":"boolean"},"callbackDigit":{"anyOf":[{"type":"string","pattern":"^[0-9*#]$"},{"type":"null"}]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"members":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"penalty":{"type":"integer","minimum":0,"maximum":100},"paused":{"type":"boolean"}},"required":["extensionId","position","penalty","paused"]}},"enabled":{"type":"boolean"}}},"QueuesPauseMemberRequestInput":{"type":"object","properties":{"paused":{"type":"boolean"}},"required":["paused"]},"MohCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"source":{"default":"upload","type":"string","enum":["exobyte","library","upload","ai"]},"trackPromptIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"shuffle":{"default":false,"type":"boolean"},"announcePromptIds":{"default":[],"maxItems":10,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"announceEveryS":{"anyOf":[{"type":"integer","minimum":15,"maximum":600},{"type":"null"}]},"isDefault":{"default":false,"type":"boolean"}},"required":["name"]},"MohUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"source":{"type":"string","enum":["exobyte","library","upload","ai"]},"trackPromptIds":{"maxItems":50,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"shuffle":{"type":"boolean"},"announcePromptIds":{"maxItems":10,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"announceEveryS":{"anyOf":[{"type":"integer","minimum":15,"maximum":600},{"type":"null"}]},"isDefault":{"type":"boolean"}}},"PromptsCreateTtsRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"kind":{"default":"prompt","type":"string","enum":["prompt","announcement","moh","whisper"]},"text":{"type":"string","minLength":1,"maxLength":2500},"lang":{"default":"it","type":"string","enum":["it","en","de","fr","es"]},"voiceId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"params":{"type":"object","properties":{"stability":{"type":"number","minimum":0,"maximum":1},"similarity":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speed":{"type":"number","minimum":0.7,"maximum":1.2}}}},"required":["name","text"]},"PromptsUploadRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"kind":{"default":"prompt","type":"string","enum":["prompt","announcement","moh","whisper"]},"lang":{"default":"it","type":"string","enum":["it","en","de","fr","es"]}},"required":["name"]},"PromptsUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"text":{"type":"string","minLength":1,"maxLength":2500},"lang":{"type":"string","enum":["it","en","de","fr","es"]},"voiceId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"params":{"type":"object","properties":{"stability":{"type":"number","minimum":0,"maximum":1},"similarity":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speed":{"type":"number","minimum":0.7,"maximum":1.2}}}}},"ContactsCreateRequestInput":{"type":"object","properties":{"ownerExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160},"company":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":255,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":32}},"vip":{"default":false,"type":"boolean"},"blocked":{"default":false,"type":"boolean"},"numbers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"number":{"type":"string","minLength":3,"maxLength":32},"label":{"default":"work","type":"string","enum":["mobile","work","home","fax","other"]}},"required":["number"]}}},"required":["name","numbers"]},"ContactsImportRequestInput":{"type":"object","properties":{"format":{"type":"string","enum":["csv","vcard"]},"data":{"type":"string","minLength":1,"maxLength":5000000},"ownerExtensionId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"onDuplicate":{"default":"update","type":"string","enum":["update","skip"]},"columns":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["format","data"]},"ContactsSetSettingsRequestInput":{"type":"object","properties":{"lookupEnabled":{"type":"boolean"},"lookupOrder":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["personal","company","extension"]}},"vipPrefix":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}]},"includeCompany":{"type":"boolean"},"blockedAction":{"type":"string","enum":["reject","busy","message"]},"blockedPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["lookupEnabled","lookupOrder","vipPrefix","includeCompany","blockedAction","blockedPromptId"]},"ContactsUpdateRequestInput":{"type":"object","properties":{"ownerExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160},"company":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":255,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"tags":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":32}},"vip":{"type":"boolean"},"blocked":{"type":"boolean"},"numbers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"number":{"type":"string","minLength":3,"maxLength":32},"label":{"default":"work","type":"string","enum":["mobile","work","home","fax","other"]}},"required":["number"]}}}},"VoiceNodesCreateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":64,"pattern":"^[A-Za-z0-9][A-Za-z0-9 ._-]*$"},"sipHost":{"default":null,"anyOf":[{"type":"string","maxLength":253,"pattern":"^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},{"type":"null"}]},"notes":{"default":null,"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}},"required":["name"]},"VoiceNodesUpdateRequestInput":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":64,"pattern":"^[A-Za-z0-9][A-Za-z0-9 ._-]*$"},"sipHost":{"anyOf":[{"type":"string","maxLength":253,"pattern":"^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}}},"TenantsSetVoiceNodeRequestInput":{"type":"object","properties":{"voiceNodeId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"sipHost":{"default":null,"anyOf":[{"type":"string","maxLength":253,"pattern":"^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},{"type":"null"}]}},"required":["voiceNodeId"]},"VoicesSetTenantDefaultRequestInput":{"type":"object","properties":{"voiceId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{4,64}$"},{"type":"null"}]}},"required":["voiceId"]},"VoicesSampleRequestInput":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":200},"lang":{"default":"it","type":"string","enum":["it","en","de","fr","es"]}},"required":["text"]},"Destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"extension"},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","extensionId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"ring_group"},"ringGroupId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","ringGroupId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"queue"},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","queueId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"ivr"},"ivrId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["type","ivrId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"voicemail"},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"greeting":{"type":"string","enum":["unavailable","busy","none"]}},"required":["type","extensionId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"playback"},"promptId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"then":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]}},"required":["type","promptId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"mobile"},"number":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},"confirm":{"type":"boolean"},"ringTimeS":{"type":"integer","minimum":5,"maximum":120}},"required":["type","number"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"hangup"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"busy"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"ai_assistant"},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"auto_answer"},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"notifyExtensionIds":{"maxItems":20,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"calendar"},"calendarId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"open":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"closed":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]}},"required":["type","calendarId"],"additionalProperties":false}]},"ApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","VALIDATION_ERROR","UNAUTHORIZED","INVALID_CREDENTIALS","TOTP_INVALID","TOTP_CHALLENGE_EXPIRED","TOTP_ALREADY_ENABLED","TOTP_NOT_ENABLED","TOTP_SETUP_REQUIRED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","INTERNAL_ERROR","SCOPE_MISSING","API_KEY_INVALID","API_KEY_EXPIRED","API_KEY_REVOKED","IP_NOT_ALLOWED","TENANT_REQUIRED","TENANT_SUSPENDED","LIMIT_REACHED","IN_USE","IDEMPOTENCY_CONFLICT","SERVICE_UNAVAILABLE","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","NOT_IMPLEMENTED"]},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"HealthResponse":{"type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"version":{"type":"string"},"uptime":{"type":"number","minimum":0},"time":{"type":"string"},"db":{"type":"string","enum":["up","down"]}},"required":["status","version","uptime","time","db"],"additionalProperties":false},"AuthLoginResponse":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"ok"},"user":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"},"role":{"type":"string","enum":["superadmin","tenant_admin","supervisor","user"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"tenantName":{"default":null,"type":["string","null"]},"extensionId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"totpEnabled":{"type":"boolean"}},"required":["id","email","name","role","tenantId","tenantName","extensionId","totpEnabled"],"additionalProperties":false}},"required":["status","user"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"totp_required"},"challengeToken":{"type":"string","minLength":1}},"required":["status","challengeToken"],"additionalProperties":false}]},"AuthRefreshResponse":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"},"role":{"type":"string","enum":["superadmin","tenant_admin","supervisor","user"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"tenantName":{"default":null,"type":["string","null"]},"extensionId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"totpEnabled":{"type":"boolean"}},"required":["id","email","name","role","tenantId","tenantName","extensionId","totpEnabled"],"additionalProperties":false}},"required":["user"],"additionalProperties":false},"AuthLogoutResponse":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false},"AuthMeResponse":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"},"role":{"type":"string","enum":["superadmin","tenant_admin","supervisor","user"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"tenantName":{"default":null,"type":["string","null"]},"extensionId":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"totpEnabled":{"type":"boolean"}},"required":["id","email","name","role","tenantId","tenantName","extensionId","totpEnabled"],"additionalProperties":false}},"required":["user"],"additionalProperties":false},"TenantsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"code":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","suspended","disabled"]},"maxExt":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezone":{"type":"string"},"lang":{"type":"string"},"recordDefault":{"type":"string","enum":["always","on_demand","never"]},"retentionDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"storageQuotaMb":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"aiMonthlyMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"outboundBlocks":{"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"type":"string","enum":["national_only","national_and_eu","any"]},"forwardDestinationsPolicyLocked":{"type":"boolean"},"voiceNodeId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"sipHost":{"type":["string","null"]},"suspendedReason":{"type":["string","null"]},"suspendedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"stats":{"type":"object","properties":{"extensions":{"type":"integer","minimum":0,"maximum":9007199254740991},"numbers":{"type":"integer","minimum":0,"maximum":9007199254740991},"users":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["extensions","numbers","users"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","code","name","status","maxExt","maxCalls","timezone","lang","recordDefault","retentionDays","storageQuotaMb","aiMonthlyMinutes","outboundBlocks","forwardDestinationsPolicy","forwardDestinationsPolicyLocked","voiceNodeId","sipHost","suspendedReason","suspendedAt","stats","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"TenantsCreateResponse":{"type":"object","properties":{"tenant":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"code":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","suspended","disabled"]},"maxExt":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezone":{"type":"string"},"lang":{"type":"string"},"recordDefault":{"type":"string","enum":["always","on_demand","never"]},"retentionDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"storageQuotaMb":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"aiMonthlyMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"outboundBlocks":{"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"type":"string","enum":["national_only","national_and_eu","any"]},"forwardDestinationsPolicyLocked":{"type":"boolean"},"voiceNodeId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"sipHost":{"type":["string","null"]},"suspendedReason":{"type":["string","null"]},"suspendedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"stats":{"type":"object","properties":{"extensions":{"type":"integer","minimum":0,"maximum":9007199254740991},"numbers":{"type":"integer","minimum":0,"maximum":9007199254740991},"users":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["extensions","numbers","users"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","code","name","status","maxExt","maxCalls","timezone","lang","recordDefault","retentionDays","storageQuotaMb","aiMonthlyMinutes","outboundBlocks","forwardDestinationsPolicy","forwardDestinationsPolicyLocked","voiceNodeId","sipHost","suspendedReason","suspendedAt","stats","createdAt","updatedAt"],"additionalProperties":false},"admin":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"initialPassword":{"type":"string","minLength":12}},"required":["id","email","initialPassword"],"additionalProperties":false},{"type":"null"}]}},"required":["tenant","admin"],"additionalProperties":false},"TenantsCurrentResponse":{"type":"object","properties":{"tenant":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"code":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","suspended","disabled"]},"maxExt":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezone":{"type":"string"},"lang":{"type":"string"}},"required":["id","code","name","status","maxExt","maxCalls","timezone","lang"],"additionalProperties":false},"impersonated":{"type":"boolean"},"stats":{"type":"object","properties":{"extensions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["extensions"],"additionalProperties":false}},"required":["tenant","impersonated","stats"],"additionalProperties":false},"TenantsGetResponse":{"type":"object","properties":{"tenant":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"code":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","suspended","disabled"]},"maxExt":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezone":{"type":"string"},"lang":{"type":"string"},"recordDefault":{"type":"string","enum":["always","on_demand","never"]},"retentionDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"storageQuotaMb":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"aiMonthlyMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"outboundBlocks":{"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"type":"string","enum":["national_only","national_and_eu","any"]},"forwardDestinationsPolicyLocked":{"type":"boolean"},"voiceNodeId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"sipHost":{"type":["string","null"]},"suspendedReason":{"type":["string","null"]},"suspendedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"stats":{"type":"object","properties":{"extensions":{"type":"integer","minimum":0,"maximum":9007199254740991},"numbers":{"type":"integer","minimum":0,"maximum":9007199254740991},"users":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["extensions","numbers","users"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","code","name","status","maxExt","maxCalls","timezone","lang","recordDefault","retentionDays","storageQuotaMb","aiMonthlyMinutes","outboundBlocks","forwardDestinationsPolicy","forwardDestinationsPolicyLocked","voiceNodeId","sipHost","suspendedReason","suspendedAt","stats","createdAt","updatedAt"],"additionalProperties":false}},"required":["tenant"],"additionalProperties":false},"TenantsImpersonateResponse":{"type":"object","properties":{"tenant":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"code":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","suspended","disabled"]},"maxExt":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezone":{"type":"string"},"lang":{"type":"string"}},"required":["id","code","name","status","maxExt","maxCalls","timezone","lang"],"additionalProperties":false},"header":{"type":"string","const":"X-Tenant-Id"},"value":{"type":"string"}},"required":["tenant","header","value"],"additionalProperties":false},"FeatureCodesGetSettingsResponse":{"type":"object","properties":{"hasOverridePin":{"type":"boolean"},"overrideExtensions":{"type":"array","items":{"type":"string"}}},"required":["hasOverridePin","overrideExtensions"],"additionalProperties":false},"ExtensionsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"avatarUrl":{"type":["string","null"]},"enabled":{"type":"boolean"},"sip":{"type":"object","properties":{"username":{"type":"string"},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"transport":{"type":"string","enum":["udp","tcp","tls"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"maxContacts":{"type":"integer","minimum":1,"maximum":5},"callWaiting":{"type":"boolean"},"permit":{"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"advanced":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]}},"required":["username","dtmfMode","transport","tlsEnabled","webrtcEnabled","maxContacts","callWaiting","permit"],"additionalProperties":false},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"voicemail":{"type":"object","properties":{"enabled":{"type":"boolean"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"hasPin":{"type":"boolean"}},"required":["enabled","email","attachAudio","hasPin"],"additionalProperties":false},"followMe":{"type":"object","properties":{"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20},"mode":{"type":"string","enum":["sequential","simultaneous"]},"confirm":{"type":"boolean"},"when":{"type":"string","enum":["always","open","closed"]},"callerId":{"type":"string","enum":["caller","did"]}},"required":["enabled","number","rings","mode","confirm","when","callerId"],"additionalProperties":false},"forwarding":{"type":"object","properties":{"noAnswer":{"type":"object","properties":{"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20}},"required":["destination","rings"],"additionalProperties":false},"busy":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"unavailable":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"busyCheck":{"type":"boolean"}},"required":["noAnswer","busy","unavailable","busyCheck"],"additionalProperties":false},"canOverrideHours":{"type":"boolean"},"dnd":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["busy","voicemail","forward"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"setAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["panel","api","phone","expiry"]},{"type":"null"}]}},"required":["enabled","mode","expiresAt","setAt","source"],"additionalProperties":false},"availability":{"type":"object","properties":{"scheduleMode":{"type":"string","enum":["always","tenant","calendar"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"force":{"type":"string","enum":["auto","on","off"]},"forceExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSetAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSource":{"anyOf":[{"type":"string","enum":["phone","panel","api"]},{"type":"null"}]},"available":{"type":"boolean"}},"required":["scheduleMode","calendarId","force","forceExpiresAt","forceSetAt","forceSource","available"],"additionalProperties":false},"registered":{"type":["boolean","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","email","avatarUrl","enabled","sip","recordMode","voicemail","followMe","forwarding","canOverrideHours","dnd","availability","registered","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"ExtensionsCreateResponse":{"type":"object","properties":{"extension":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"avatarUrl":{"type":["string","null"]},"enabled":{"type":"boolean"},"sip":{"type":"object","properties":{"username":{"type":"string"},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"transport":{"type":"string","enum":["udp","tcp","tls"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"maxContacts":{"type":"integer","minimum":1,"maximum":5},"callWaiting":{"type":"boolean"},"permit":{"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"advanced":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]}},"required":["username","dtmfMode","transport","tlsEnabled","webrtcEnabled","maxContacts","callWaiting","permit"],"additionalProperties":false},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"voicemail":{"type":"object","properties":{"enabled":{"type":"boolean"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"hasPin":{"type":"boolean"}},"required":["enabled","email","attachAudio","hasPin"],"additionalProperties":false},"followMe":{"type":"object","properties":{"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20},"mode":{"type":"string","enum":["sequential","simultaneous"]},"confirm":{"type":"boolean"},"when":{"type":"string","enum":["always","open","closed"]},"callerId":{"type":"string","enum":["caller","did"]}},"required":["enabled","number","rings","mode","confirm","when","callerId"],"additionalProperties":false},"forwarding":{"type":"object","properties":{"noAnswer":{"type":"object","properties":{"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20}},"required":["destination","rings"],"additionalProperties":false},"busy":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"unavailable":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"busyCheck":{"type":"boolean"}},"required":["noAnswer","busy","unavailable","busyCheck"],"additionalProperties":false},"canOverrideHours":{"type":"boolean"},"dnd":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["busy","voicemail","forward"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"setAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["panel","api","phone","expiry"]},{"type":"null"}]}},"required":["enabled","mode","expiresAt","setAt","source"],"additionalProperties":false},"availability":{"type":"object","properties":{"scheduleMode":{"type":"string","enum":["always","tenant","calendar"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"force":{"type":"string","enum":["auto","on","off"]},"forceExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSetAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSource":{"anyOf":[{"type":"string","enum":["phone","panel","api"]},{"type":"null"}]},"available":{"type":"boolean"}},"required":["scheduleMode","calendarId","force","forceExpiresAt","forceSetAt","forceSource","available"],"additionalProperties":false},"registered":{"type":["boolean","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","email","avatarUrl","enabled","sip","recordMode","voicemail","followMe","forwarding","canOverrideHours","dnd","availability","registered","createdAt","updatedAt"],"additionalProperties":false},"sipPassword":{"type":"string"}},"required":["extension","sipPassword"],"additionalProperties":false},"ExtensionsGetResponse":{"type":"object","properties":{"extension":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"avatarUrl":{"type":["string","null"]},"enabled":{"type":"boolean"},"sip":{"type":"object","properties":{"username":{"type":"string"},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"transport":{"type":"string","enum":["udp","tcp","tls"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"maxContacts":{"type":"integer","minimum":1,"maximum":5},"callWaiting":{"type":"boolean"},"permit":{"type":"array","items":{"anyOf":[{"type":"string","format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"},{"type":"string","format":"ipv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$"},{"type":"string","format":"cidrv4","pattern":"^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$"},{"type":"string","format":"cidrv6","pattern":"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"}]}},"advanced":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]}},"required":["username","dtmfMode","transport","tlsEnabled","webrtcEnabled","maxContacts","callWaiting","permit"],"additionalProperties":false},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"voicemail":{"type":"object","properties":{"enabled":{"type":"boolean"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"hasPin":{"type":"boolean"}},"required":["enabled","email","attachAudio","hasPin"],"additionalProperties":false},"followMe":{"type":"object","properties":{"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20},"mode":{"type":"string","enum":["sequential","simultaneous"]},"confirm":{"type":"boolean"},"when":{"type":"string","enum":["always","open","closed"]},"callerId":{"type":"string","enum":["caller","did"]}},"required":["enabled","number","rings","mode","confirm","when","callerId"],"additionalProperties":false},"forwarding":{"type":"object","properties":{"noAnswer":{"type":"object","properties":{"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"rings":{"type":"integer","minimum":1,"maximum":20}},"required":["destination","rings"],"additionalProperties":false},"busy":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"unavailable":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"busyCheck":{"type":"boolean"}},"required":["noAnswer","busy","unavailable","busyCheck"],"additionalProperties":false},"canOverrideHours":{"type":"boolean"},"dnd":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["busy","voicemail","forward"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"setAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["panel","api","phone","expiry"]},{"type":"null"}]}},"required":["enabled","mode","expiresAt","setAt","source"],"additionalProperties":false},"availability":{"type":"object","properties":{"scheduleMode":{"type":"string","enum":["always","tenant","calendar"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"force":{"type":"string","enum":["auto","on","off"]},"forceExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSetAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSource":{"anyOf":[{"type":"string","enum":["phone","panel","api"]},{"type":"null"}]},"available":{"type":"boolean"}},"required":["scheduleMode","calendarId","force","forceExpiresAt","forceSetAt","forceSource","available"],"additionalProperties":false},"registered":{"type":["boolean","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","email","avatarUrl","enabled","sip","recordMode","voicemail","followMe","forwarding","canOverrideHours","dnd","availability","registered","createdAt","updatedAt"],"additionalProperties":false}},"required":["extension"],"additionalProperties":false},"ExtensionsGetDndResponse":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"dnd":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["busy","voicemail","forward"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"setAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["panel","api","phone","expiry"]},{"type":"null"}]}},"required":["enabled","mode","expiresAt","setAt","source"],"additionalProperties":false}},"required":["extensionId","number","dnd"],"additionalProperties":false},"ExtensionsGetAvailabilityResponse":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"availability":{"type":"object","properties":{"scheduleMode":{"type":"string","enum":["always","tenant","calendar"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"force":{"type":"string","enum":["auto","on","off"]},"forceExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSetAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"forceSource":{"anyOf":[{"type":"string","enum":["phone","panel","api"]},{"type":"null"}]},"available":{"type":"boolean"}},"required":["scheduleMode","calendarId","force","forceExpiresAt","forceSetAt","forceSource","available"],"additionalProperties":false}},"required":["extensionId","number","availability"],"additionalProperties":false},"ExtensionsSipCredentialsResponse":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"},"domain":{"type":"string"},"wssUrl":{"type":"string"},"ports":{"type":"object","properties":{"udp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tcp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["udp","tcp","tls"],"additionalProperties":false}},"required":["username","password","domain","wssUrl","ports"],"additionalProperties":false},"TrunksApprovalsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"trunk":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"enabled":{"type":"boolean"},"registration":{"type":"string","enum":["outbound","inbound","none"]},"host":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535},"transport":{"type":"string","enum":["udp","tcp","tls"]},"username":{"type":["string","null"]},"hasSecret":{"type":"boolean"},"fromUser":{"type":["string","null"]},"fromDomain":{"type":["string","null"]},"outboundProxy":{"type":["string","null"]},"allowedHosts":{"type":"array","items":{"type":"string"}},"qualify":{"type":"boolean"},"qualifyFrequencyS":{"type":"integer","minimum":10,"maximum":3600},"callerIdExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["from","pai","rpid","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"],"additionalProperties":false},"didExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["to","ruri","diversion","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"],"additionalProperties":false},"debugCidDid":{"type":"boolean"},"maxChannels":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"codecs":{"minItems":1,"type":"array","items":{"type":"string","enum":["alaw","ulaw","g722","opus","g729","gsm"]}},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"retryIntervalS":{"type":"integer","minimum":10,"maximum":3600},"forbiddenRetryIntervalS":{"type":"integer","minimum":10,"maximum":86400},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"approval":{"type":"object","properties":{"status":{"type":"string","enum":["approved","pending_approval","rejected"]},"reason":{"type":["string","null"]},"requestedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"decidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","reason","requestedAt","decidedAt"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","enabled","registration","host","port","transport","username","hasSecret","fromUser","fromDomain","outboundProxy","allowedHosts","qualify","qualifyFrequencyS","callerIdExtraction","didExtraction","debugCidDid","maxChannels","codecs","dtmfMode","retryIntervalS","forbiddenRetryIntervalS","status","approval","createdAt","updatedAt"],"additionalProperties":false},"tenantName":{"type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["create","update","dns"]},{"type":"null"}]},"overlaps":{"type":"array","items":{"type":"object","properties":{"network":{"type":"string"},"host":{"type":"string"},"otherTrunkId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"otherTrunkName":{"type":"string"},"otherTenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"otherTenantName":{"type":["string","null"]},"otherNetwork":{"type":"string"}},"required":["network","host","otherTrunkId","otherTrunkName","otherTenantId","otherTenantName","otherNetwork"],"additionalProperties":false}}},"required":["trunk","tenantName","source","overlaps"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"TrunksApproveResponse":{"type":"object","properties":{"trunk":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"enabled":{"type":"boolean"},"registration":{"type":"string","enum":["outbound","inbound","none"]},"host":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535},"transport":{"type":"string","enum":["udp","tcp","tls"]},"username":{"type":["string","null"]},"hasSecret":{"type":"boolean"},"fromUser":{"type":["string","null"]},"fromDomain":{"type":["string","null"]},"outboundProxy":{"type":["string","null"]},"allowedHosts":{"type":"array","items":{"type":"string"}},"qualify":{"type":"boolean"},"qualifyFrequencyS":{"type":"integer","minimum":10,"maximum":3600},"callerIdExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["from","pai","rpid","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"],"additionalProperties":false},"didExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["to","ruri","diversion","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"],"additionalProperties":false},"debugCidDid":{"type":"boolean"},"maxChannels":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"codecs":{"minItems":1,"type":"array","items":{"type":"string","enum":["alaw","ulaw","g722","opus","g729","gsm"]}},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"retryIntervalS":{"type":"integer","minimum":10,"maximum":3600},"forbiddenRetryIntervalS":{"type":"integer","minimum":10,"maximum":86400},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"approval":{"type":"object","properties":{"status":{"type":"string","enum":["approved","pending_approval","rejected"]},"reason":{"type":["string","null"]},"requestedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"decidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","reason","requestedAt","decidedAt"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","enabled","registration","host","port","transport","username","hasSecret","fromUser","fromDomain","outboundProxy","allowedHosts","qualify","qualifyFrequencyS","callerIdExtraction","didExtraction","debugCidDid","maxChannels","codecs","dtmfMode","retryIntervalS","forbiddenRetryIntervalS","status","approval","createdAt","updatedAt"],"additionalProperties":false},"overlaps":{"type":"array","items":{"type":"object","properties":{"network":{"type":"string"},"host":{"type":"string"},"otherTrunkId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"otherTrunkName":{"type":"string"},"otherTenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"otherTenantName":{"type":["string","null"]},"otherNetwork":{"type":"string"}},"required":["network","host","otherTrunkId","otherTrunkName","otherTenantId","otherTenantName","otherNetwork"],"additionalProperties":false}}},"required":["trunk"],"additionalProperties":false},"TrunksListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"enabled":{"type":"boolean"},"registration":{"type":"string","enum":["outbound","inbound","none"]},"host":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535},"transport":{"type":"string","enum":["udp","tcp","tls"]},"username":{"type":["string","null"]},"hasSecret":{"type":"boolean"},"fromUser":{"type":["string","null"]},"fromDomain":{"type":["string","null"]},"outboundProxy":{"type":["string","null"]},"allowedHosts":{"type":"array","items":{"type":"string"}},"qualify":{"type":"boolean"},"qualifyFrequencyS":{"type":"integer","minimum":10,"maximum":3600},"callerIdExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["from","pai","rpid","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"],"additionalProperties":false},"didExtraction":{"type":"object","properties":{"source":{"type":"string","enum":["to","ruri","diversion","header"]},"header":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9-]{1,64}$"},{"type":"null"}]},"regex":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["source","header","regex"],"additionalProperties":false},"debugCidDid":{"type":"boolean"},"maxChannels":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"codecs":{"minItems":1,"type":"array","items":{"type":"string","enum":["alaw","ulaw","g722","opus","g729","gsm"]}},"dtmfMode":{"type":"string","enum":["auto","rfc4733","info","inband"]},"retryIntervalS":{"type":"integer","minimum":10,"maximum":3600},"forbiddenRetryIntervalS":{"type":"integer","minimum":10,"maximum":86400},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"approval":{"type":"object","properties":{"status":{"type":"string","enum":["approved","pending_approval","rejected"]},"reason":{"type":["string","null"]},"requestedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"decidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","reason","requestedAt","decidedAt"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","enabled","registration","host","port","transport","username","hasSecret","fromUser","fromDomain","outboundProxy","allowedHosts","qualify","qualifyFrequencyS","callerIdExtraction","didExtraction","debugCidDid","maxChannels","codecs","dtmfMode","retryIntervalS","forbiddenRetryIntervalS","status","approval","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"NumbersListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"description":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"tenantName":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","description","tenantId","trunkId","destination","recordMode","enabled","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"NumbersCreateResponse":{"type":"object","properties":{"number":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"description":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"tenantName":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","description","tenantId","trunkId","destination","recordMode","enabled","createdAt","updatedAt"],"additionalProperties":false}},"required":["number"],"additionalProperties":false},"NumbersBulkCreateResponse":{"type":"object","properties":{"created":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"array","items":{"type":"string"}}},"required":["created","skipped"],"additionalProperties":false},"InboundRoutesListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"numberId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"didPattern":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerPattern":{"type":["string","null"]},"priority":{"type":"integer","minimum":1,"maximum":10000},"enabled":{"type":"boolean"},"steps":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":0,"maximum":19},"timeoutS":{"type":"integer","minimum":5,"maximum":600},"destination":{"$ref":"#/components/schemas/Destination"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["position","timeoutS","destination","id"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","numberId","didPattern","trunkId","callerPattern","priority","enabled","steps","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"InboundRoutesCreateResponse":{"type":"object","properties":{"route":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"numberId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"didPattern":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerPattern":{"type":["string","null"]},"priority":{"type":"integer","minimum":1,"maximum":10000},"enabled":{"type":"boolean"},"steps":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":0,"maximum":19},"timeoutS":{"type":"integer","minimum":5,"maximum":600},"destination":{"$ref":"#/components/schemas/Destination"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["position","timeoutS","destination","id"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","numberId","didPattern","trunkId","callerPattern","priority","enabled","steps","createdAt","updatedAt"],"additionalProperties":false}},"required":["route"],"additionalProperties":false},"InboundRoutesReorderResponse":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false},"OutboundRoutesListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"beginsWith":{"type":"string"},"restDigits":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"trim":{"type":"integer","minimum":0,"maximum":20},"prepend":{"type":"string"},"callerId":{"type":["string","null"]},"priority":{"type":"integer","minimum":1,"maximum":10000},"enabled":{"type":"boolean"},"trunkIds":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","beginsWith","restDigits","trim","prepend","callerId","priority","enabled","trunkIds","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"OutboundRoutesCreateResponse":{"type":"object","properties":{"route":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"beginsWith":{"type":"string"},"restDigits":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"trim":{"type":"integer","minimum":0,"maximum":20},"prepend":{"type":"string"},"callerId":{"type":["string","null"]},"priority":{"type":"integer","minimum":1,"maximum":10000},"enabled":{"type":"boolean"},"trunkIds":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","beginsWith","restDigits","trim","prepend","callerId","priority","enabled","trunkIds","createdAt","updatedAt"],"additionalProperties":false}},"required":["route"],"additionalProperties":false},"OutboundRoutesGetPolicyResponse":{"type":"object","properties":{"blocked":{"type":"array","items":{"type":"string","enum":["international","premium","satellite","special"]}},"forwardDestinationsPolicy":{"type":"string","enum":["national_only","national_and_eu","any"]},"forwardDestinationsPolicyLocked":{"type":"boolean"}},"required":["blocked","forwardDestinationsPolicy","forwardDestinationsPolicyLocked"],"additionalProperties":false},"OutboundRoutesSimulateResponse":{"type":"object","properties":{"allowed":{"type":"boolean"},"blockedBy":{"anyOf":[{"type":"string","enum":["international","premium","satellite","special"]},{"type":"null"}]},"routeId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"dialed":{"type":["string","null"]},"trunkIds":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["allowed","blockedBy","routeId","dialed","trunkIds"],"additionalProperties":false},"VoicemailGetSettingsResponse":{"type":"object","properties":{"emailFromName":{"type":"string","maxLength":120},"attachAudioDefault":{"type":"boolean"},"transcribeDefault":{"type":"boolean"},"maxMessageS":{"type":"integer","minimum":10,"maximum":600},"maxMessages":{"type":"integer","minimum":1,"maximum":1000},"minMessageS":{"type":"integer","minimum":0,"maximum":10},"language":{"type":"string","enum":["it","en"]}},"required":["emailFromName","attachAudioDefault","transcribeDefault","maxMessageS","maxMessages","minMessageS","language"],"additionalProperties":false},"VoicemailListBoxesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionNumber":{"type":"string"},"extensionName":{"type":"string"},"enabled":{"type":"boolean"},"hasPin":{"type":"boolean"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"deleteAfterEmail":{"type":"boolean"},"transcribe":{"type":"boolean"},"greeting":{"type":"string","enum":["default","custom"]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"maxMessageS":{"anyOf":[{"type":"integer","minimum":10,"maximum":600},{"type":"null"}]},"counts":{"type":"object","properties":{"new":{"type":"integer","minimum":0,"maximum":9007199254740991},"old":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["new","old"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","extensionId","extensionNumber","extensionName","enabled","hasPin","email","attachAudio","deleteAfterEmail","transcribe","greeting","greetingPromptId","maxMessageS","counts","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"VoicemailGetBoxResponse":{"type":"object","properties":{"box":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionNumber":{"type":"string"},"extensionName":{"type":"string"},"enabled":{"type":"boolean"},"hasPin":{"type":"boolean"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"attachAudio":{"type":"boolean"},"deleteAfterEmail":{"type":"boolean"},"transcribe":{"type":"boolean"},"greeting":{"type":"string","enum":["default","custom"]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"maxMessageS":{"anyOf":[{"type":"integer","minimum":10,"maximum":600},{"type":"null"}]},"counts":{"type":"object","properties":{"new":{"type":"integer","minimum":0,"maximum":9007199254740991},"old":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["new","old"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","extensionId","extensionNumber","extensionName","enabled","hasPin","email","attachAudio","deleteAfterEmail","transcribe","greeting","greetingPromptId","maxMessageS","counts","updatedAt"],"additionalProperties":false}},"required":["box"],"additionalProperties":false},"VoicemailListMessagesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"folder":{"type":"string","enum":["INBOX","Old","Urgent"]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"receivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"linkedid":{"type":["string","null"]},"transcript":{"type":["string","null"]}},"required":["id","folder","callerNumber","callerName","durationS","receivedAt","linkedid","transcript"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"CdrListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"linkedid":{"type":"string"},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"calledNumber":{"type":["string","null"]},"did":{"type":["string","null"]},"extensions":{"type":"array","items":{"type":"string"}},"disposition":{"type":"string","enum":["answered","no_answer","busy","failed","congestion"]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"billsec":{"type":"integer","minimum":0,"maximum":9007199254740991},"legs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hasRecording":{"type":"boolean"},"tenantCode":{"type":["string","null"]}},"required":["linkedid","start","end","direction","callerNumber","callerName","calledNumber","did","extensions","disposition","durationS","billsec","legs","hasRecording"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"CdrGetResponse":{"type":"object","properties":{"call":{"type":"object","properties":{"linkedid":{"type":"string"},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"calledNumber":{"type":["string","null"]},"did":{"type":["string","null"]},"extensions":{"type":"array","items":{"type":"string"}},"disposition":{"type":"string","enum":["answered","no_answer","busy","failed","congestion"]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"billsec":{"type":"integer","minimum":0,"maximum":9007199254740991},"legs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hasRecording":{"type":"boolean"},"tenantCode":{"type":["string","null"]}},"required":["linkedid","start","end","direction","callerNumber","callerName","calledNumber","did","extensions","disposition","durationS","billsec","legs","hasRecording"],"additionalProperties":false},"legs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"uniqueid":{"type":"string"},"linkedid":{"type":"string"},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"answer":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"end":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"billsec":{"type":"integer","minimum":0,"maximum":9007199254740991},"src":{"type":["string","null"]},"dst":{"type":["string","null"]},"clid":{"type":["string","null"]},"channel":{"type":["string","null"]},"dstchannel":{"type":["string","null"]},"lastapp":{"type":["string","null"]},"lastdata":{"type":["string","null"]},"disposition":{"anyOf":[{"type":"string","enum":["answered","no_answer","busy","failed","congestion"]},{"type":"null"}]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"did":{"type":["string","null"]},"recordingId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","uniqueid","linkedid","sequence","start","answer","end","durationS","billsec","src","dst","clid","channel","dstchannel","lastapp","lastdata","disposition","direction","did","recordingId"],"additionalProperties":false}}},"required":["call","legs"],"additionalProperties":false},"ApiKeysListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"prefix":{"type":"string"},"env":{"type":"string","enum":["live","test"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"scopes":{"type":"array","items":{"type":"string","enum":["*","extensions:read","extensions:write","trunks:read","trunks:write","numbers:read","numbers:write","inbound_routes:read","inbound_routes:write","outbound_routes:read","outbound_routes:write","voicemail:read","voicemail:write","cdr:read","api_keys:read","api_keys:write","live:read","calls:control","calendars:read","calendars:write","recordings:read","recordings:write","ivrs:read","ivrs:write","ring_groups:read","ring_groups:write","queues:read","queues:write","media:read","media:write","contacts:read","contacts:write","notifications:read","notifications:write","webhooks:read","webhooks:write","tenants:*","tenants:read","tenants:write","tenants:impersonate","security:*","security:read","security:write","system:*","system:read","system:write"]}},"allowedIps":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedIp":{"type":["string","null"]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"rotatedFromId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","expired","revoked"]},"createdBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","prefix","env","tenantId","scopes","allowedIps","expiresAt","lastUsedAt","lastUsedIp","revokedAt","rotatedFromId","status","createdBy","createdAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"ApiKeysCreateResponse":{"type":"object","properties":{"apiKey":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"prefix":{"type":"string"},"env":{"type":"string","enum":["live","test"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"scopes":{"type":"array","items":{"type":"string","enum":["*","extensions:read","extensions:write","trunks:read","trunks:write","numbers:read","numbers:write","inbound_routes:read","inbound_routes:write","outbound_routes:read","outbound_routes:write","voicemail:read","voicemail:write","cdr:read","api_keys:read","api_keys:write","live:read","calls:control","calendars:read","calendars:write","recordings:read","recordings:write","ivrs:read","ivrs:write","ring_groups:read","ring_groups:write","queues:read","queues:write","media:read","media:write","contacts:read","contacts:write","notifications:read","notifications:write","webhooks:read","webhooks:write","tenants:*","tenants:read","tenants:write","tenants:impersonate","security:*","security:read","security:write","system:*","system:read","system:write"]}},"allowedIps":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedIp":{"type":["string","null"]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"rotatedFromId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","expired","revoked"]},"createdBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","prefix","env","tenantId","scopes","allowedIps","expiresAt","lastUsedAt","lastUsedIp","revokedAt","rotatedFromId","status","createdBy","createdAt"],"additionalProperties":false},"secret":{"type":"string","pattern":"^exo_(live|test)_[A-Za-z0-9]{40}$"}},"required":["apiKey","secret"],"additionalProperties":false},"ApiKeysGetResponse":{"type":"object","properties":{"apiKey":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"prefix":{"type":"string"},"env":{"type":"string","enum":["live","test"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"scopes":{"type":"array","items":{"type":"string","enum":["*","extensions:read","extensions:write","trunks:read","trunks:write","numbers:read","numbers:write","inbound_routes:read","inbound_routes:write","outbound_routes:read","outbound_routes:write","voicemail:read","voicemail:write","cdr:read","api_keys:read","api_keys:write","live:read","calls:control","calendars:read","calendars:write","recordings:read","recordings:write","ivrs:read","ivrs:write","ring_groups:read","ring_groups:write","queues:read","queues:write","media:read","media:write","contacts:read","contacts:write","notifications:read","notifications:write","webhooks:read","webhooks:write","tenants:*","tenants:read","tenants:write","tenants:impersonate","security:*","security:read","security:write","system:*","system:read","system:write"]}},"allowedIps":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedIp":{"type":["string","null"]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"rotatedFromId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","expired","revoked"]},"createdBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","prefix","env","tenantId","scopes","allowedIps","expiresAt","lastUsedAt","lastUsedIp","revokedAt","rotatedFromId","status","createdBy","createdAt"],"additionalProperties":false}},"required":["apiKey"],"additionalProperties":false},"ApiKeysUsageResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"ts":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"method":{"type":"string"},"route":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ip":{"type":"string"},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","ts","method","route","status","ip","durationMs"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"ApiKeysUsageStatsResponse":{"type":"object","properties":{"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"requests":{"type":"integer","minimum":0,"maximum":9007199254740991},"errors":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["date","requests","errors"],"additionalProperties":false}}},"required":["days"],"additionalProperties":false},"SecuritySummaryResponse":{"type":"object","properties":{"periodHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"blockedAttempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"byExtension":{"type":"array","items":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"blockedAttempts":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["extensionId","number","blockedAttempts"],"additionalProperties":false}}},"required":["periodHours","blockedAttempts","byExtension"],"additionalProperties":false},"SecurityStatusResponse":{"type":"object","properties":{"secd":{"type":"string","enum":["up","down"]},"fail2ban":{"type":"string","enum":["up","down","unknown"]},"nftables":{"type":"string","enum":["up","down","unknown"]},"bannedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"jails":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]},"enabled":{"type":"boolean"},"currentlyFailed":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalFailed":{"type":"integer","minimum":0,"maximum":9007199254740991},"currentlyBanned":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalBanned":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","enabled","currentlyFailed","totalFailed","currentlyBanned","totalBanned"],"additionalProperties":false}},"attemptsByHour":{"type":"array","items":{"type":"object","properties":{"hour":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hour","count"],"additionalProperties":false}},"attemptsByCountry":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["country","count"],"additionalProperties":false}},"geo":{"type":"object","properties":{"databaseUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"type":["string","null"]}},"required":["databaseUpdatedAt","source"],"additionalProperties":false}},"required":["secd","fail2ban","nftables","bannedCount","jails","attemptsByHour","attemptsByCountry","geo"],"additionalProperties":false},"SecurityBansResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string"},"jail":{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]},"country":{"type":["string","null"]},"reason":{"type":["string","null"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"bannedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["ip","jail","country","reason","attempts","bannedAt","expiresAt","tenantId"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"SecurityJailsResponse":{"type":"object","properties":{"jails":{"type":"array","items":{"$ref":"#/components/schemas/SecurityUpdateJailResponse"}}},"required":["jails"],"additionalProperties":false},"SecurityUpdateJailResponse":{"type":"object","properties":{"name":{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]},"enabled":{"type":"boolean"},"maxRetry":{"type":"integer","minimum":1,"maximum":100},"findTimeS":{"type":"integer","minimum":10,"maximum":604800},"banTimeS":{"type":"integer","minimum":60,"maximum":31536000},"banTimeIncrement":{"type":"boolean"},"banTimeFactor":{"type":"number","minimum":1,"maximum":100},"banTimeMaxS":{"anyOf":[{"type":"integer","minimum":60,"maximum":9007199254740991},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["name","enabled","maxRetry","findTimeS","banTimeS","banTimeIncrement","banTimeFactor","banTimeMaxS","updatedAt"],"additionalProperties":false},"SecurityGeoResponse":{"type":"object","properties":{"services":{"type":"array","items":{"$ref":"#/components/schemas/SecurityUpdateGeoResponse"}},"databaseUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["services","databaseUpdatedAt"],"additionalProperties":false},"SecurityUpdateGeoResponse":{"type":"object","properties":{"service":{"type":"string","enum":["sip","webrtc","panel","api","ssh"]},"enabled":{"type":"boolean"},"allowedCountries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"action":{"type":"string","enum":["drop_and_ban","drop"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["service","enabled","allowedCountries","action","updatedAt"],"additionalProperties":false},"SecurityWhitelistResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SecurityAddWhitelistResponse"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"SecurityAddWhitelistResponse":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cidr":{"type":["string","null"]},"country":{"type":["string","null"]},"label":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"source":{"type":"string","enum":["manual","trunk","exobyte","ai","travel"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","cidr","country","label","tenantId","extensionId","source","expiresAt","createdAt"],"additionalProperties":false},"SecurityGetSettingsResponse":{"type":"object","properties":{"sipRateLimitPerSec":{"type":"integer","minimum":1,"maximum":1000},"sipRateBurst":{"type":"integer","minimum":1,"maximum":5000},"blockedUserAgents":{"maxItems":200,"type":"array","items":{"type":"string","minLength":2,"maxLength":64}},"alertEmail":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"alertOnTenantIpBan":{"type":"boolean"},"alertOnAttackBurst":{"type":"boolean"}},"required":["sipRateLimitPerSec","sipRateBurst","blockedUserAgents","alertEmail","alertOnTenantIpBan","alertOnAttackBurst"],"additionalProperties":false},"SecurityLogsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ts":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"source":{"type":"string","enum":["asterisk","fail2ban","geoip","panel","api","audit"]},"level":{"type":"string","enum":["info","warning","error"]},"ip":{"type":["string","null"]},"country":{"type":["string","null"]},"jail":{"anyOf":[{"type":"string","enum":["asterisk-auth","asterisk-scan","asterisk-flood","asterisk-ami","exopbx-panel","exopbx-api","sshd","manual"]},{"type":"null"}]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["id","ts","source","level","ip","country","jail","message","details"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"SystemStatusResponse":{"type":"object","properties":{"version":{"type":"string"},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["asterisk","exopbx-api","exopbx-engine","exopbx-worker","exopbx-secd","mariadb","redis","caddy","fail2ban"]},"state":{"type":"string","enum":["up","down","degraded","unknown"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"detail":{"type":["string","null"]}},"required":["name","state","since","detail"],"additionalProperties":false}},"asterisk":{"type":"object","properties":{"version":{"type":["string","null"]},"uptimeS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReloadAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"activeChannels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"activeCalls":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"registeredEndpoints":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["version","uptimeS","lastReloadAt","activeChannels","activeCalls","registeredEndpoints"],"additionalProperties":false},"host":{"type":"object","properties":{"loadAvg":{"type":"array","items":{"type":"number"}},"memTotalBytes":{"type":"number"},"memFreeBytes":{"type":"number"},"disks":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"totalBytes":{"type":"number"},"freeBytes":{"type":"number"}},"required":["path","totalBytes","freeBytes"],"additionalProperties":false}}},"required":["loadAvg","memTotalBytes","memFreeBytes","disks"],"additionalProperties":false},"reload":{"type":"object","properties":{"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"running":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastFinishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastError":{"type":["string","null"]}},"required":["pending","running","lastFinishedAt","lastError"],"additionalProperties":false}},"required":["version","services","asterisk","host","reload"],"additionalProperties":false},"SystemReloadResponse":{"type":"object","properties":{"job":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"scope":{"type":"string","enum":["auto","pjsip","dialplan","queues","moh","voicemail","all","restart"]},"reason":{"type":"string"},"status":{"type":"string","enum":["pending","running","done","skipped","failed"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"actions":{"type":"array","items":{"type":"string"}},"error":{"type":["string","null"]},"requestedBy":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"notBefore":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","scope","reason","status","attempts","actions","error","requestedBy","notBefore","startedAt","finishedAt","createdAt"],"additionalProperties":false}},"required":["job"],"additionalProperties":false},"SystemReloadJobsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"scope":{"type":"string","enum":["auto","pjsip","dialplan","queues","moh","voicemail","all","restart"]},"reason":{"type":"string"},"status":{"type":"string","enum":["pending","running","done","skipped","failed"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"actions":{"type":"array","items":{"type":"string"}},"error":{"type":["string","null"]},"requestedBy":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"notBefore":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","scope","reason","status","attempts","actions","error","requestedBy","notBefore","startedAt","finishedAt","createdAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"LiveSnapshotResponse":{"type":"object","properties":{"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"channels":{"type":"array","items":{"type":"object","properties":{"uniqueid":{"type":"string"},"linkedid":{"type":"string"},"channel":{"type":"string"},"state":{"type":"string","enum":["down","ring","ringing","up","busy","dialing","unknown"]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"connectedNumber":{"type":["string","null"]},"connectedName":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionNumber":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"queueId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"application":{"type":["string","null"]},"recording":{"type":"boolean"},"onHold":{"type":"boolean"},"bridgedTo":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"answeredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"talkS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["uniqueid","linkedid","channel","state","direction","callerNumber","callerName","connectedNumber","connectedName","tenantId","extensionId","extensionNumber","trunkId","queueId","application","recording","onHold","bridgedTo","startedAt","answeredAt","durationS","talkS"],"additionalProperties":false}},"extensions":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"availability":{"type":"string","enum":["available","ringing","busy","on_hold","dnd","unreachable","offline"]},"dnd":{"type":"boolean"},"presence":{"anyOf":[{"type":"object","properties":{"state":{"type":"string"},"subtype":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["state","subtype","message"],"additionalProperties":false},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","extensionId","number","name","state","registered","availability","dnd","presence","contacts","activeCalls","lastSeenAt"],"additionalProperties":false}},"trunks":{"type":"array","items":{"type":"object","properties":{"trunkId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"shared":{"type":"boolean"},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"registration":{"type":"object","properties":{"status":{"type":"string","enum":["registered","unregistered","rejected","failed","unknown","not_required"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reason":{"type":["string","null"]}},"required":["status","since","reason"],"additionalProperties":false},"reachability":{"type":"object","properties":{"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","rttMs","since"],"additionalProperties":false},"activeChannels":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxChannels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["trunkId","tenantId","name","shared","status","registration","reachability","activeChannels","maxChannels"],"additionalProperties":false}},"queues":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"waiting":{"type":"integer","minimum":0,"maximum":9007199254740991},"longestWaitS":{"type":"integer","minimum":0,"maximum":9007199254740991},"completed":{"type":"integer","minimum":0,"maximum":9007199254740991},"abandoned":{"type":"integer","minimum":0,"maximum":9007199254740991},"callers":{"type":"array","items":{"type":"object","properties":{"uniqueid":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"joinedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"waitS":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["uniqueid","position","callerNumber","callerName","joinedAt","waitS"],"additionalProperties":false}},"members":{"type":"array","items":{"type":"object","properties":{"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"number":{"type":["string","null"]},"name":{"type":["string","null"]},"state":{"type":"string","enum":["idle","ringing","busy","paused","unavailable","unknown"]},"paused":{"type":"boolean"},"pausedReason":{"type":["string","null"]},"inCall":{"type":"boolean"},"callsTaken":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCallAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["extensionId","number","name","state","paused","pausedReason","inCall","callsTaken","lastCallAt"],"additionalProperties":false}}},"required":["tenantId","queueId","number","name","waiting","longestWaitS","completed","abandoned","callers","members"],"additionalProperties":false}},"parking":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"space":{"type":"string"},"uniqueid":{"type":"string"},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"parkedBy":{"type":["string","null"]},"parkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timeoutAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","space","uniqueid","callerNumber","callerName","parkedBy","parkedAt","timeoutAt"],"additionalProperties":false}},"health":{"$ref":"#/components/schemas/LiveHealthResponse"}},"required":["tenantId","generatedAt","channels","extensions","trunks","queues","parking","health"],"additionalProperties":false},"LiveChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"uniqueid":{"type":"string"},"linkedid":{"type":"string"},"channel":{"type":"string"},"state":{"type":"string","enum":["down","ring","ringing","up","busy","dialing","unknown"]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"connectedNumber":{"type":["string","null"]},"connectedName":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionNumber":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"queueId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"application":{"type":["string","null"]},"recording":{"type":"boolean"},"onHold":{"type":"boolean"},"bridgedTo":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"answeredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"talkS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["uniqueid","linkedid","channel","state","direction","callerNumber","callerName","connectedNumber","connectedName","tenantId","extensionId","extensionNumber","trunkId","queueId","application","recording","onHold","bridgedTo","startedAt","answeredAt","durationS","talkS"],"additionalProperties":false}}},"required":["channels"],"additionalProperties":false},"LiveExtensionsResponse":{"type":"object","properties":{"extensions":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"availability":{"type":"string","enum":["available","ringing","busy","on_hold","dnd","unreachable","offline"]},"dnd":{"type":"boolean"},"presence":{"anyOf":[{"type":"object","properties":{"state":{"type":"string"},"subtype":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["state","subtype","message"],"additionalProperties":false},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","extensionId","number","name","state","registered","availability","dnd","presence","contacts","activeCalls","lastSeenAt"],"additionalProperties":false}}},"required":["extensions"],"additionalProperties":false},"LiveDevicesResponse":{"type":"object","properties":{"devices":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt","tenantId","extensionId","number","name"],"additionalProperties":false}}},"required":["devices"],"additionalProperties":false},"LiveTrunksResponse":{"type":"object","properties":{"trunks":{"type":"array","items":{"type":"object","properties":{"trunkId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"shared":{"type":"boolean"},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"registration":{"type":"object","properties":{"status":{"type":"string","enum":["registered","unregistered","rejected","failed","unknown","not_required"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reason":{"type":["string","null"]}},"required":["status","since","reason"],"additionalProperties":false},"reachability":{"type":"object","properties":{"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","rttMs","since"],"additionalProperties":false},"activeChannels":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxChannels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["trunkId","tenantId","name","shared","status","registration","reachability","activeChannels","maxChannels"],"additionalProperties":false}}},"required":["trunks"],"additionalProperties":false},"LiveQueuesResponse":{"type":"object","properties":{"queues":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"waiting":{"type":"integer","minimum":0,"maximum":9007199254740991},"longestWaitS":{"type":"integer","minimum":0,"maximum":9007199254740991},"completed":{"type":"integer","minimum":0,"maximum":9007199254740991},"abandoned":{"type":"integer","minimum":0,"maximum":9007199254740991},"callers":{"type":"array","items":{"type":"object","properties":{"uniqueid":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"joinedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"waitS":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["uniqueid","position","callerNumber","callerName","joinedAt","waitS"],"additionalProperties":false}},"members":{"type":"array","items":{"type":"object","properties":{"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"number":{"type":["string","null"]},"name":{"type":["string","null"]},"state":{"type":"string","enum":["idle","ringing","busy","paused","unavailable","unknown"]},"paused":{"type":"boolean"},"pausedReason":{"type":["string","null"]},"inCall":{"type":"boolean"},"callsTaken":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCallAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["extensionId","number","name","state","paused","pausedReason","inCall","callsTaken","lastCallAt"],"additionalProperties":false}}},"required":["tenantId","queueId","number","name","waiting","longestWaitS","completed","abandoned","callers","members"],"additionalProperties":false}}},"required":["queues"],"additionalProperties":false},"LiveHealthResponse":{"type":"object","properties":{"status":{"type":"string","enum":["operational","degraded","outage"]},"checkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"telephony":{"type":"string","enum":["up","down","unknown"]},"tenant":{"anyOf":[{"type":"object","properties":{"extensionsTotal":{"type":"integer","minimum":0,"maximum":9007199254740991},"extensionsRegistered":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"trunksTotal":{"type":"integer","minimum":0,"maximum":9007199254740991},"trunksUp":{"type":"integer","minimum":0,"maximum":9007199254740991},"queuesWaiting":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["extensionsTotal","extensionsRegistered","activeCalls","trunksTotal","trunksUp","queuesWaiting"],"additionalProperties":false},{"type":"null"}]},"platform":{"anyOf":[{"type":"object","properties":{"asterisk":{"type":"object","properties":{"state":{"type":"string","enum":["up","down","booting","unknown"]},"version":{"type":["string","null"]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"uptimeS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReloadAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["state","version","startedAt","uptimeS","lastReloadAt","since"],"additionalProperties":false},"ami":{"type":"object","properties":{"connected":{"type":"boolean"},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["connected","since"],"additionalProperties":false},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string","enum":["up","down","unknown"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastBeatAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"detail":{"type":["string","null"]}},"required":["name","state","since","lastBeatAt","detail"],"additionalProperties":false}},"api":{"type":"object","properties":{"version":{"type":"string"},"pid":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uptimeS":{"type":"integer","minimum":0,"maximum":9007199254740991},"rssBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"heapUsedBytes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["version","pid","uptimeS","rssBytes","heapUsedBytes"],"additionalProperties":false},"host":{"type":"object","properties":{"loadAvg":{"type":"array","items":{"type":"number"}},"memTotalBytes":{"type":"number"},"memFreeBytes":{"type":"number"}},"required":["loadAvg","memTotalBytes","memFreeBytes"],"additionalProperties":false},"activeChannels":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"registeredEndpoints":{"type":"integer","minimum":0,"maximum":9007199254740991},"voiceNodes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"state":{"type":"string","enum":["pending","online","degraded","offline","disabled"]},"sipHost":{"type":["string","null"]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"activeCalls":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"tls":{"type":"boolean"},"webrtc":{"type":"boolean"}},"required":["id","name","state","sipHost","lastSeenAt","activeCalls","tls","webrtc"],"additionalProperties":false}}},"required":["asterisk","ami","services","api","host","activeChannels","activeCalls","registeredEndpoints","voiceNodes"],"additionalProperties":false},{"type":"null"}]}},"required":["status","checkedAt","telephony","tenant","platform"],"additionalProperties":false},"LiveEventsResponse":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"snapshot"},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"channels":{"type":"array","items":{"type":"object","properties":{"uniqueid":{"type":"string"},"linkedid":{"type":"string"},"channel":{"type":"string"},"state":{"type":"string","enum":["down","ring","ringing","up","busy","dialing","unknown"]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"connectedNumber":{"type":["string","null"]},"connectedName":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionNumber":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"queueId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"application":{"type":["string","null"]},"recording":{"type":"boolean"},"onHold":{"type":"boolean"},"bridgedTo":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"answeredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"talkS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["uniqueid","linkedid","channel","state","direction","callerNumber","callerName","connectedNumber","connectedName","tenantId","extensionId","extensionNumber","trunkId","queueId","application","recording","onHold","bridgedTo","startedAt","answeredAt","durationS","talkS"],"additionalProperties":false}},"extensions":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"availability":{"type":"string","enum":["available","ringing","busy","on_hold","dnd","unreachable","offline"]},"dnd":{"type":"boolean"},"presence":{"anyOf":[{"type":"object","properties":{"state":{"type":"string"},"subtype":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["state","subtype","message"],"additionalProperties":false},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","extensionId","number","name","state","registered","availability","dnd","presence","contacts","activeCalls","lastSeenAt"],"additionalProperties":false}},"trunks":{"type":"array","items":{"type":"object","properties":{"trunkId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"shared":{"type":"boolean"},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"registration":{"type":"object","properties":{"status":{"type":"string","enum":["registered","unregistered","rejected","failed","unknown","not_required"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reason":{"type":["string","null"]}},"required":["status","since","reason"],"additionalProperties":false},"reachability":{"type":"object","properties":{"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","rttMs","since"],"additionalProperties":false},"activeChannels":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxChannels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["trunkId","tenantId","name","shared","status","registration","reachability","activeChannels","maxChannels"],"additionalProperties":false}},"queues":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"waiting":{"type":"integer","minimum":0,"maximum":9007199254740991},"longestWaitS":{"type":"integer","minimum":0,"maximum":9007199254740991},"completed":{"type":"integer","minimum":0,"maximum":9007199254740991},"abandoned":{"type":"integer","minimum":0,"maximum":9007199254740991},"callers":{"type":"array","items":{"type":"object","properties":{"uniqueid":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"joinedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"waitS":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["uniqueid","position","callerNumber","callerName","joinedAt","waitS"],"additionalProperties":false}},"members":{"type":"array","items":{"type":"object","properties":{"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"number":{"type":["string","null"]},"name":{"type":["string","null"]},"state":{"type":"string","enum":["idle","ringing","busy","paused","unavailable","unknown"]},"paused":{"type":"boolean"},"pausedReason":{"type":["string","null"]},"inCall":{"type":"boolean"},"callsTaken":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCallAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["extensionId","number","name","state","paused","pausedReason","inCall","callsTaken","lastCallAt"],"additionalProperties":false}}},"required":["tenantId","queueId","number","name","waiting","longestWaitS","completed","abandoned","callers","members"],"additionalProperties":false}},"parking":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"space":{"type":"string"},"uniqueid":{"type":"string"},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"parkedBy":{"type":["string","null"]},"parkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timeoutAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","space","uniqueid","callerNumber","callerName","parkedBy","parkedAt","timeoutAt"],"additionalProperties":false}},"health":{"$ref":"#/components/schemas/LiveHealthResponse"}},"required":["type","tenantId","channels","extensions","trunks","queues","parking","health"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"channel.update"},"channel":{"type":"object","properties":{"uniqueid":{"type":"string"},"linkedid":{"type":"string"},"channel":{"type":"string"},"state":{"type":"string","enum":["down","ring","ringing","up","busy","dialing","unknown"]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"connectedNumber":{"type":["string","null"]},"connectedName":{"type":["string","null"]},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionNumber":{"type":["string","null"]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"queueId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"application":{"type":["string","null"]},"recording":{"type":"boolean"},"onHold":{"type":"boolean"},"bridgedTo":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"answeredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationS":{"type":"integer","minimum":0,"maximum":9007199254740991},"talkS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["uniqueid","linkedid","channel","state","direction","callerNumber","callerName","connectedNumber","connectedName","tenantId","extensionId","extensionNumber","trunkId","queueId","application","recording","onHold","bridgedTo","startedAt","answeredAt","durationS","talkS"],"additionalProperties":false}},"required":["type","channel"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"channel.hangup"},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"uniqueid":{"type":"string"},"linkedid":{"type":"string"},"cause":{"type":["string","null"]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"trunkId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"durationS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["type","tenantId","uniqueid","linkedid","cause","extensionId","trunkId","durationS"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"extension.state"},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"extension":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"availability":{"type":"string","enum":["available","ringing","busy","on_hold","dnd","unreachable","offline"]},"dnd":{"type":"boolean"},"presence":{"anyOf":[{"type":"object","properties":{"state":{"type":"string"},"subtype":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["state","subtype","message"],"additionalProperties":false},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","extensionId","number","name","state","registered","availability","dnd","presence","contacts","activeCalls","lastSeenAt"],"additionalProperties":false}},"required":["type","extensionId","number","state","registered","extension"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"extension.registration"},"registered":{"type":"boolean"},"extension":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"availability":{"type":"string","enum":["available","ringing","busy","on_hold","dnd","unreachable","offline"]},"dnd":{"type":"boolean"},"presence":{"anyOf":[{"type":"object","properties":{"state":{"type":"string"},"subtype":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["state","subtype","message"],"additionalProperties":false},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","extensionId","number","name","state","registered","availability","dnd","presence","contacts","activeCalls","lastSeenAt"],"additionalProperties":false}},"required":["type","registered","extension"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"extension.dnd"},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"dnd":{"type":"boolean"},"extension":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["idle","ringing","in_use","busy","on_hold","unavailable","unknown"]},"registered":{"type":"boolean"},"availability":{"type":"string","enum":["available","ringing","busy","on_hold","dnd","unreachable","offline"]},"dnd":{"type":"boolean"},"presence":{"anyOf":[{"type":"object","properties":{"state":{"type":"string"},"subtype":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["state","subtype","message"],"additionalProperties":false},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"activeCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","extensionId","number","name","state","registered","availability","dnd","presence","contacts","activeCalls","lastSeenAt"],"additionalProperties":false}},"required":["type","tenantId","extensionId","number","dnd","extension"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"extension.contact"},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string"},"change":{"type":"string","enum":["added","updated","removed","reachable","unreachable"]},"contact":{"type":"object","properties":{"userAgent":{"type":["string","null"]},"ip":{"type":["string","null"]},"port":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transport":{"anyOf":[{"type":"string","enum":["udp","tcp","tls","ws","wss"]},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userAgent","ip","port","transport","status","rttMs","expiresAt","lastSeenAt"],"additionalProperties":false}},"required":["type","tenantId","extensionId","number","change","contact"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"trunk.state"},"trunk":{"type":"object","properties":{"trunkId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"shared":{"type":"boolean"},"status":{"type":"string","enum":["registered","unregistered","rejected","unknown"]},"registration":{"type":"object","properties":{"status":{"type":"string","enum":["registered","unregistered","rejected","failed","unknown","not_required"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reason":{"type":["string","null"]}},"required":["status","since","reason"],"additionalProperties":false},"reachability":{"type":"object","properties":{"status":{"type":"string","enum":["reachable","unreachable","unknown"]},"rttMs":{"type":["number","null"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["status","rttMs","since"],"additionalProperties":false},"activeChannels":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxChannels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["trunkId","tenantId","name","shared","status","registration","reachability","activeChannels","maxChannels"],"additionalProperties":false},"previousStatus":{"anyOf":[{"type":"string","enum":["registered","unregistered","rejected","unknown"]},{"type":"null"}]}},"required":["type","trunk","previousStatus"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"queue.caller.join"},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"caller":{"type":"object","properties":{"uniqueid":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"joinedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"waitS":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["uniqueid","position","callerNumber","callerName","joinedAt","waitS"],"additionalProperties":false},"waiting":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","tenantId","queueId","caller","waiting"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"queue.caller.leave"},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"uniqueid":{"type":"string"},"reason":{"type":"string","enum":["answered","abandoned","exited"]},"waitS":{"type":"integer","minimum":0,"maximum":9007199254740991},"waiting":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","tenantId","queueId","uniqueid","reason","waitS","waiting"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"queue.member"},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"member":{"type":"object","properties":{"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"number":{"type":["string","null"]},"name":{"type":["string","null"]},"state":{"type":"string","enum":["idle","ringing","busy","paused","unavailable","unknown"]},"paused":{"type":"boolean"},"pausedReason":{"type":["string","null"]},"inCall":{"type":"boolean"},"callsTaken":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCallAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["extensionId","number","name","state","paused","pausedReason","inCall","callsTaken","lastCallAt"],"additionalProperties":false}},"required":["type","tenantId","queueId","member"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"parking.update"},"action":{"type":"string","enum":["parked","unparked","timeout","abandoned"]},"call":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"space":{"type":"string"},"uniqueid":{"type":"string"},"callerNumber":{"type":["string","null"]},"callerName":{"type":["string","null"]},"parkedBy":{"type":["string","null"]},"parkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timeoutAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["tenantId","space","uniqueid","callerNumber","callerName","parkedBy","parkedAt","timeoutAt"],"additionalProperties":false}},"required":["type","action","call"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"calendar.override"},"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"calendarId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"forceState":{"type":"string","enum":["auto","open","closed"]},"forceUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"previousForceState":{"anyOf":[{"type":"string","enum":["auto","open","closed"]},{"type":"null"}]},"state":{"anyOf":[{"type":"string","enum":["open","closed"]},{"type":"null"}]}},"required":["type","tenantId","calendarId","name","forceState","forceUntil","previousForceState","state"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"system.status"},"status":{"type":"string","enum":["operational","degraded","outage"]},"telephony":{"type":"string","enum":["up","down","unknown"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","status","telephony","at"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"system.asterisk"},"reason":{"type":"string","enum":["fully_booted","shutdown","ami_connected","ami_disconnected","reload","resync"]},"asterisk":{"type":"object","properties":{"state":{"type":"string","enum":["up","down","booting","unknown"]},"version":{"type":["string","null"]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"uptimeS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReloadAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["state","version","startedAt","uptimeS","lastReloadAt","since"],"additionalProperties":false},"ami":{"type":"object","properties":{"connected":{"type":"boolean"},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["connected","since"],"additionalProperties":false}},"required":["type","reason","asterisk","ami"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"system.service"},"service":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string","enum":["up","down","unknown"]},"since":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastBeatAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"detail":{"type":["string","null"]}},"required":["name","state","since","lastBeatAt","detail"],"additionalProperties":false}},"required":["type","service"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"system.reload"},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"module":{"type":["string","null"]}},"required":["type","at","module"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heartbeat"},"ts":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","ts"],"additionalProperties":false}]},"WebhooksEventTypesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"],"additionalProperties":false},"WebhooksListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["*","channel.update","channel.hangup","extension.state","extension.registration","extension.dnd","extension.contact","trunk.state","queue.caller.join","queue.caller.leave","queue.member","parking.update","calendar.override","system.status","system.asterisk","system.service","system.reload"]}},"enabled":{"type":"boolean"},"secretHint":{"type":"string"},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastFailureAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","url","events","enabled","secretHint","lastSuccessAt","lastFailureAt","consecutiveFailures","createdAt","updatedAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"WebhooksCreateResponse":{"type":"object","properties":{"webhook":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["*","channel.update","channel.hangup","extension.state","extension.registration","extension.dnd","extension.contact","trunk.state","queue.caller.join","queue.caller.leave","queue.member","parking.update","calendar.override","system.status","system.asterisk","system.service","system.reload"]}},"enabled":{"type":"boolean"},"secretHint":{"type":"string"},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastFailureAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","url","events","enabled","secretHint","lastSuccessAt","lastFailureAt","consecutiveFailures","createdAt","updatedAt"],"additionalProperties":false},"secret":{"type":"string"}},"required":["webhook","secret"],"additionalProperties":false},"WebhooksGetResponse":{"type":"object","properties":{"webhook":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["*","channel.update","channel.hangup","extension.state","extension.registration","extension.dnd","extension.contact","trunk.state","queue.caller.join","queue.caller.leave","queue.member","parking.update","calendar.override","system.status","system.asterisk","system.service","system.reload"]}},"enabled":{"type":"boolean"},"secretHint":{"type":"string"},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastFailureAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","url","events","enabled","secretHint","lastSuccessAt","lastFailureAt","consecutiveFailures","createdAt","updatedAt"],"additionalProperties":false}},"required":["webhook"],"additionalProperties":false},"WebhooksTestResponse":{"type":"object","properties":{"delivery":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"webhookId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"eventId":{"type":"string"},"eventType":{"type":"string"},"status":{"type":"string","enum":["pending","success","retrying","failed"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","webhookId","eventId","eventType","status","attempts","responseStatus","durationMs","error","createdAt","lastAttemptAt","deliveredAt","nextAttemptAt"],"additionalProperties":false}},"required":["delivery"],"additionalProperties":false},"WebhooksDeliveriesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"webhookId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"eventId":{"type":"string"},"eventType":{"type":"string"},"status":{"type":"string","enum":["pending","success","retrying","failed"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","webhookId","eventId","eventType","status","attempts","responseStatus","durationMs","error","createdAt","lastAttemptAt","deliveredAt","nextAttemptAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"CalendarsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":["string","null"]},"timezone":{"type":["string","null"]},"isDefault":{"type":"boolean"},"openDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"closedDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"closedPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"defaultForceMode":{"type":"string","enum":["next_transition","hours","until","manual"]},"defaultForceHours":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"icalUrl":{"type":["string","null"]},"icalLastSyncAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"icalLastError":{"type":["string","null"]},"hours":{"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"}},"required":["weekday","start","end"],"additionalProperties":false}},"status":{"$ref":"#/components/schemas/CalendarsStatusResponse"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","description","timezone","isDefault","openDestination","closedDestination","closedPromptId","defaultForceMode","defaultForceHours","icalUrl","icalLastSyncAt","icalLastError","hours","status","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"CalendarsCreateResponse":{"type":"object","properties":{"calendar":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":["string","null"]},"timezone":{"type":["string","null"]},"isDefault":{"type":"boolean"},"openDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"closedDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"closedPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"defaultForceMode":{"type":"string","enum":["next_transition","hours","until","manual"]},"defaultForceHours":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"icalUrl":{"type":["string","null"]},"icalLastSyncAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"icalLastError":{"type":["string","null"]},"hours":{"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"}},"required":["weekday","start","end"],"additionalProperties":false}},"status":{"$ref":"#/components/schemas/CalendarsStatusResponse"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","description","timezone","isDefault","openDestination","closedDestination","closedPromptId","defaultForceMode","defaultForceHours","icalUrl","icalLastSyncAt","icalLastError","hours","status","createdAt","updatedAt"],"additionalProperties":false}},"required":["calendar"],"additionalProperties":false},"CalendarsHolidaysResponse":{"type":"object","properties":{"holidays":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["new_year","epiphany","easter","easter_monday","liberation","labour","republic","assumption","st_francis","all_saints","immaculate","christmas","st_stephen","patron"]},"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"name":{"type":"string"}},"required":["key","date","name"],"additionalProperties":false}},"patrons":{"type":"array","items":{"type":"object","properties":{"istat":{"type":"string"},"city":{"type":"string"},"saint":{"type":"string"},"month":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"day":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["istat","city","saint","month","day"],"additionalProperties":false}}},"required":["holidays","patrons"],"additionalProperties":false},"CalendarsSetHoursResponse":{"type":"object","properties":{"ranges":{"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"}},"required":["weekday","start","end"],"additionalProperties":false}}},"required":["ranges"],"additionalProperties":false},"CalendarsStatusResponse":{"type":"object","properties":{"state":{"type":"string","enum":["open","closed"]},"reason":{"type":"string","enum":["force","exception","weekly","no_hours"]},"exceptionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"exceptionName":{"type":["string","null"]},"nextTransitionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"nextState":{"anyOf":[{"type":"string","enum":["open","closed"]},{"type":"null"}]},"force":{"type":"object","properties":{"state":{"type":"string","enum":["auto","open","closed"]},"mode":{"anyOf":[{"type":"string","enum":["next_transition","hours","until","manual"]},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["phone","panel","api"]},{"type":"null"}]},"byExtension":{"type":["string","null"]},"byUserId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"setAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"note":{"type":["string","null"]}},"required":["state","mode","expiresAt","source","byExtension","byUserId","setAt","note"],"additionalProperties":false}},"required":["state","reason","exceptionId","exceptionName","nextTransitionAt","nextState","force"],"additionalProperties":false},"CalendarsOverridesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"calendarId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"state":{"type":"string","enum":["open","closed"]},"mode":{"type":"string","enum":["next_transition","hours","until","manual"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"source":{"type":"string","enum":["phone","panel","api"]},"byExtension":{"type":["string","null"]},"byUserId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"note":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endReason":{"anyOf":[{"type":"string","enum":["expired","manual","replaced"]},{"type":"null"}]}},"required":["id","calendarId","state","mode","expiresAt","source","byExtension","byUserId","note","createdAt","endedAt","endReason"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"CalendarsSimulateResponse":{"type":"object","properties":{"at":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T([01][0-9]|2[0-3]):[0-5][0-9]$"},"timezone":{"type":"string"},"state":{"type":"string","enum":["open","closed"]},"reason":{"type":"string","enum":["force","exception","weekly","no_hours"]},"exceptionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"exceptionName":{"type":["string","null"]},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"nextTransitionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"day":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"},"state":{"type":"string","enum":["open","closed"]}},"required":["start","end","state"],"additionalProperties":false}}},"required":["at","timezone","state","reason","exceptionId","exceptionName","promptId","destination","nextTransitionAt","day"],"additionalProperties":false},"CalendarsPreloadHolidaysResponse":{"type":"object","properties":{"created":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["created","skipped"],"additionalProperties":false},"CalendarsListExceptionsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"calendarId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"type":{"type":"string","enum":["open","closed"]},"dateFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"dateTo":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"startTime":{"anyOf":[{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]},"endTime":{"anyOf":[{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"},{"type":"null"}]},"recurring":{"type":"boolean"},"holidayKey":{"type":["string","null"]},"source":{"type":"string","enum":["manual","holiday","ical"]},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","calendarId","name","type","dateFrom","dateTo","startTime","endTime","recurring","holidayKey","source","promptId","destination","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"CalendarsCreateExceptionResponse":{"type":"object","properties":{"exception":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"calendarId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"type":{"type":"string","enum":["open","closed"]},"dateFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"dateTo":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"startTime":{"anyOf":[{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]},"endTime":{"anyOf":[{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"},{"type":"null"}]},"recurring":{"type":"boolean"},"holidayKey":{"type":["string","null"]},"source":{"type":"string","enum":["manual","holiday","ical"]},"promptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"destination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","calendarId","name","type","dateFrom","dateTo","startTime","endTime","recurring","holidayKey","source","promptId","destination","createdAt","updatedAt"],"additionalProperties":false}},"required":["exception"],"additionalProperties":false},"CalendarsImportIcalResponse":{"type":"object","properties":{"created":{"type":"integer","minimum":0,"maximum":9007199254740991},"updated":{"type":"integer","minimum":0,"maximum":9007199254740991},"deleted":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["created","updated","deleted","skipped"],"additionalProperties":false},"CalendarsSyncIcalResponse":{"type":"object","properties":{"job":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"kind":{"type":"string","enum":["recording.process","recording.transcribe","recording.summarize","recording.retention","voicemail.index","voicemail.transcribe","voicemail.email","prompt.tts","prompt.convert","moh.convert","notify.send","calendar.ical_sync","queue.callback","contacts.import","webhook.deliver"]},"status":{"type":"string","enum":["pending","waiting_config","running","done","failed","cancelled"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"error":{"type":["string","null"]},"relatedType":{"type":["string","null"]},"relatedId":{"type":["string","null"]},"runAfter":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","kind","status","attempts","error","relatedType","relatedId","runAfter","startedAt","finishedAt","createdAt"],"additionalProperties":false}},"required":["job"],"additionalProperties":false},"NumbersGetCalendarResponse":{"type":"object","properties":{"assignment":{"type":"object","properties":{"numberId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"closedDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]}},"required":["numberId","calendarId","closedDestination"],"additionalProperties":false}},"required":["assignment"],"additionalProperties":false},"RecordingsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"linkedid":{"type":["string","null"]},"uniqueid":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"caller":{"type":["string","null"]},"callerName":{"type":["string","null"]},"callee":{"type":["string","null"]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"queueId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"numberId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"durationS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"format":{"type":"string","enum":["wav","opus","mp3"]},"stereo":{"type":"boolean"},"status":{"type":"string","enum":["recording","processing","ready","error","deleted"]},"transcriptStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"summaryStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"summary":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","linkedid","uniqueid","direction","caller","callerName","callee","extensionId","queueId","numberId","startedAt","durationS","sizeBytes","format","stereo","status","transcriptStatus","summaryStatus","summary","expiresAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"RecordingsGetSettingsResponse":{"type":"object","properties":{"retentionDays":{"type":"integer","minimum":0,"maximum":3650},"format":{"default":"mp3","type":"string","enum":["opus","mp3"]},"supervisorsCanListen":{"default":true,"type":"boolean"},"supervisorsCanDownload":{"default":false,"type":"boolean"},"usersCanListenOwn":{"default":false,"type":"boolean"},"quotaMb":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"usedMb":{"type":"number","minimum":0}},"required":["retentionDays","format","supervisorsCanListen","supervisorsCanDownload","usersCanListenOwn","quotaMb"],"additionalProperties":false},"RecordingsListPoliciesResponse":{"type":"object","properties":{"policies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scope":{"type":"string","enum":["tenant","number","queue","extension"]},"targetId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"mode":{"type":"string","enum":["inherit","always","on_demand","never"]},"inbound":{"type":["boolean","null"]},"outbound":{"type":["boolean","null"]},"internal":{"type":["boolean","null"]},"stereo":{"type":["boolean","null"]},"announceInboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceOutboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceEnabled":{"type":["boolean","null"]},"autoTranscribe":{"type":["boolean","null"]},"autoSummarize":{"type":["boolean","null"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","scope","targetId","mode","inbound","outbound","internal","stereo","announceInboundPromptId","announceOutboundPromptId","announceEnabled","autoTranscribe","autoSummarize","updatedAt"],"additionalProperties":false}}},"required":["policies"],"additionalProperties":false},"RecordingsEffectivePolicyResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["always","on_demand","never"]},"inbound":{"type":"boolean"},"outbound":{"type":"boolean"},"internal":{"type":"boolean"},"stereo":{"type":"boolean"},"announceEnabled":{"type":"boolean"},"announceInboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceOutboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"autoTranscribe":{"type":"boolean"},"autoSummarize":{"type":"boolean"},"sources":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","enum":["tenant","number","queue","extension"]}}},"required":["mode","inbound","outbound","internal","stereo","announceEnabled","announceInboundPromptId","announceOutboundPromptId","autoTranscribe","autoSummarize","sources"],"additionalProperties":false},"RecordingsUpsertPolicyResponse":{"type":"object","properties":{"policy":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scope":{"type":"string","enum":["tenant","number","queue","extension"]},"targetId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"mode":{"type":"string","enum":["inherit","always","on_demand","never"]},"inbound":{"type":["boolean","null"]},"outbound":{"type":["boolean","null"]},"internal":{"type":["boolean","null"]},"stereo":{"type":["boolean","null"]},"announceInboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceOutboundPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announceEnabled":{"type":["boolean","null"]},"autoTranscribe":{"type":["boolean","null"]},"autoSummarize":{"type":["boolean","null"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","scope","targetId","mode","inbound","outbound","internal","stereo","announceInboundPromptId","announceOutboundPromptId","announceEnabled","autoTranscribe","autoSummarize","updatedAt"],"additionalProperties":false}},"required":["policy"],"additionalProperties":false},"RecordingsAccessLogResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"recordingId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"action":{"type":"string","enum":["listen","download","delete","transcript"]},"userId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"userEmail":{"type":["string","null"]},"apiKeyId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"ip":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","recordingId","action","userId","userEmail","apiKeyId","ip","createdAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"RecordingsGetResponse":{"type":"object","properties":{"recording":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"linkedid":{"type":["string","null"]},"uniqueid":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound","internal"]},{"type":"null"}]},"caller":{"type":["string","null"]},"callerName":{"type":["string","null"]},"callee":{"type":["string","null"]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"queueId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"numberId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"durationS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"format":{"type":"string","enum":["wav","opus","mp3"]},"stereo":{"type":"boolean"},"status":{"type":"string","enum":["recording","processing","ready","error","deleted"]},"transcriptStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"summaryStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"summary":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","linkedid","uniqueid","direction","caller","callerName","callee","extensionId","queueId","numberId","startedAt","durationS","sizeBytes","format","stereo","status","transcriptStatus","summaryStatus","summary","expiresAt"],"additionalProperties":false}},"required":["recording"],"additionalProperties":false},"RecordingsTranscriptResponse":{"type":"object","properties":{"transcript":{"type":"object","properties":{"recordingId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"transcriptStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"summaryStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"language":{"type":["string","null"]},"provider":{"type":["string","null"]},"text":{"type":["string","null"]},"segments":{"type":"array","items":{"type":"object","properties":{"startS":{"type":"number","minimum":0},"endS":{"type":"number","minimum":0},"speaker":{"type":"string","enum":["caller","agent","unknown"]},"text":{"type":"string"}},"required":["startS","endS","speaker","text"],"additionalProperties":false}},"summary":{"type":["string","null"]},"error":{"type":["string","null"]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["recordingId","transcriptStatus","summaryStatus","language","provider","text","segments","summary","error","updatedAt"],"additionalProperties":false}},"required":["transcript"],"additionalProperties":false},"VoicemailMessageMetaResponse":{"type":"object","properties":{"meta":{"type":"object","properties":{"messageId":{"type":"string"},"msgId":{"type":["string","null"]},"callerName":{"type":["string","null"]},"transcriptStatus":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"transcriptPreview":{"type":["string","null"]},"emailStatus":{"type":"string","enum":["none","pending","waiting_config","sent","failed"]},"emailedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["messageId","msgId","callerName","transcriptStatus","transcriptPreview","emailStatus","emailedAt"],"additionalProperties":false}},"required":["meta"],"additionalProperties":false},"VoicemailMessageTranscriptResponse":{"type":"object","properties":{"transcript":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"messageId":{"type":"string"},"msgId":{"type":["string","null"]},"status":{"type":"string","enum":["none","pending","waiting_config","processing","ready","error"]},"language":{"type":["string","null"]},"provider":{"type":["string","null"]},"text":{"type":["string","null"]},"error":{"type":["string","null"]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["extensionId","messageId","msgId","status","language","provider","text","error","updatedAt"],"additionalProperties":false}},"required":["transcript"],"additionalProperties":false},"ForwardingGetResponse":{"type":"object","properties":{"forwarding":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"style":{"type":"string","enum":["confirm","silent","whisper"]},"silentTimeoutS":{"type":"integer","minimum":5,"maximum":60},"whisperText":{"type":["string","null"]},"whisperPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["extensionId","style","silentTimeoutS","whisperText","whisperPromptId","updatedAt"],"additionalProperties":false}},"required":["forwarding"],"additionalProperties":false},"ForwardingGetProviderDivertResponse":{"type":"object","properties":{"divert":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"enabled":{"type":"boolean"},"number":{"anyOf":[{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},{"type":"null"}]},"method":{"type":"string","enum":["sip302","ovh_api"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["extensionId","enabled","number","method","updatedAt"],"additionalProperties":false}},"required":["divert"],"additionalProperties":false},"NotificationsGetSettingsResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"event":{"type":"string","enum":["missed_call","voicemail","calendar_force","trunk_approval","recording_ready"]},"enabled":{"type":"boolean"},"channels":{"type":"array","items":{"type":"string","enum":["email","telegram"]}},"emails":{"maxItems":20,"type":"array","items":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"includeAdmins":{"type":"boolean"},"extensionIds":{"maxItems":200,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"queueIds":{"maxItems":100,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"numberIds":{"maxItems":100,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["event","enabled","channels","emails","includeAdmins","extensionIds","queueIds","numberIds"],"additionalProperties":false}},"telegram":{"type":"object","properties":{"enabled":{"type":"boolean"},"chatId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"hasBotToken":{"type":"boolean"}},"required":["enabled","chatId","hasBotToken"],"additionalProperties":false},"lang":{"type":"string","enum":["it","en"]}},"required":["rules","telegram","lang"],"additionalProperties":false},"NotificationsLogResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"event":{"type":"string","enum":["missed_call","voicemail","calendar_force","trunk_approval","recording_ready"]},"channel":{"type":"string","enum":["email","telegram"]},"recipient":{"type":"string"},"subject":{"type":["string","null"]},"status":{"type":"string","enum":["queued","waiting_config","sent","failed","skipped"]},"error":{"type":["string","null"]},"relatedType":{"type":["string","null"]},"relatedId":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sentAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","tenantId","event","channel","recipient","subject","status","error","relatedType","relatedId","createdAt","sentAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"NotificationsTestResponse":{"type":"object","properties":{"status":{"type":"string","enum":["queued","waiting_config","sent","failed","skipped"]},"logId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["status","logId"],"additionalProperties":false},"IvrsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":["string","null"]},"lang":{"type":"string"},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingText":{"type":["string","null"]},"invalidPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRetries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interDigitTimeoutS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"directDial":{"type":"boolean"},"directDialExtensions":{"type":"array","items":{"type":"string","pattern":"^[0-9]{2,6}$"}},"timeoutDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"invalidDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"options":{"type":"array","items":{"type":"object","properties":{"digit":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","*","#"]},"label":{"type":["string","null"]},"destination":{"$ref":"#/components/schemas/Destination"}},"required":["digit","label","destination"],"additionalProperties":false}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","description","lang","greetingPromptId","greetingText","invalidPromptId","timeoutPromptId","timeoutS","maxRetries","interDigitTimeoutS","directDial","directDialExtensions","timeoutDestination","invalidDestination","calendarId","options","enabled","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"IvrsCreateResponse":{"type":"object","properties":{"ivr":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":["string","null"]},"lang":{"type":"string"},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingText":{"type":["string","null"]},"invalidPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"timeoutS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRetries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interDigitTimeoutS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"directDial":{"type":"boolean"},"directDialExtensions":{"type":"array","items":{"type":"string","pattern":"^[0-9]{2,6}$"}},"timeoutDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"invalidDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"options":{"type":"array","items":{"type":"object","properties":{"digit":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","*","#"]},"label":{"type":["string","null"]},"destination":{"$ref":"#/components/schemas/Destination"}},"required":["digit","label","destination"],"additionalProperties":false}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","description","lang","greetingPromptId","greetingText","invalidPromptId","timeoutPromptId","timeoutS","maxRetries","interDigitTimeoutS","directDial","directDialExtensions","timeoutDestination","invalidDestination","calendarId","options","enabled","createdAt","updatedAt"],"additionalProperties":false}},"required":["ivr"],"additionalProperties":false},"IvrsGreetingTextResponse":{"type":"object","properties":{"text":{"type":"string"},"generatedBy":{"type":"string","enum":["template","ai"]}},"required":["text","generatedBy"],"additionalProperties":false},"RingGroupsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string"},"description":{"type":["string","null"]},"strategy":{"type":"string","enum":["simultaneous","sequential"]},"ringTimeS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"memberRingS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"memberExtensionIds":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"externalNumbers":{"type":"array","items":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"}},"skipBusy":{"type":"boolean"},"callerHears":{"type":"string","enum":["ring","moh"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerIdPrefix":{"type":["string","null"]},"failoverDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","description","strategy","ringTimeS","memberRingS","memberExtensionIds","externalNumbers","skipBusy","callerHears","mohClassId","callerIdPrefix","failoverDestination","enabled","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"RingGroupsCreateResponse":{"type":"object","properties":{"ringGroup":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string"},"description":{"type":["string","null"]},"strategy":{"type":"string","enum":["simultaneous","sequential"]},"ringTimeS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"memberRingS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"memberExtensionIds":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"externalNumbers":{"type":"array","items":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"}},"skipBusy":{"type":"boolean"},"callerHears":{"type":"string","enum":["ring","moh"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callerIdPrefix":{"type":["string","null"]},"failoverDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","description","strategy","ringTimeS","memberRingS","memberExtensionIds","externalNumbers","skipBusy","callerHears","mohClassId","callerIdPrefix","failoverDestination","enabled","createdAt","updatedAt"],"additionalProperties":false}},"required":["ringGroup"],"additionalProperties":false},"QueuesListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string"},"description":{"type":["string","null"]},"lang":{"type":"string"},"strategy":{"type":"string","enum":["ringall","linear","linear_progressive","leastrecent","fewestcalls","rrmemory","random"]},"progressiveStepS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"agentTimeoutS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"wrapupS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ringInUse":{"type":"boolean"},"callerHears":{"type":"string","enum":["moh","ring"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announcePosition":{"type":"boolean"},"announceHoldtime":{"type":"boolean"},"announceFrequencyS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"periodicPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodicFrequencyS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"callerIdPrefix":{"type":["string","null"]},"maxCallers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxWaitS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxWaitDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"emptyDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"noAnswerRounds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"noAnswerDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"voicemailDigit":{"type":["string","null"]},"voicemailExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callbackEnabled":{"type":"boolean"},"callbackDigit":{"type":["string","null"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"members":{"type":"array","items":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"penalty":{"type":"integer","minimum":0,"maximum":100},"paused":{"type":"boolean"}},"required":["extensionId","position","penalty","paused"],"additionalProperties":false}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","description","lang","strategy","progressiveStepS","agentTimeoutS","wrapupS","ringInUse","callerHears","mohClassId","greetingPromptId","announcePosition","announceHoldtime","announceFrequencyS","periodicPromptId","periodicFrequencyS","callerIdPrefix","maxCallers","maxWaitS","maxWaitDestination","emptyDestination","noAnswerRounds","noAnswerDestination","voicemailDigit","voicemailExtensionId","callbackEnabled","callbackDigit","calendarId","recordMode","members","enabled","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"QueuesCreateResponse":{"type":"object","properties":{"queue":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string","pattern":"^[0-9]{2,6}$"},"name":{"type":"string"},"description":{"type":["string","null"]},"lang":{"type":"string"},"strategy":{"type":"string","enum":["ringall","linear","linear_progressive","leastrecent","fewestcalls","rrmemory","random"]},"progressiveStepS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"agentTimeoutS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"wrapupS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ringInUse":{"type":"boolean"},"callerHears":{"type":"string","enum":["moh","ring"]},"mohClassId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"greetingPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"announcePosition":{"type":"boolean"},"announceHoldtime":{"type":"boolean"},"announceFrequencyS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"periodicPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodicFrequencyS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"callerIdPrefix":{"type":["string","null"]},"maxCallers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxWaitS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxWaitDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"emptyDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"noAnswerRounds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"noAnswerDestination":{"anyOf":[{"$ref":"#/components/schemas/Destination"},{"type":"null"}]},"voicemailDigit":{"type":["string","null"]},"voicemailExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"callbackEnabled":{"type":"boolean"},"callbackDigit":{"type":["string","null"]},"calendarId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"recordMode":{"type":"string","enum":["inherit","always","on_demand","never"]},"members":{"type":"array","items":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"penalty":{"type":"integer","minimum":0,"maximum":100},"paused":{"type":"boolean"}},"required":["extensionId","position","penalty","paused"],"additionalProperties":false}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","number","name","description","lang","strategy","progressiveStepS","agentTimeoutS","wrapupS","ringInUse","callerHears","mohClassId","greetingPromptId","announcePosition","announceHoldtime","announceFrequencyS","periodicPromptId","periodicFrequencyS","callerIdPrefix","maxCallers","maxWaitS","maxWaitDestination","emptyDestination","noAnswerRounds","noAnswerDestination","voicemailDigit","voicemailExtensionId","callbackEnabled","callbackDigit","calendarId","recordMode","members","enabled","createdAt","updatedAt"],"additionalProperties":false}},"required":["queue"],"additionalProperties":false},"QueuesLiveResponse":{"type":"object","properties":{"live":{"type":"object","properties":{"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"waiting":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"longestWaitS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"agents":{"type":"array","items":{"type":"object","properties":{"extensionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"state":{"type":"string","enum":["idle","ringing","busy","paused","unavailable","wrapup"]},"callsTaken":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["extensionId","state","callsTaken"],"additionalProperties":false}}},"required":["queueId","waiting","longestWaitS","agents"],"additionalProperties":false}},"required":["live"],"additionalProperties":false},"QueuesCallbacksResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"queueId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"string","pattern":"^\\+?[0-9]{2,20}$"},"callerName":{"type":["string","null"]},"status":{"type":"string","enum":["pending","calling","done","failed","cancelled"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requestedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","queueId","number","callerName","status","attempts","requestedAt","lastAttemptAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"MohListResponse":{"type":"object","properties":{"classes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"description":{"type":["string","null"]},"source":{"type":"string","enum":["exobyte","library","upload","ai"]},"tracks":{"type":"array","items":{"type":"object","properties":{"promptId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string"}},"required":["promptId","name","durationMs","status"],"additionalProperties":false}},"shuffle":{"type":"boolean"},"announcePromptIds":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"announceEveryS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isDefault":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","description","source","tracks","shuffle","announcePromptIds","announceEveryS","isDefault","createdAt","updatedAt"],"additionalProperties":false}}},"required":["classes"],"additionalProperties":false},"MohCreateResponse":{"type":"object","properties":{"mohClass":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tenantId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"description":{"type":["string","null"]},"source":{"type":"string","enum":["exobyte","library","upload","ai"]},"tracks":{"type":"array","items":{"type":"object","properties":{"promptId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string"}},"required":["promptId","name","durationMs","status"],"additionalProperties":false}},"shuffle":{"type":"boolean"},"announcePromptIds":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"announceEveryS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isDefault":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","tenantId","name","description","source","tracks","shuffle","announcePromptIds","announceEveryS","isDefault","createdAt","updatedAt"],"additionalProperties":false}},"required":["mohClass"],"additionalProperties":false},"PromptsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"kind":{"type":"string","enum":["prompt","announcement","moh","whisper"]},"source":{"type":"string","enum":["tts","upload"]},"text":{"type":["string","null"]},"lang":{"type":"string"},"voiceId":{"type":["string","null"]},"params":{"anyOf":[{"type":"object","properties":{"stability":{"type":"number","minimum":0,"maximum":1},"similarity":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speed":{"type":"number","minimum":0.7,"maximum":1.2}},"additionalProperties":false},{"type":"null"}]},"status":{"type":"string","enum":["draft","queued","waiting_config","generating","ready","error"]},"temporary":{"type":"boolean"},"error":{"type":["string","null"]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"usedBy":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"}},"required":["type","id","name"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","kind","source","text","lang","voiceId","params","status","temporary","error","durationMs","version","usedBy","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"PromptsCreateTtsResponse":{"type":"object","properties":{"prompt":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"kind":{"type":"string","enum":["prompt","announcement","moh","whisper"]},"source":{"type":"string","enum":["tts","upload"]},"text":{"type":["string","null"]},"lang":{"type":"string"},"voiceId":{"type":["string","null"]},"params":{"anyOf":[{"type":"object","properties":{"stability":{"type":"number","minimum":0,"maximum":1},"similarity":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speed":{"type":"number","minimum":0.7,"maximum":1.2}},"additionalProperties":false},{"type":"null"}]},"status":{"type":"string","enum":["draft","queued","waiting_config","generating","ready","error"]},"temporary":{"type":"boolean"},"error":{"type":["string","null"]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"usedBy":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"}},"required":["type","id","name"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","kind","source","text","lang","voiceId","params","status","temporary","error","durationMs","version","usedBy","createdAt","updatedAt"],"additionalProperties":false}},"required":["prompt"],"additionalProperties":false},"ContactsListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"ownerExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"company":{"type":["string","null"]},"email":{"type":["string","null"]},"notes":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"vip":{"type":"boolean"},"blocked":{"type":"boolean"},"numbers":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string"},"label":{"type":"string","enum":["mobile","work","home","fax","other"]}},"required":["number","label"],"additionalProperties":false}},"source":{"type":"string","enum":["manual","csv","vcard","api","cdr"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","ownerExtensionId","name","company","email","notes","tags","vip","blocked","numbers","source","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"ContactsCreateResponse":{"type":"object","properties":{"contact":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"ownerExtensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"company":{"type":["string","null"]},"email":{"type":["string","null"]},"notes":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"vip":{"type":"boolean"},"blocked":{"type":"boolean"},"numbers":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string"},"label":{"type":"string","enum":["mobile","work","home","fax","other"]}},"required":["number","label"],"additionalProperties":false}},"source":{"type":"string","enum":["manual","csv","vcard","api","cdr"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","ownerExtensionId","name","company","email","notes","tags","vip","blocked","numbers","source","createdAt","updatedAt"],"additionalProperties":false}},"required":["contact"],"additionalProperties":false},"ContactsLookupResponse":{"type":"object","properties":{"number":{"type":"string"},"match":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["personal","company","extension"]},"contactId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"extensionId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"company":{"type":["string","null"]},"displayName":{"type":"string"},"vip":{"type":"boolean"},"blocked":{"type":"boolean"}},"required":["kind","contactId","extensionId","name","company","displayName","vip","blocked"],"additionalProperties":false},{"type":"null"}]}},"required":["number","match"],"additionalProperties":false},"ContactsImportResponse":{"type":"object","properties":{"created":{"type":"integer","minimum":0,"maximum":9007199254740991},"updated":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":0,"maximum":9007199254740991},"errors":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"}},"required":["line","message"],"additionalProperties":false}}},"required":["created","updated","skipped","errors"],"additionalProperties":false},"ContactsGetSettingsResponse":{"type":"object","properties":{"lookupEnabled":{"type":"boolean"},"lookupOrder":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["personal","company","extension"]}},"vipPrefix":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}]},"includeCompany":{"type":"boolean"},"blockedAction":{"type":"string","enum":["reject","busy","message"]},"blockedPromptId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["lookupEnabled","lookupOrder","vipPrefix","includeCompany","blockedAction","blockedPromptId"],"additionalProperties":false},"OpsStatusResponse":{"type":"object","properties":{"backup":{"type":"object","properties":{"state":{"type":"string","enum":["ok","running","failed","stale","unknown"]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastRun":{"anyOf":[{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ok":{"type":"boolean"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"file":{"type":["string","null"]},"error":{"type":["string","null"]}},"required":["startedAt","finishedAt","ok","sizeBytes","file","error"],"additionalProperties":false},{"type":"null"}]},"history":{"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ok":{"type":"boolean"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"file":{"type":["string","null"]},"error":{"type":["string","null"]}},"required":["startedAt","finishedAt","ok","sizeBytes","file","error"],"additionalProperties":false}},"retentionDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"offsite":{"anyOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastUploadAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["enabled","lastUploadAt"],"additionalProperties":false},{"type":"null"}]}},"required":["state","lastSuccessAt","lastRun","history","retentionDays","offsite"],"additionalProperties":false},"firewall":{"type":"object","properties":{"secd":{"type":"string","enum":["up","down"]},"backend":{"type":"string","enum":["nftables","iptables","none"]},"version":{"type":["string","null"]},"dryRun":{"type":["boolean","null"]},"sets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"entries":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","entries"],"additionalProperties":false}},"fail2ban":{"type":"object","properties":{"state":{"type":"string","enum":["up","down","unknown"]},"action":{"type":["string","null"]},"jails":{"type":"array","items":{"type":"string"}}},"required":["state","action","jails"],"additionalProperties":false},"detail":{"type":["string","null"]}},"required":["secd","backend","version","dryRun","sets","fail2ban","detail"],"additionalProperties":false},"jobs":{"type":"object","properties":{"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"waitingConfig":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"running":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["pending","waitingConfig","running","failed24h"],"additionalProperties":false},"providers":{"type":"object","properties":{"elevenlabs":{"type":"boolean"},"ovhAi":{"type":"boolean"},"ovhStt":{"type":"boolean"},"scaleway":{"type":"boolean"},"smtp":{"type":"boolean"},"telegram":{"type":"boolean"}},"required":["elevenlabs","ovhAi","ovhStt","scaleway","smtp","telegram"],"additionalProperties":false},"checkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["backup","firewall","jobs","providers","checkedAt"],"additionalProperties":false},"VoiceNodesListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"state":{"type":"string","enum":["pending","online","degraded","offline","disabled"]},"sipHost":{"type":["string","null"]},"publicIp":{"type":["string","null"]},"hostname":{"type":["string","null"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"packageVersion":{"type":["string","null"]},"asteriskVersion":{"type":["string","null"]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enrolledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enrollmentPendingUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"tenants":{"type":"integer","minimum":0,"maximum":9007199254740991},"health":{"anyOf":[{"type":"object","properties":{"asterisk":{"type":"object","properties":{"up":{"type":"boolean"},"version":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"uptimeS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeChannels":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeCalls":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"registeredEndpoints":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["up","version","uptimeS","activeChannels","activeCalls","registeredEndpoints"],"additionalProperties":false},"services":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"state":{"type":"string","enum":["up","down","unknown"]}},"required":["name","state"],"additionalProperties":false}},"certificate":{"anyOf":[{"type":"object","properties":{"domain":{"type":"string","maxLength":253},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["domain","expiresAt"],"additionalProperties":false},{"type":"null"}]},"host":{"type":"object","properties":{"loadAvg":{"maxItems":3,"type":"array","items":{"type":"number"}},"memTotalBytes":{"type":"number","minimum":0},"memFreeBytes":{"type":"number","minimum":0},"diskTotalBytes":{"type":"number","minimum":0},"diskFreeBytes":{"type":"number","minimum":0}},"required":["loadAvg","memTotalBytes","memFreeBytes","diskTotalBytes","diskFreeBytes"],"additionalProperties":false},"warnings":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":255}}},"required":["asterisk","services","certificate","host","warnings"],"additionalProperties":false},{"type":"null"}]},"notes":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","state","sipHost","publicIp","hostname","tlsEnabled","webrtcEnabled","packageVersion","asteriskVersion","lastSeenAt","enrolledAt","enrollmentPendingUntil","tenants","health","notes","createdAt","updatedAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"VoiceNodesCreateResponse":{"type":"object","properties":{"node":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"state":{"type":"string","enum":["pending","online","degraded","offline","disabled"]},"sipHost":{"type":["string","null"]},"publicIp":{"type":["string","null"]},"hostname":{"type":["string","null"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"packageVersion":{"type":["string","null"]},"asteriskVersion":{"type":["string","null"]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enrolledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enrollmentPendingUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"tenants":{"type":"integer","minimum":0,"maximum":9007199254740991},"health":{"anyOf":[{"type":"object","properties":{"asterisk":{"type":"object","properties":{"up":{"type":"boolean"},"version":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"uptimeS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeChannels":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeCalls":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"registeredEndpoints":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["up","version","uptimeS","activeChannels","activeCalls","registeredEndpoints"],"additionalProperties":false},"services":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"state":{"type":"string","enum":["up","down","unknown"]}},"required":["name","state"],"additionalProperties":false}},"certificate":{"anyOf":[{"type":"object","properties":{"domain":{"type":"string","maxLength":253},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["domain","expiresAt"],"additionalProperties":false},{"type":"null"}]},"host":{"type":"object","properties":{"loadAvg":{"maxItems":3,"type":"array","items":{"type":"number"}},"memTotalBytes":{"type":"number","minimum":0},"memFreeBytes":{"type":"number","minimum":0},"diskTotalBytes":{"type":"number","minimum":0},"diskFreeBytes":{"type":"number","minimum":0}},"required":["loadAvg","memTotalBytes","memFreeBytes","diskTotalBytes","diskFreeBytes"],"additionalProperties":false},"warnings":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":255}}},"required":["asterisk","services","certificate","host","warnings"],"additionalProperties":false},{"type":"null"}]},"notes":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","state","sipHost","publicIp","hostname","tlsEnabled","webrtcEnabled","packageVersion","asteriskVersion","lastSeenAt","enrolledAt","enrollmentPendingUntil","tenants","health","notes","createdAt","updatedAt"],"additionalProperties":false},"enrollment":{"type":"object","properties":{"code":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"installCommand":{"type":"string"}},"required":["code","expiresAt","installCommand"],"additionalProperties":false}},"required":["node","enrollment"],"additionalProperties":false},"VoiceNodesGetResponse":{"type":"object","properties":{"node":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"state":{"type":"string","enum":["pending","online","degraded","offline","disabled"]},"sipHost":{"type":["string","null"]},"publicIp":{"type":["string","null"]},"hostname":{"type":["string","null"]},"tlsEnabled":{"type":"boolean"},"webrtcEnabled":{"type":"boolean"},"packageVersion":{"type":["string","null"]},"asteriskVersion":{"type":["string","null"]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enrolledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enrollmentPendingUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"tenants":{"type":"integer","minimum":0,"maximum":9007199254740991},"health":{"anyOf":[{"type":"object","properties":{"asterisk":{"type":"object","properties":{"up":{"type":"boolean"},"version":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"uptimeS":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeChannels":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeCalls":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"registeredEndpoints":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["up","version","uptimeS","activeChannels","activeCalls","registeredEndpoints"],"additionalProperties":false},"services":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"state":{"type":"string","enum":["up","down","unknown"]}},"required":["name","state"],"additionalProperties":false}},"certificate":{"anyOf":[{"type":"object","properties":{"domain":{"type":"string","maxLength":253},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["domain","expiresAt"],"additionalProperties":false},{"type":"null"}]},"host":{"type":"object","properties":{"loadAvg":{"maxItems":3,"type":"array","items":{"type":"number"}},"memTotalBytes":{"type":"number","minimum":0},"memFreeBytes":{"type":"number","minimum":0},"diskTotalBytes":{"type":"number","minimum":0},"diskFreeBytes":{"type":"number","minimum":0}},"required":["loadAvg","memTotalBytes","memFreeBytes","diskTotalBytes","diskFreeBytes"],"additionalProperties":false},"warnings":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":255}}},"required":["asterisk","services","certificate","host","warnings"],"additionalProperties":false},{"type":"null"}]},"notes":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","state","sipHost","publicIp","hostname","tlsEnabled","webrtcEnabled","packageVersion","asteriskVersion","lastSeenAt","enrolledAt","enrollmentPendingUntil","tenants","health","notes","createdAt","updatedAt"],"additionalProperties":false}},"required":["node"],"additionalProperties":false},"TenantsGetVoiceNodeResponse":{"type":"object","properties":{"tenantId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"voiceNodeId":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"voiceNodeName":{"type":["string","null"]},"sipHost":{"type":["string","null"]},"effectiveSipHost":{"type":"string"},"webrtcAvailable":{"type":"boolean"}},"required":["tenantId","voiceNodeId","voiceNodeName","sipHost","effectiveSipHost","webrtcAvailable"],"additionalProperties":false},"VoicesListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"voiceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{4,64}$"},"name":{"type":"string"},"fullName":{"type":"string"},"description":{"type":["string","null"]},"gender":{"anyOf":[{"type":"string","enum":["female","male","neutral"]},{"type":"null"}]},"age":{"type":["string","null"]},"accent":{"type":["string","null"]},"tone":{"type":["string","null"]},"useCase":{"type":["string","null"]},"languages":{"type":"array","items":{"type":"string"}},"category":{"type":"string"},"quality":{"type":"string","enum":["verified","multilingual"]},"previewAvailable":{"type":"boolean"},"active":{"type":"boolean"},"isPlatformDefault":{"type":"boolean"},"isTenantDefault":{"type":"boolean"},"isDefault":{"type":"boolean"},"sortOrder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["voiceId","name","fullName","description","gender","age","accent","tone","useCase","languages","category","quality","previewAvailable","active","isPlatformDefault","isTenantDefault","isDefault","sortOrder"],"additionalProperties":false}},"defaultVoiceId":{"type":["string","null"]},"platformDefaultVoiceId":{"type":["string","null"]},"tenantDefaultVoiceId":{"type":["string","null"]},"catalog":{"type":"object","properties":{"syncedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"pending":{"type":"boolean"},"lastError":{"type":["string","null"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["syncedAt","pending","lastError","total"],"additionalProperties":false},"samples":{"anyOf":[{"type":"object","properties":{"maxChars":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dailyLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"usedToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["maxChars","dailyLimit","usedToday"],"additionalProperties":false},{"type":"null"}]}},"required":["items","defaultVoiceId","platformDefaultVoiceId","tenantDefaultVoiceId","catalog","samples"],"additionalProperties":false},"VoicesSyncResponse":{"type":"object","properties":{"catalog":{"type":"object","properties":{"syncedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"pending":{"type":"boolean"},"lastError":{"type":["string","null"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["syncedAt","pending","lastError","total"],"additionalProperties":false}},"required":["catalog"],"additionalProperties":false},"VoicesSetTenantDefaultResponse":{"type":"object","properties":{"voiceId":{"type":["string","null"]},"defaultVoiceId":{"type":["string","null"]}},"required":["voiceId","defaultVoiceId"],"additionalProperties":false}},"securitySchemes":{"apiKeyBearer":{"type":"http","scheme":"bearer","bearerFormat":"exo_live_…","description":"Chiave API: Authorization: Bearer exo_live_…"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Chiave API nell’header X-API-Key"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"exopbx_at","description":"Sessione del pannello"}}}}