report-ai
customer-profiles

Update Customer Profile

Changed on

Manually update customer profile fields, marking them as human-set.

Fields marked 'manual' are protected from automated overwrites by the investigation pipeline and reconciliation system. Email updates must use the dedicated PUT .../email endpoint.

put/api/v1/report-ai/customer-profiles/{customer_profile_id}

Request

  • Base URL: https://api.getanana.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.getanana.com/api/v1/report-ai/customer-profiles/{customer_profile_id}
  • Auth: none declared

Path parameters

customer_profile_idstring uuid required

Request body

customer_namestring nullable
phone_numberstring nullable
countrystring nullable

Response

Successful Response

idstring uuid required
tenant_idstring uuid required
customer_emailstring nullable required
customer_namestring nullable required
phone_numberstring nullable required
total_investigationsinteger required
complaints_countinteger required
last_sentimentstring nullable required
total_revenue_centsinteger nullable required
average_booking_value_centsinteger nullable required
loyalty_tierstring nullable required
countrystring nullable
identity_kind'person' | 'shared_inbox' | 'unclassified' | 'stay_guest'

Whether a customer profile stands for one person.

SHARED_INBOX marks an address that books on behalf of many different guests (tour operator, bed bank, travel agent). Such a profile is a real counterparty but NOT a person: it must never receive guest-directed messaging and must not appear in the contacts list as a customer.

Classified by app.bookings.private.identity_durability; see app.bookings.management.classify_shared_inboxes.

STAY_GUEST marks the guest of one reservation, known by their stay rather than by their identity — used when a reservation carries no durable identifier and a person cannot honestly be inferred from a name. Keyed on ('stay', 'episode_id', <uuid>), and holds NULL email and NULL phone always. Like SHARED_INBOX it is a real record and not a contact, and is held out of the roster, campaigns, segments and duplicate detection by the same mechanism.

requires_attentionboolean
attention_reasonstring nullable
business_idstring uuid nullable
first_seen_atstring date-time required
last_seen_atstring date-time required

Changes

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status