Contacts

class ab.api.endpoints.contacts.ContactsEndpoint(client, resolver)[source]

Operations on contacts (ACPortal API).

Parameters:
  • client (Any)

  • resolver (CodeResolver)

get(contact_id)[source]

GET /contacts/{id}

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/get.html Response model: ContactSimple

Parameters:

contact_id (str)

Return type:

ContactSimple

get_did(contact_did)[source]

Resolve a contact display ID through CodeResolver, then GET /contacts/{id}.

Parameters:

contact_did (str | int)

Return type:

ContactSimple

get_details(contact_id)[source]

GET /contacts/{contactId}/editdetails

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/get_details.html Response model: ContactDetailedInfo

Parameters:

contact_id (str)

Return type:

ContactDetailedInfo

update_details(contact_id, *, data, franchisee_id=None)[source]

PUT /contacts/{contactId}/editdetails.

Parameters:
  • contact_id (str) – Contact identifier.

  • data (ContactEditRequest | dict) – Contact edit payload with name, email, phone, addresses. Accepts a ContactEditRequest instance or a dict.

  • franchisee_id (str | None) – Franchisee UUID filter (query param).

Return type:

None

Request model: ContactEditRequest Params model: ContactEditParams

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/update_details.html Request model: ContactEditRequest Query params: ContactEditParams

create(*, data, franchisee_id=None)[source]

POST /contacts/editdetails.

Parameters:
  • data (ContactEditRequest | dict) – Contact creation payload with name, email, phone, addresses. Accepts a ContactEditRequest instance or a dict.

  • franchisee_id (str | None) – Franchisee UUID filter (query param).

Return type:

None

Request model: ContactEditRequest Params model: ContactEditParams

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/create.html Request model: ContactEditRequest Query params: ContactEditParams

search(*, data)[source]

POST /contacts/v2/search.

Parameters:

data (ContactSearchRequest | dict) – Search payload with search_text, page, and page_size. Accepts a ContactSearchRequest instance or a dict.

Return type:

list[SearchContactEntityResult]

Request model: ContactSearchRequest

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/search.html Request model: ContactSearchRequest Response model: List[SearchContactEntityResult]

get_primary_details(contact_id)[source]

GET /contacts/{contactId}/primarydetails

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/get_primary_details.html Response model: ContactPrimaryDetails

Parameters:

contact_id (str)

Return type:

ContactPrimaryDetails

get_current_user()[source]

GET /contacts/user

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/get_current_user.html Response model: ContactSimple

Return type:

ContactSimple

post_history(contact_id, *, data)[source]

POST /contacts/{contactId}/history.

Parameters:
  • contact_id (str) – Contact identifier.

  • data (ContactHistoryCreateRequest | dict) – History creation payload. Accepts a ContactHistoryCreateRequest instance or a dict.

Return type:

ContactHistory

Request model: ContactHistoryCreateRequest

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/post_history.html Request model: ContactHistoryCreateRequest Response model: ContactHistory

get_history_aggregated(contact_id)[source]

GET /contacts/{contactId}/history/aggregated

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/get_history_aggregated.html Query params: ContactHistoryParams Response model: ContactHistoryAggregated

Parameters:

contact_id (str)

Return type:

ContactHistoryAggregated

get_history_graph_data(contact_id)[source]

GET /contacts/{contactId}/history/graphdata

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/get_history_graph_data.html Query params: ContactHistoryParams Response model: ContactGraphData

Parameters:

contact_id (str)

Return type:

ContactGraphData

merge_preview(merge_to_id, *, data)[source]

POST /contacts/{mergeToId}/merge/preview.

Parameters:
  • merge_to_id (str) – Target contact to merge into.

  • data (ContactMergeRequest | dict) – Merge preview request payload. Accepts a ContactMergeRequest instance or a dict.

Return type:

ContactMergePreview

Request model: ContactMergeRequest

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/merge_preview.html Request model: ContactMergeRequest Response model: ContactMergePreview

merge(merge_to_id, *, data)[source]

PUT /contacts/{mergeToId}/merge.

Parameters:
  • merge_to_id (str) – Target contact to merge into.

  • data (ContactMergeRequest | dict) – Merge request payload. Accepts a ContactMergeRequest instance or a dict.

Return type:

None

Request model: ContactMergeRequest

Docs: https://ab-sdk.readthedocs.io/en/latest/api/contacts/merge.html Request model: ContactMergeRequest

Per-endpoint reference

Each route-backed method has its own page rendering the HTTP route, the Python and CLI call signatures, and the request/response model field tables. This is the page help(api.contacts.<method>) links to via its Docs: footer. These pages are generated by scripts/generate_endpoint_docs.py and kept current by a CI freshness gate.

Methods

get

GET /contacts/{id} — Get a contact by ID.

Returns: ContactSimple

from ab import ABConnectAPI

api = ABConnectAPI(env="staging")
contact = api.contacts.get("30760")
print(contact.first_name, contact.last_name)

get_did

Resolve a contact display ID through the cache resolver, then call GET /contacts/{id}.

Returns: ContactSimple

from examples.constants import TEST_CONTACT_DID

contact = api.contacts.get_did(TEST_CONTACT_DID)
print(contact.id, contact.contact_display_id)

get_details

GET /contacts/{contactId}/editdetails — Full editable contact details.

Returns: ContactDetailedInfo

details = api.contacts.get_details("30760")
print(details.full_name, details.contact_display_id)

# Typed nested lists with IDE autocomplete
for entry in details.emails_list or []:
    print(entry.email.email, entry.meta_data)

for entry in details.phones_list or []:
    print(entry.phone.phone, entry.meta_data)

for entry in details.addresses_list or []:
    print(entry.address.city, entry.address.state)

update_details

PUT /contacts/{contactId}/editdetails — Update contact details.

api.contacts.update_details("30760", {"firstName": "Jane", "lastName": "Doe"})

create

POST /contacts/editdetails — Create a new contact.

api.contacts.create({"firstName": "New", "lastName": "Contact", "email": "new@example.com"})

get_primary_details

GET /contacts/{contactId}/primarydetails — Primary contact info.

Returns: ContactPrimaryDetails

primary = api.contacts.get_primary_details("30760")
print(primary.full_name, primary.email)

get_current_user

GET /contacts/user — Current authenticated user’s contact info.

Returns: ContactSimple

me = api.contacts.get_current_user()
print(me.full_name)