Capitolo 1

Panoramica API

L'API BigBlueButton è un'interfaccia basata su HTTP che consente ad applicazioni esterne — come sistemi di gestione dell'apprendimento, portali web e integrazioni personalizzate — di creare, controllare e monitorare riunioni in modo programmatico. Tutte le chiamate API sono protette tramite un meccanismo checksum basato su un shared secret.

Come funziona l'API

L'API BBB segue un semplice modello richiesta-risposta. Invi un richiesta HTTPS a uno specifico endpoint sul tuo server BigBlueButton e il server risponde con un documento XML che indica successo o errore.

  • Protocollo: HTTPS (GET o POST)
  • URL di base: https://<server>/bigbluebutton/api/<endpoint>?<parameters>&checksum=<hash>
  • Formato di risposta: XML (con poche eccezioni che restituiscono JSON)
  • Autenticazione: Shared-secret basata su checksum (nessun OAuth, nessuna chiave API)

Categorie degli endpoint

Gli endpoint API sono organizzati nelle seguenti categorie:

Categoria Endpoint Descrizione
Amministrazione create, join, end Creare, partecipare e terminare riunioni
Monitoraggio isMeetingRunning, getMeetings, getMeetingInfo Monitorare le riunioni in esecuzione
Registrazioni getRecordings, publishRecordings, deleteRecordings, updateRecordings, getRecordingTextTracks, putRecordingTextTrack Gestire le registrazioni delle riunioni
Webhooks hooks/create, hooks/list, hooks/destroy Notifiche di eventi in tempo reale
Messaggistica sendChatMessage Inviare messaggi in chat BBB 3.0+
Sessione getJoinUrl, feedback Gestione della sessione BBB 3.0+

Metodi HTTP

La maggior parte degli endpoint accetta sia richieste GET sia POST. Quando usi POST, tieni presente che il checksum viene calcolato dalla query string dell'URL, non dal corpo della richiesta. Il corpo POST può contenere dati aggiuntivi come XML di presentazione o sovrascritture delle impostazioni client.

Anche quando invii una richiesta POST, il checksum deve essere calcolato dai parametri query string nell'URL. Il contenuto del corpo non è incluso nel calcolo del checksum.

Formato della risposta

Ogni risposta API contiene almeno i seguenti campi:

<response>
  <returncode>SUCCESS</returncode>
  <!-- or -->
  <returncode>FAILED</returncode>
  <messageKey>errorKey</messageKey>
  <message>Human-readable error message</message>
</response>
Campo Descrizione
returncode Sempre SUCCESS o FAILED
messageKey Codice di errore leggibile dalla macchina (presente solo in caso di errori o avvisi)
message Descrizione dell'errore o dell'avviso leggibile dall'uomo

Versioning dell'API

L'API BigBlueButton non usa il tradizionale versionamento basato su URL (nessun percorso /v1/, /v2/). Invece, vengono aggiunti nuovi parametri in modo retrocompatibile e i parametri deprecati vengono contrassegnati di conseguenza ma non rimossi immediatamente.

Versione BBB Modifiche API rilevanti
2.2 impostazioni Lock, allowModsToUnmuteUsers
2.4 logo, meetingLayout, allowModsToEjectCameras, Dashboard di apprendimento
2.5 disabledFeatures, supporto SHA-384/SHA-512, webhook eventID filtro
2.6 notifyRecordingIsOn, presentationUploadExternalUrl, modalità scura
2.7 preUploadedPresentation (URL singolo), registrazione pagination
3.0 sendChatMessage, getJoinUrl, feedback, pluginManifests, clientSettingsOverride, role sostituisce password su join

Endpoint non documentati

I seguenti endpoint esistono nel codice sorgente BigBlueButton ma non sono trattati nella documentazione ufficiale. Sono usati internamente e possono cambiare senza preavviso.

Endpoint Metodo Descrizione Stato
/api/stuns GET POST Restituisce la configurazione del server STUN/TURN per le connessioni WebRTC Undocumented
/api/signOut GET POST Termina la sessione / disconnette l'utente Undocumented
/api/guestWait GET Interroga lo stato della lobby per gli ospiti in attesa dell'approvazione del moderatore Undocumented
/api/getSessions GET POST Recupera informazioni sulla sessione Undocumented
/api/learningDashboard GET POST Recupera dati di learning analytics Undocumented

Mutazioni GraphQL (azioni in riunione)

Da BBB 3.0, la maggior parte delle azioni in tempo reale all'interno di una riunione viene gestita tramite mutazioni GraphQL su WebSocket. Queste sono usate internamente dal client HTML5 BBB e non fanno parte della classica API REST.

