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.

capabilities is threaded to each Contact.from_api_response() call so the parser can choose between door-phone and apartment-book parse paths via capabilities.schema_shapes.get("contact", SchemaShape.DOOR_PHONE) (FR-015). The default None falls through to the door-phone branch, preserving byte-identical behaviour for direct callers (FR-016 / SC-008).

Return type:

list[Contact]

Parameters:
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. The AkuvoxDevice.add_contact() wrapper performs the capability gate before delegating here.

Return type:

None

Parameters:
  • http (AkuvoxHttpClient)

  • name (str)

  • phone (str | None)

  • group (str | None)

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.

Return type:

None

Parameters:
  • http (AkuvoxHttpClient)

  • id (str)

  • name (str | None)

  • phone (str | None)

  • group (str | None)

async pylocal_akuvox.contacts.delete_contact(http, *, id)[source]

Delete one or more contacts from the device.

delete_contact is shape-agnostic: Akuvox firmware only accepts a delete-by-id payload on either schema. The AkuvoxDevice.delete_contact() wrapper performs the capability gate via self._capabilities.require(Capability.CONTACT_DELETE, ...) and then delegates here without further dispatch.

Return type:

None

Parameters: