ExoVoIP Manuale sviluppatori

Pacchetti

I pacchetti sono i piani commerciali di ExoVoIP: ogni pacchetto stabilisce cosa comprende il centralino di un'azienda. L'amministratore della piattaforma crea i pacchetti, ne assegna uno a ogni azienda e può fissare eccezioni per la singola azienda. I limiti effettivi sono quelli del pacchetto, con le eccezioni dell'azienda al posto delle voci corrispondenti.

Voci del pacchetto

CampoSignificatoQuando si supera
maxExtInterni disponibili (0 = nessuno)POST /v1/extensions risponde 409 LIMIT_REACHED
maxCallsChiamate esterne contemporanee, in entrata e in uscitaIl centralino rifiuta le chiamate oltre il limite
maxTrunksLinee proprie dell'azienda (le linee condivise della piattaforma non contano)POST /v1/trunks risponde 409 LIMIT_REACHED
maxNumbersNumeri assegnati all'aziendaCreazione e assegnazione dei numeri rispondono 409 LIMIT_REACHED
maxPromptsMessaggi vocali: messaggi, annunci, musiche e avvisi (esclusi gli avvisi creati per gli inoltri)POST /v1/prompts e il caricamento rispondono 409 LIMIT_REACHED
maxStorageMbSpazio massimo per le registrazioni (MB)Lo spazio scelto dall'azienda (quotaMb) non può superarlo
aiMonthlyMinutesMinuti di trascrizione AI al mese (registrazioni e segreteria)Le nuove trascrizioni del mese non vengono eseguite
maxAppDevicesDispositivi con l'app ExoVoIP per ogni internoL'attivazione di un nuovo dispositivo risponde 409 LIMIT_REACHED
pluginsFunzioni extra incluseLe funzioni non incluse rispondono 403 PLUGIN_REQUIRED

null significa senza limite (ammesso per maxTrunks, maxNumbers, maxPrompts, maxStorageMb e aiMonthlyMinutes). L'errore 409 LIMIT_REACHED riporta in details la voce (limit), il massimo (max) e, dove serve, l'utilizzo attuale (used).

Limiti e utilizzo dell'azienda

GET /v1/tenants/current/limits (scope extensions:read) restituisce il pacchetto dell'azienda della chiave, i limiti effettivi in limits e l'utilizzo in usage: interni, linee, numeri, messaggi vocali, spazio occupato dalle registrazioni (MB) e minuti di trascrizione usati nel mese in corso.

# Limiti del pacchetto e utilizzo dell'azienda della chiave
curl -s https://centralino.exovoip.it/api/v1/tenants/current/limits -H "X-API-Key: $EXOPBX_API_KEY"
# Oltre un limite
# HTTP/1.1 409 Conflict
# {"error":{"code":"LIMIT_REACHED","message":"Il pacchetto comprende al massimo 10 messaggi vocali","details":{"limit":"prompts","max":10,"used":10}}}

Gestione dei pacchetti (amministratore della piattaforma)

Gli endpoint packages.* sono riservati all'amministratore della piattaforma (scope tenants:read / tenants:write).

  • POST /v1/packages crea un pacchetto con nome, descrizione e tutte le voci in limits; isDefault: true lo rende il pacchetto proposto alle nuove aziende (uno solo alla volta).
  • PATCH /v1/packages/:id modifica nome, descrizione e singole voci: i nuovi limiti valgono subito per tutte le aziende del pacchetto, tranne le voci che l'azienda ha come eccezione.
  • DELETE /v1/packages/:id elimina un pacchetto non assegnato; se è assegnato ad aziende o è quello proposto alle nuove aziende risponde 409 IN_USE.

All'installazione esiste il pacchetto Standard (50 interni, 10 chiamate contemporanee, nessun altro limite, nessuna funzione extra): le aziende già presenti lo ricevono e conservano come eccezioni i limiti che avevano prima.

Pacchetto ed eccezioni di un'azienda

GET /v1/tenants/:id/package restituisce pacchetto, eccezioni (overrides), limiti effettivi e utilizzo dell'azienda. PUT /v1/tenants/:id/package assegna il pacchetto e, con overrides, sostituisce le eccezioni ({} le toglie tutte; senza overrides restano quelle attuali). Le eccezioni uguali al pacchetto vengono tolte automaticamente.

Anche PUT /v1/tenants/:id/limits (interni e chiamate), PUT /v1/tenants/:id/plugins (funzioni extra) e aiMonthlyMinutes in PATCH /v1/tenants/:id salvano eccezioni dell'azienda. Chiamate contemporanee e funzioni extra si applicano subito al centralino.

# Solo amministratore della piattaforma (chiave globale)
curl -s -X POST https://centralino.exovoip.it/api/v1/packages -H "X-API-Key: $EXOPBX_API_KEY" \
  -H "Content-Type: application/json" -d '{
    "name": "Professional",
    "limits": {"maxExt": 100, "maxCalls": 20, "maxTrunks": 2, "maxNumbers": 10,
               "maxPrompts": null, "maxStorageMb": 10240, "aiMonthlyMinutes": 300,
               "maxAppDevices": 5, "plugins": ["recording"]}
  }'
# Assegna il pacchetto all'azienda 3 con un'eccezione: 30 chiamate contemporanee
curl -s -X PUT https://centralino.exovoip.it/api/v1/tenants/3/package -H "X-API-Key: $EXOPBX_API_KEY" \
  -H "Content-Type: application/json" -d '{"packageId": 2, "overrides": {"maxCalls": 30}}'

Endpoint

DescrizioneRichiestaScopeMetodo SDK
Elenco pacchetti con il numero di aziende che li usanoGET /v1/packagestenants:readpackages.list()
Crea pacchettoPOST /v1/packagestenants:writepackages.create()
Dettaglio pacchettoGET /v1/packages/:idtenants:readpackages.get()
Modifica pacchetto (i nuovi limiti valgono subito per tutte le sue aziende)PATCH /v1/packages/:idtenants:writepackages.update()
Elimina pacchetto (409 IN_USE se assegnato o proposto alle nuove aziende)DELETE /v1/packages/:idtenants:writepackages.delete()