Contacts¶
Contact schema shapes¶
Akuvox exposes two contact models through /api/contact/*. Door-phone
classes such as X916 and E18C use a flat contact record with ID,
Name, Phone, and Group. Apartment-book classes such as X915S
use a building or apartment record with Name, Phone, APTName,
APTNum, Building, and Landline. Apartment-book contact records
do not carry a device-assigned ID or Group.
The shared pylocal_akuvox.Contact model exposes apartment-book
metadata as apt_name, apt_num, building, and landline. These
fields are None for door-phone records. The active
schema_shapes["contact"] capability selects the parser branch, so the
behaviour is device-class driven rather than hard-coded to one model.
Door-phone classes support contact reads and writes when their capability profile marks the operation supported. Apartment-book contacts are read-only over the public HTTP API; manage them out-of-band through the device web UI, provisioning, or another vendor-supported channel.
Contact management operations for Akuvox devices.
Note
This module uses the /api/contact/* HTTP endpoints which manage a
separate data store from the Akuvox device web UI. Contacts
created via these endpoints will not appear in the web UI, and
vice-versa. The web UI uses session-authenticated /web/ endpoints
that are not supported by this library.
- async pylocal_akuvox.contacts.list_contacts(http, *, page=None, capabilities=None)[source]¶
List contacts from the device, optionally paginated.
capabilitiesis threaded to eachContact.from_api_response()call so the parser can choose between door-phone and apartment-book parse paths viacapabilities.schema_shapes.get("contact", SchemaShape.DOOR_PHONE)(FR-015). The defaultNonefalls through to the door-phone branch, preserving byte-identical behaviour for direct callers (FR-016 / SC-008).- Return type:
- Parameters:
http (AkuvoxHttpClient)
page (int | None)
capabilities (DeviceCapabilities | None)
- async pylocal_akuvox.contacts.add_contact(http, *, name, phone=None, group=None)[source]¶
Add a contact to the device address book.
Service-module functions stay capability-unaware: this function does not consult any global capability matrix or
self._capabilities. TheAkuvoxDevice.add_contact()wrapper performs the capability gate before delegating here.
- async pylocal_akuvox.contacts.modify_contact(http, *, id, name=None, phone=None, group=None)[source]¶
Modify an existing contact on the device.
The device requires a full contact record for set operations, so this fetches the current record and merges changes.
Service-module functions stay capability-unaware: see
add_contact()for the wrapper-gating contract.
- async pylocal_akuvox.contacts.delete_contact(http, *, id)[source]¶
Delete one or more contacts from the device.
delete_contactis shape-agnostic: Akuvox firmware only accepts a delete-by-id payload on either schema. TheAkuvoxDevice.delete_contact()wrapper performs the capability gate viaself._capabilities.require(Capability.CONTACT_DELETE, ...)and then delegates here without further dispatch.