/Zentrunk/, no SDK helpers). Vobiz models the same primitives as typed, SDK-backed resources — trunks, ip_access_control_list, credentials, and origination_uri.
Vobiz base URL is
https://api.vobiz.ai/api/v1 and every path is account-scoped: /Account/{auth_id}/trunks. Plivo Zentrunk lives at https://api.plivo.com/v1/Account/{auth_id}/Zentrunk/….Plivo → Vobiz mapping
| Operation | Plivo Zentrunk (REST) | Vobiz REST | Vobiz SDK (Python / Node) |
|---|---|---|---|
| Create trunk | POST /Zentrunk/Trunk/ | POST /trunks | trunks.create_trunk / trunks.createTrunk |
| List trunks | GET /Zentrunk/Trunk/ | GET /trunks | trunks.list_trunks / trunks.listTrunks |
| Retrieve trunk | GET /Zentrunk/Trunk/{uuid}/ | GET /trunks/{trunk_id} | trunks.retrieve_trunk / trunks.retrieveTrunk |
| Update trunk | POST /Zentrunk/Trunk/{uuid}/ | PUT /trunks/{trunk_id} | trunks.update_trunk / trunks.updateTrunk |
| Delete trunk | DELETE /Zentrunk/Trunk/{uuid}/ | DELETE /trunks/{trunk_id} | trunks.delete_trunk / trunks.deleteTrunk |
| Create IP ACL | POST /Zentrunk/IPAccessControlList/ | POST /ip-acl | ip_access_control_list.create_ip_acl / ipAccessControlList.createIpAcl |
| List IP ACLs | GET /Zentrunk/IPAccessControlList/ | GET /trunks/ip-acl | ip_access_control_list.list_ip_acls / ipAccessControlList.listIpAcls |
| Update IP ACL | POST /Zentrunk/IPAccessControlList/{uuid}/ | PUT /ip-acl/{ip_acl_id} | ip_access_control_list.update_ip_acl / ipAccessControlList.updateIpAcl |
| Delete IP ACL | DELETE /Zentrunk/IPAccessControlList/{uuid}/ | DELETE /ip-acl/{ip_acl_id} | ip_access_control_list.delete_ip_acl / ipAccessControlList.deleteIpAcl |
| Create credential | POST /Zentrunk/Credential/ | POST /credentials | credentials.create_credential / credentials.createCredential |
| List credentials | GET /Zentrunk/Credential/ | GET /trunks/credentials | credentials.list_credentials / credentials.listCredentials |
| Update credential (password) | POST /Zentrunk/Credential/{uuid}/ | PUT /credentials/{credential_id} | credentials.update_credential / credentials.updateCredential |
| Delete credential | DELETE /Zentrunk/Credential/{uuid}/ | DELETE /credentials/{credential_id} | credentials.delete_credential / credentials.deleteCredential |
| Create origination URI | POST /Zentrunk/URI/ | POST /origination-uris | origination_uri.create_origination_uri / originationUri.createOriginationUri |
| List origination URIs | GET /Zentrunk/URI/ | GET /trunks/origination-uris | origination_uri.list_origination_uris / originationUri.listOriginationUris |
| Update origination URI | POST /Zentrunk/URI/{uuid}/ | PUT /origination-uris/{id} | origination_uri.update_origination_uri / originationUri.updateOriginationUri |
| Delete origination URI | DELETE /Zentrunk/URI/{uuid}/ | DELETE /origination-uris/{id} | origination_uri.delete_origination_uri / originationUri.deleteOriginationUri |
| Route a DID into an inbound trunk | Number app/console binding | POST /Number/{number}/ | phone_numbers.assign_number_to_trunk / phoneNumbers.assignNumberToTrunk |
Before / after: bring up an outbound trunk
An outbound trunk lets your PBX/SBC send calls to the carrier. You (1) create an auth method — an IP ACL or a username/password credential — and (2) create the trunk.Plivo (cURL — no SDK)
Vobiz (Python SDK)
Binding model difference: Plivo passes
ipacl_uuid / credential_uuid inside the trunk-create body. Vobiz IP ACLs and credentials are account-scoped — create_trunk only accepts name, trunk_type, and max_concurrent_calls; the trunk is identified by its returned trunk_domain, and any account credential/IP rule authenticates against it.Key differences & gotchas
- Auth header, not Basic Auth. Vobiz uses
X-Auth-ID/X-Auth-Tokenheaders (set by the SDK) instead of Plivo’s HTTP Basic--user AUTH_ID:AUTH_TOKEN. - Updates are
PUT, not re-POST. Vobiz uses a properPUTforupdate_trunk,update_credential,update_ip_acl, andupdate_origination_uri. - One IP per rule. A Plivo ACL holds an
ip_addressesarray; a Vobizcreate_ip_aclrule takes a singleip_address(CIDR allowed), so one Plivo ACL becomes N rules or one CIDR block. - Direction is a type, and
bothexists. Vobizcreate_trunktakestrunk_type(OUTBOUND/INBOUND); the storedtrunk_directioncan also beboth.
What has no Vobiz equivalent
fallback_uri_uuidas a dedicated slot. No single “fallback URI” field; model primary/secondary destinations as multipleorigination_urirecords ordered bypriority/weight.- Multi-IP ACL objects. No array-valued ACL — express each address or CIDR block as its own
ip-aclrule. - Binding auth at trunk-create time.
create_trunkdoes not acceptipacl_uuid/credential_uuid; IP ACLs and credentials are account-scoped, not pinned to one trunk UUID. secure/transportin the create body. These appear on the Vobiz trunk object but aren’t part of thecreate_trunkrequest body; set them viaupdate_trunkor account defaults.