Categoria Conteggio Esempi
Chat 9 chatSendMessage, chatDeleteMessage, chatEditMessage
Gestione utenti 26 userSetMuted, userSetRole, userEjectFromMeeting
Presentazione 11 presentationSetCurrent, presentationSetPage
Controllo della riunione 8 meetingEnd, meetingRecordingSetStatus
Stanze di sottogruppo 7 breakoutRoomCreate, breakoutRoomEndAll
Sondaggi 4 pollCreate, pollSubmitUserVote, pollPublishResult
Timer 8 timerStart, timerStop, timerReset
Plugin 8 pluginDataChannelPushEntry, pluginPersistEvent

Il livello GraphQL è destinato all'uso interno del client e non fornisce un'API pubblica stabile. Le mutazioni e i loro parametri possono cambiare tra versioni BBB senza preavviso.

Prerequisiti

Prima di poter iniziare a usare l'API BigBlueButton, assicurati di avere quanto segue:

Un server BigBlueButton in esecuzione (versione 3.0 consigliata)

Il segreto condiviso (chiamato anche "security salt"), configurato in /etc/bigbluebutton/bbb-web.properties

Accesso HTTPS al server

Un'applicazione lato server che genera le chiamate API — il shared secret non deve mai essere esposto sul lato client

Non esporre mai il shared secret nel codice lato client (JavaScript, app mobili). Tutte le chiamate API devono essere generate lato server per prevenire accessi non autorizzati al tuo server BigBlueButton.

bbbserver.de — IntegrationAPI

Il tuo URL API e il shared secret sono disponibili nel pannello di amministrazione bbbserver in Customer Settings → IntegrationAPI. Il IntegrationAPI può essere abilitato o disabilitato da lì.

Compatibilità Plugin

Le seguenti piattaforme funzionano subito — basta inserire l'URL API e il shared secret:

  • Moodle (BigBlueButtonBN)
  • ILIAS
  • Nextcloud
  • WordPress
  • Greenlight

Differenze rispetto all'API standard

Argomento Dettaglio
maxParticipants / duration Utilizzato per la prenotazione della capacità, non solo come limite. Valori predefiniti se non specificati: 5 partecipanti, 60 minuti.
duration comportamento NON termina automaticamente le riunioni — utilizzato solo per la pianificazione della capacità.
Parametro aggiuntivo deactivateBbbserverDefaultChatTexts — per finalità di white-labeling.
Endpoint non disponibili updateRecordings, getDefaultConfigXML, setConfigXML, getRecordingTextTracks, putRecordingTextTracks
Webhooks Solo specifico per riunione, con offuscamento della privacy.
Limiti di velocità Nessun limite di frequenza sul IntegrationAPI.

Oltre al IntegrationAPI, bbbserver.de offre un System API separato con funzionalità specifiche della piattaforma come gestione dell'account e statistiche di utilizzo. Il System API non è compatibile con BBB e non è trattato in questa guida.

Domande frequenti

L'API usa un meccanismo di shared-secret basato su checksum. Ogni richiesta deve includere un parametro checksum calcolato eseguendo l'hash del nome della chiamata API, del query string e del shared secret. Non esiste autenticazione OAuth o con chiave API.

Il formato di risposta standard è XML. Alcuni endpoint specifici possono restituire JSON, ma la grande maggioranza delle chiamate API restituisce documenti XML con un campo returncode che indica SUCCESS o FAILED.

No, l'API BigBlueButton non usa il versionamento basato su URL. I nuovi parametri vengono aggiunti in modo retrocompatibile e i parametri deprecati vengono contrassegnati ma non rimossi immediatamente. Dovresti sempre controllare il changelog della tua versione BBB.

No. Il livello GraphQL è progettato per uso interno dal client HTML5 BBB. Non fornisce un'API pubblica stabile e le mutazioni possono cambiare tra versioni senza preavviso. Usa l'API REST per tutte le integrazioni esterne.

Il bbbserver.de IntegrationAPI è un proxy che replica completamente l'API BBB standard. Le applicazioni esterne vi si collegano come se comunicassero con un singolo server BBB. Le principali differenze sono la prenotazione della capacità tramite maxParticipants/duration, alcuni endpoint non disponibili e restrizioni webhook specifiche della riunione.

BigBlueButton 2.5 e versioni successive supportano SHA-256, SHA-384 e SHA-512 per il calcolo del checksum. Le versioni precedenti usano SHA-1 o SHA-256. Per motivi di sicurezza si consiglia di usare SHA-256 o superiore.