SDK
SDK ufficiali per TypeScript/JavaScript, PHP e Python, generati dal documento OpenAPI dell'API. Ogni operazione dell'API ha un metodo corrispondente, raggruppato per area: pbx.extensions.create(...), pbx.calendars.force(...), pbx.live.stream(...).
Download
| Linguaggio | Requisiti | Archivio |
|---|---|---|
| TypeScript / JavaScript | Node.js 18+ o browser moderni, nessuna dipendenza | typescript.zip |
| PHP | PHP 8.1+, estensioni curl e json, nessuna dipendenza | php.zip |
| Python | Python 3.10+, httpx | python.zip |
Ogni archivio contiene sorgenti, README, esempi pronti e test. Versione attuale: 1.0.0.
Installazione
# Nessuna installazione: cURL e la chiave API in una variabile d'ambiente
export EXOPBX_API_KEY="exo_live_..."// npm install ./exopbx-sdk-typescript (archivio typescript.zip)
import { ExoPBX } from '@exobyte/exopbx-sdk';
const pbx = new ExoPBX({ apiKey: process.env.EXOPBX_API_KEY });// composer config repositories.exopbx path ./exopbx-sdk-php && composer require exobyte/exopbx-sdk
require 'vendor/autoload.php';
use Exobyte\ExoPBX\Client;
$pbx = new Client(['apiKey' => getenv('EXOPBX_API_KEY')]);# pip install ./exopbx-sdk-python
import os
from exopbx import ExoPBX
pbx = ExoPBX(api_key=os.environ["EXOPBX_API_KEY"]) # oppure ExoPBX() legge EXOPBX_API_KEY- TypeScript:
npm install ./exopbx-sdk-typescript(l'archivio include la build indist/con i tipi). - PHP: con Composer, aggiungi la cartella come repository di tipo
pathe richiediexobyte/exopbx-sdk; senza Composer basta un autoload PSR-4 della cartellasrc/(namespaceExobyte\ExoPBX). - Python:
pip install ./exopbx-sdk-python.
Funzioni comuni
| Funzione | TypeScript | PHP | Python |
|---|---|---|---|
Chiave API (X-API-Key) | apiKey | apiKey | api_key / EXOPBX_API_KEY |
| Indirizzo dell'API | baseUrl | baseUrl | base_url |
Azienda (X-Tenant-Id) | tenantId | tenantId | tenant_id |
| Nuovi tentativi su 429 e errori temporanei | maxRetries | maxRetries | max_retries |
| Paginazione | pbx.paginate(...) | $pbx->paginate(...) | pbx.paginate(...) |
| Idempotency-Key automatica sulle POST | sì | sì | sì |
| Errori tipizzati | ExoPBXError | ApiException | ExoPBXError |
| Eventi SSE con riconnessione | pbx.live.stream() | $pbx->live->stream() | pbx.live.stream() |
| Eventi WebSocket | pbx.live.websocket() | — | — |
| Verifica firma webhook | constructWebhookEvent() | Webhook::constructEvent() | construct_event() |
Il valore predefinito dell'indirizzo è in una sola costante per SDK (DEFAULT_BASE_URL in TypeScript e Python, Defaults::BASE_URL in PHP), oggi https://centralino.exovoip.it/api.
export EXOPBX_BASE_URL="https://centralino.exovoip.it/api"
curl -s "$EXOPBX_BASE_URL/health"const pbx = new ExoPBX({
apiKey: process.env.EXOPBX_API_KEY,
baseUrl: 'https://centralino.exovoip.it/api', // predefinito: DEFAULT_BASE_URL
});$pbx = new Client([
'apiKey' => getenv('EXOPBX_API_KEY'),
'baseUrl' => 'https://centralino.exovoip.it/api', // predefinito: Defaults::BASE_URL
]);pbx = ExoPBX(base_url="https://centralino.exovoip.it/api") # predefinito: exopbx.DEFAULT_BASE_URLNomi dei metodi
- TypeScript e PHP:
gruppo.operazionein camelCase, come nella colonna "Metodo SDK" delle guide (pbx.ringGroups.create,$pbx->ringGroups->create). - Python: stessi nomi in snake_case (
pbx.ring_groups.create); i parametri di query sono argomenti con nome (pbx.cdr.list(from_="2026-11-01", limit=100)). - I parametri del percorso (
:id,:extensionId) sono i primi argomenti, poi il corpo (o i filtri) e infine le opzioni della singola richiesta.
Tipi (TypeScript)
Tutti i corpi e le risposte sono tipizzati dagli schemi dell'API: l'editor suggerisce campi e valori consentiti e segnala gli errori prima dell'esecuzione. I tipi sono esportati anche come Schemas:
import type { Schemas } from '@exobyte/exopbx-sdk';
type Extension = Schemas.ExtensionsGetResponse['extension'];Aggiornamenti
Gli SDK sono rigenerati a ogni modifica dell'API. Scarica la nuova versione da questa pagina; i metodi esistenti restano compatibili all'interno della versione v1 dell'API.
