ExoVoIPDeveloper guide

Phonebook

Company phonebook and personal phonebooks of extensions. Contacts provide the name shown on phone displays for incoming calls, and can be marked as VIP (priority) or blocked. Scopes contacts:read / contacts:write.

Contacts

curl -s -X POST https://centralino.exovoip.it/api/v1/contacts \
  -H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Laura Neri","company":"Neri Impianti","vip":true,
       "numbers":[{"number":"+393471234567","label":"mobile"}]}'
curl -s "https://centralino.exovoip.it/api/v1/contacts/lookup?number=%2B393471234567" -H "X-API-Key: $EXOPBX_API_KEY"
  • ownerExtensionId: omitted for company contacts, set for an extension's personal contacts.
  • numbers[]: one or more numbers with a label.
  • vip, blocked: priority contact / blocked calls (action defined in the settings).
  • Search: q, tag, vip, blocked, scope (all, company, personal).

GET /v1/contacts/lookup?number= returns the contact associated with a number, using the same rules the phone system applies for the display name.

Import and export

curl -s -X POST https://centralino.exovoip.it/api/v1/contacts/import \
  -H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
  -d '{"format":"csv","onDuplicate":"update","data":"nome;telefono\nLaura Neri;+393471234567"}'
curl -s "https://centralino.exovoip.it/api/v1/contacts/export?format=vcard" -H "X-API-Key: $EXOPBX_API_KEY" -o rubrica.vcf

Import accepts CSV and vCard; onDuplicate chooses whether to update (update, default) or skip (skip) existing contacts. Export produces CSV or vCard.

Settings

PUT /v1/contacts/settings: name lookup enabled, lookup order, VIP prefix, company name on the display, action for blocked numbers.

Endpoints

RequestScopeSDK method
GET /v1/contactscontacts:readcontacts.list()
POST /v1/contactscontacts:writecontacts.create()
GET /v1/contacts/lookupcontacts:readcontacts.lookup()
POST /v1/contacts/importcontacts:writecontacts.import()
GET /v1/contacts/exportcontacts:readcontacts.export()
GET /v1/contacts/settingscontacts:readcontacts.getSettings() · py: contacts.get_settings()
PUT /v1/contacts/settingscontacts:writecontacts.setSettings() · py: contacts.set_settings()
GET /v1/contacts/:idcontacts:readcontacts.get()
PATCH /v1/contacts/:idcontacts:writecontacts.update()
DELETE /v1/contacts/:idcontacts:writecontacts.delete()