Class ContactsClient
- java.lang.Object
-
- com.intercom.api.resources.contacts.ContactsClient
-
public class ContactsClient extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description protected ClientOptionsclientOptions
-
Constructor Summary
Constructors Constructor Description ContactsClient(ClientOptions clientOptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ContactArchivedarchive(ArchiveContactRequest request)You can archive a single contact.ContactArchivedarchive(ArchiveContactRequest request, RequestOptions requestOptions)You can archive a single contact.SubscriptionTypeattachSubscription(AttachSubscriptionToContactRequest request)You can add a specific subscription to a contact.SubscriptionTypeattachSubscription(AttachSubscriptionToContactRequest request, RequestOptions requestOptions)You can add a specific subscription to a contact.ContactBlockedblockContact(BlockContactRequest request)Block a single contact.<br>Note: conversations of the contact will also be archived during the process.<br>More details in FAQ How do I block Inbox spam?ContactBlockedblockContact(BlockContactRequest request, RequestOptions requestOptions)Block a single contact.<br>Note: conversations of the contact will also be archived during the process.<br>More details in FAQ How do I block Inbox spam?ContactsCreateResponsecreate(CreateContactRequest request)You can create a new contact (ie.ContactsCreateResponsecreate(CreateContactRequest request, RequestOptions requestOptions)You can create a new contact (ie.ContactDeleteddelete(DeleteContactRequest request)You can delete a single contact.ContactDeleteddelete(DeleteContactRequest request, RequestOptions requestOptions)You can delete a single contact.SubscriptionTypedetachSubscription(DetachSubscriptionFromContactRequest request)You can remove a specific subscription from a contact.SubscriptionTypedetachSubscription(DetachSubscriptionFromContactRequest request, RequestOptions requestOptions)You can remove a specific subscription from a contact.ContactsFindResponsefind(FindContactRequest request)You can fetch the details of a single contact.ContactsFindResponsefind(FindContactRequest request, RequestOptions requestOptions)You can fetch the details of a single contact.SyncPagingIterable<Contact>list()You can fetch a list of all contacts (ie.SyncPagingIterable<Contact>list(ListContactsRequest request)You can fetch a list of all contacts (ie.SyncPagingIterable<Contact>list(ListContactsRequest request, RequestOptions requestOptions)You can fetch a list of all contacts (ie.SyncPagingIterable<Company>listAttachedCompanies(ListAttachedCompaniesRequest request)You can fetch a list of companies that are associated to a contact.SyncPagingIterable<Company>listAttachedCompanies(ListAttachedCompaniesRequest request, RequestOptions requestOptions)You can fetch a list of companies that are associated to a contact.ContactSegmentslistAttachedSegments(ListSegmentsAttachedToContactRequest request)You can fetch a list of segments that are associated to a contact.ContactSegmentslistAttachedSegments(ListSegmentsAttachedToContactRequest request, RequestOptions requestOptions)You can fetch a list of segments that are associated to a contact.SubscriptionTypeListlistAttachedSubscriptions(ListAttachedSubscriptionsRequest request)You can fetch a list of subscription types that are attached to a contact.SubscriptionTypeListlistAttachedSubscriptions(ListAttachedSubscriptionsRequest request, RequestOptions requestOptions)You can fetch a list of subscription types that are attached to a contact.TagListlistAttachedTags(ListTagsAttachedToContactRequest request)You can fetch a list of all tags that are attached to a specific contact.TagListlistAttachedTags(ListTagsAttachedToContactRequest request, RequestOptions requestOptions)You can fetch a list of all tags that are attached to a specific contact.ContactsMergeLeadInUserResponsemergeLeadInUser()You can merge a contact with aroleofleadinto a contact with aroleofuser.ContactsMergeLeadInUserResponsemergeLeadInUser(MergeContactsRequest request)You can merge a contact with aroleofleadinto a contact with aroleofuser.ContactsMergeLeadInUserResponsemergeLeadInUser(MergeContactsRequest request, RequestOptions requestOptions)You can merge a contact with aroleofleadinto a contact with aroleofuser.SyncPagingIterable<Contact>search(SearchRequest request)You can search for multiple contacts by the value of their attributes in order to fetch exactly who you want.SyncPagingIterable<Contact>search(SearchRequest request, RequestOptions requestOptions)You can search for multiple contacts by the value of their attributes in order to fetch exactly who you want.ShowContactByExternalIdResponseshowContactByExternalId(ShowContactByExternalIdRequest request)You can fetch the details of a single contact by external ID.ShowContactByExternalIdResponseshowContactByExternalId(ShowContactByExternalIdRequest request, RequestOptions requestOptions)You can fetch the details of a single contact by external ID.ContactUnarchivedunarchive(UnarchiveContactRequest request)You can unarchive a single contact.ContactUnarchivedunarchive(UnarchiveContactRequest request, RequestOptions requestOptions)You can unarchive a single contact.ContactsUpdateResponseupdate(UpdateContactRequest request)You can update an existing contact (ie.ContactsUpdateResponseupdate(UpdateContactRequest request, RequestOptions requestOptions)You can update an existing contact (ie.RawContactsClientwithRawResponse()Get responses with HTTP metadata like headers
-
-
-
Field Detail
-
clientOptions
protected final ClientOptions clientOptions
-
-
Constructor Detail
-
ContactsClient
public ContactsClient(ClientOptions clientOptions)
-
-
Method Detail
-
withRawResponse
public RawContactsClient withRawResponse()
Get responses with HTTP metadata like headers
-
listAttachedCompanies
public SyncPagingIterable<Company> listAttachedCompanies(ListAttachedCompaniesRequest request)
You can fetch a list of companies that are associated to a contact.
-
listAttachedCompanies
public SyncPagingIterable<Company> listAttachedCompanies(ListAttachedCompaniesRequest request, RequestOptions requestOptions)
You can fetch a list of companies that are associated to a contact.
-
listAttachedSegments
public ContactSegments listAttachedSegments(ListSegmentsAttachedToContactRequest request)
You can fetch a list of segments that are associated to a contact.
-
listAttachedSegments
public ContactSegments listAttachedSegments(ListSegmentsAttachedToContactRequest request, RequestOptions requestOptions)
You can fetch a list of segments that are associated to a contact.
-
listAttachedSubscriptions
public SubscriptionTypeList listAttachedSubscriptions(ListAttachedSubscriptionsRequest request)
You can fetch a list of subscription types that are attached to a contact. These can be subscriptions that a user has 'opted-in' to or has 'opted-out' from, depending on the subscription type. This will return a list of Subscription Type objects that the contact is associated with.The data property will show a combined list of:
1.Opt-out subscription types that the user has opted-out from. 2.Opt-in subscription types that the user has opted-in to receiving.
-
listAttachedSubscriptions
public SubscriptionTypeList listAttachedSubscriptions(ListAttachedSubscriptionsRequest request, RequestOptions requestOptions)
You can fetch a list of subscription types that are attached to a contact. These can be subscriptions that a user has 'opted-in' to or has 'opted-out' from, depending on the subscription type. This will return a list of Subscription Type objects that the contact is associated with.The data property will show a combined list of:
1.Opt-out subscription types that the user has opted-out from. 2.Opt-in subscription types that the user has opted-in to receiving.
-
attachSubscription
public SubscriptionType attachSubscription(AttachSubscriptionToContactRequest request)
You can add a specific subscription to a contact. In Intercom, we have two different subscription types based on user consent - opt-out and opt-in:1.Attaching a contact to an opt-out subscription type will opt that user out from receiving messages related to that subscription type.
2.Attaching a contact to an opt-in subscription type will opt that user in to receiving messages related to that subscription type.
This will return a subscription type model for the subscription type that was added to the contact.
-
attachSubscription
public SubscriptionType attachSubscription(AttachSubscriptionToContactRequest request, RequestOptions requestOptions)
You can add a specific subscription to a contact. In Intercom, we have two different subscription types based on user consent - opt-out and opt-in:1.Attaching a contact to an opt-out subscription type will opt that user out from receiving messages related to that subscription type.
2.Attaching a contact to an opt-in subscription type will opt that user in to receiving messages related to that subscription type.
This will return a subscription type model for the subscription type that was added to the contact.
-
detachSubscription
public SubscriptionType detachSubscription(DetachSubscriptionFromContactRequest request)
You can remove a specific subscription from a contact. This will return a subscription type model for the subscription type that was removed from the contact.
-
detachSubscription
public SubscriptionType detachSubscription(DetachSubscriptionFromContactRequest request, RequestOptions requestOptions)
You can remove a specific subscription from a contact. This will return a subscription type model for the subscription type that was removed from the contact.
-
listAttachedTags
public TagList listAttachedTags(ListTagsAttachedToContactRequest request)
You can fetch a list of all tags that are attached to a specific contact.
-
listAttachedTags
public TagList listAttachedTags(ListTagsAttachedToContactRequest request, RequestOptions requestOptions)
You can fetch a list of all tags that are attached to a specific contact.
-
find
public ContactsFindResponse find(FindContactRequest request)
You can fetch the details of a single contact.
-
find
public ContactsFindResponse find(FindContactRequest request, RequestOptions requestOptions)
You can fetch the details of a single contact.
-
update
public ContactsUpdateResponse update(UpdateContactRequest request)
You can update an existing contact (ie. user or lead).{% admonition type="info" %} This endpoint handles both contact updates and custom object associations.
See
update a contact with an association to a custom object instancein the request/response examples to see the custom object association format. {% /admonition %}
-
update
public ContactsUpdateResponse update(UpdateContactRequest request, RequestOptions requestOptions)
You can update an existing contact (ie. user or lead).{% admonition type="info" %} This endpoint handles both contact updates and custom object associations.
See
update a contact with an association to a custom object instancein the request/response examples to see the custom object association format. {% /admonition %}
-
delete
public ContactDeleted delete(DeleteContactRequest request)
You can delete a single contact.
-
delete
public ContactDeleted delete(DeleteContactRequest request, RequestOptions requestOptions)
You can delete a single contact.
-
mergeLeadInUser
public ContactsMergeLeadInUserResponse mergeLeadInUser()
You can merge a contact with aroleofleadinto a contact with aroleofuser.
-
mergeLeadInUser
public ContactsMergeLeadInUserResponse mergeLeadInUser(MergeContactsRequest request)
You can merge a contact with aroleofleadinto a contact with aroleofuser.
-
mergeLeadInUser
public ContactsMergeLeadInUserResponse mergeLeadInUser(MergeContactsRequest request, RequestOptions requestOptions)
You can merge a contact with aroleofleadinto a contact with aroleofuser.
-
search
public SyncPagingIterable<Contact> search(SearchRequest request)
You can search for multiple contacts by the value of their attributes in order to fetch exactly who you want.To search for contacts, you need to send a
POSTrequest tohttps://api.intercom.io/contacts/search.This will accept a query object in the body which will define your filters in order to search for contacts.
{% admonition type="warning" name="Optimizing search queries" %} Search queries can be complex, so optimizing them can help the performance of your search. Use the
ANDandORoperators to combine multiple filters to get the exact results you need and utilize pagination to limit the number of results returned. The default is50results per page. See the pagination section for more details on how to use thestarting_afterparam. {% /admonition %}Contact Creation Delay
If a contact has recently been created, there is a possibility that it will not yet be available when searching. This means that it may not appear in the response. This delay can take a few minutes. If you need to be instantly notified it is recommended to use webhooks and iterate to see if they match your search filters.
Nesting & Limitations
You can nest these filters in order to get even more granular insights that pinpoint exactly what you need. Example: (1 OR 2) AND (3 OR 4). There are some limitations to the amount of multiple's there can be:
- There's a limit of max 2 nested filters
- There's a limit of max 15 filters for each AND or OR group
Searching for Timestamp Fields
All timestamp fields (created_at, updated_at etc.) are indexed as Dates for Contact Search queries; Datetime queries are not currently supported. This means you can only query for timestamp fields by day - not hour, minute or second. For example, if you search for all Contacts with a created_at value greater (>) than 1577869200 (the UNIX timestamp for January 1st, 2020 9:00 AM), that will be interpreted as 1577836800 (January 1st, 2020 12:00 AM). The search results will then include Contacts created from January 2nd, 2020 12:00 AM onwards. If you'd like to get contacts created on January 1st, 2020 you should search with a created_at value equal (=) to 1577836800 (January 1st, 2020 12:00 AM). This behaviour applies only to timestamps used in search queries. The search results will still contain the full UNIX timestamp and be sorted accordingly.
Accepted Fields
Most key listed as part of the Contacts Model are searchable, whether writeable or not. The value you search for has to match the accepted type, otherwise the query will fail (ie. as
created_ataccepts a date, thevaluecannot be a string such as"foorbar").| Field | Type | | ---------------------------------- | ------------------------------ | | id | String | | role | String<br>Accepts user or lead | | name | String | | avatar | String | | owner_id | Integer | | email | String | | email_domain | String | | phone | String | | external_id | String | | created_at | Date (UNIX Timestamp) | | signed_up_at | Date (UNIX Timestamp) | | updated_at | Date (UNIX Timestamp) | | last_seen_at | Date (UNIX Timestamp) | | last_contacted_at | Date (UNIX Timestamp) | | last_replied_at | Date (UNIX Timestamp) | | last_email_opened_at | Date (UNIX Timestamp) | | last_email_clicked_at | Date (UNIX Timestamp) | | language_override | String | | browser | String | | browser_language | String | | os | String | | location.country | String | | location.region | String | | location.city | String | | unsubscribed_from_emails | Boolean | | marked_email_as_spam | Boolean | | has_hard_bounced | Boolean | | ios_last_seen_at | Date (UNIX Timestamp) | | ios_app_version | String | | ios_device | String | | ios_app_device | String | | ios_os_version | String | | ios_app_name | String | | ios_sdk_version | String | | android_last_seen_at | Date (UNIX Timestamp) | | android_app_version | String | | android_device | String | | android_app_name | String | | andoid_sdk_version | String | | segment_id | String | | tag_id | String | | custom_attributes.{attribute_name} | String |
Accepted Operators
{% admonition type="warning" name="Searching based on
created_at" %} You cannot use the<=or>=operators to search bycreated_at. {% /admonition %}The table below shows the operators you can use to define how you want to search for the value. The operator should be put in as a string (
"="). The operator has to be compatible with the field's type (eg. you cannot search with>for a given string value as it's only compatible for integer's and dates).| Operator | Valid Types | Description | | :------- | :------------------------------- | :--------------------------------------------------------------- | | = | All | Equals | | != | All | Doesn't Equal | | IN | All | In<br>Shortcut for
ORqueries<br>Values must be in Array | | NIN | All | Not In<br>Shortcut forOR !queries<br>Values must be in Array | | > | Integer<br>Date (UNIX Timestamp) | Greater than | | < | Integer<br>Date (UNIX Timestamp) | Lower than | | ~ | String | Contains | | !~ | String | Doesn't Contain | | ^ | String | Starts With | | $ | String | Ends With |
-
search
public SyncPagingIterable<Contact> search(SearchRequest request, RequestOptions requestOptions)
You can search for multiple contacts by the value of their attributes in order to fetch exactly who you want.To search for contacts, you need to send a
POSTrequest tohttps://api.intercom.io/contacts/search.This will accept a query object in the body which will define your filters in order to search for contacts.
{% admonition type="warning" name="Optimizing search queries" %} Search queries can be complex, so optimizing them can help the performance of your search. Use the
ANDandORoperators to combine multiple filters to get the exact results you need and utilize pagination to limit the number of results returned. The default is50results per page. See the pagination section for more details on how to use thestarting_afterparam. {% /admonition %}Contact Creation Delay
If a contact has recently been created, there is a possibility that it will not yet be available when searching. This means that it may not appear in the response. This delay can take a few minutes. If you need to be instantly notified it is recommended to use webhooks and iterate to see if they match your search filters.
Nesting & Limitations
You can nest these filters in order to get even more granular insights that pinpoint exactly what you need. Example: (1 OR 2) AND (3 OR 4). There are some limitations to the amount of multiple's there can be:
- There's a limit of max 2 nested filters
- There's a limit of max 15 filters for each AND or OR group
Searching for Timestamp Fields
All timestamp fields (created_at, updated_at etc.) are indexed as Dates for Contact Search queries; Datetime queries are not currently supported. This means you can only query for timestamp fields by day - not hour, minute or second. For example, if you search for all Contacts with a created_at value greater (>) than 1577869200 (the UNIX timestamp for January 1st, 2020 9:00 AM), that will be interpreted as 1577836800 (January 1st, 2020 12:00 AM). The search results will then include Contacts created from January 2nd, 2020 12:00 AM onwards. If you'd like to get contacts created on January 1st, 2020 you should search with a created_at value equal (=) to 1577836800 (January 1st, 2020 12:00 AM). This behaviour applies only to timestamps used in search queries. The search results will still contain the full UNIX timestamp and be sorted accordingly.
Accepted Fields
Most key listed as part of the Contacts Model are searchable, whether writeable or not. The value you search for has to match the accepted type, otherwise the query will fail (ie. as
created_ataccepts a date, thevaluecannot be a string such as"foorbar").| Field | Type | | ---------------------------------- | ------------------------------ | | id | String | | role | String<br>Accepts user or lead | | name | String | | avatar | String | | owner_id | Integer | | email | String | | email_domain | String | | phone | String | | external_id | String | | created_at | Date (UNIX Timestamp) | | signed_up_at | Date (UNIX Timestamp) | | updated_at | Date (UNIX Timestamp) | | last_seen_at | Date (UNIX Timestamp) | | last_contacted_at | Date (UNIX Timestamp) | | last_replied_at | Date (UNIX Timestamp) | | last_email_opened_at | Date (UNIX Timestamp) | | last_email_clicked_at | Date (UNIX Timestamp) | | language_override | String | | browser | String | | browser_language | String | | os | String | | location.country | String | | location.region | String | | location.city | String | | unsubscribed_from_emails | Boolean | | marked_email_as_spam | Boolean | | has_hard_bounced | Boolean | | ios_last_seen_at | Date (UNIX Timestamp) | | ios_app_version | String | | ios_device | String | | ios_app_device | String | | ios_os_version | String | | ios_app_name | String | | ios_sdk_version | String | | android_last_seen_at | Date (UNIX Timestamp) | | android_app_version | String | | android_device | String | | android_app_name | String | | andoid_sdk_version | String | | segment_id | String | | tag_id | String | | custom_attributes.{attribute_name} | String |
Accepted Operators
{% admonition type="warning" name="Searching based on
created_at" %} You cannot use the<=or>=operators to search bycreated_at. {% /admonition %}The table below shows the operators you can use to define how you want to search for the value. The operator should be put in as a string (
"="). The operator has to be compatible with the field's type (eg. you cannot search with>for a given string value as it's only compatible for integer's and dates).| Operator | Valid Types | Description | | :------- | :------------------------------- | :--------------------------------------------------------------- | | = | All | Equals | | != | All | Doesn't Equal | | IN | All | In<br>Shortcut for
ORqueries<br>Values must be in Array | | NIN | All | Not In<br>Shortcut forOR !queries<br>Values must be in Array | | > | Integer<br>Date (UNIX Timestamp) | Greater than | | < | Integer<br>Date (UNIX Timestamp) | Lower than | | ~ | String | Contains | | !~ | String | Doesn't Contain | | ^ | String | Starts With | | $ | String | Ends With |
-
list
public SyncPagingIterable<Contact> list()
You can fetch a list of all contacts (ie. users or leads) in your workspace. {% admonition type="warning" name="Pagination" %} You can use pagination to limit the number of results returned. The default is50results per page. See the pagination section for more details on how to use thestarting_afterparam. {% /admonition %}
-
list
public SyncPagingIterable<Contact> list(ListContactsRequest request)
You can fetch a list of all contacts (ie. users or leads) in your workspace. {% admonition type="warning" name="Pagination" %} You can use pagination to limit the number of results returned. The default is50results per page. See the pagination section for more details on how to use thestarting_afterparam. {% /admonition %}
-
list
public SyncPagingIterable<Contact> list(ListContactsRequest request, RequestOptions requestOptions)
You can fetch a list of all contacts (ie. users or leads) in your workspace. {% admonition type="warning" name="Pagination" %} You can use pagination to limit the number of results returned. The default is50results per page. See the pagination section for more details on how to use thestarting_afterparam. {% /admonition %}
-
create
public ContactsCreateResponse create(CreateContactRequest request)
You can create a new contact (ie. user or lead).
-
create
public ContactsCreateResponse create(CreateContactRequest request, RequestOptions requestOptions)
You can create a new contact (ie. user or lead).
-
showContactByExternalId
public ShowContactByExternalIdResponse showContactByExternalId(ShowContactByExternalIdRequest request)
You can fetch the details of a single contact by external ID. Note that this endpoint only supports users and not leads.
-
showContactByExternalId
public ShowContactByExternalIdResponse showContactByExternalId(ShowContactByExternalIdRequest request, RequestOptions requestOptions)
You can fetch the details of a single contact by external ID. Note that this endpoint only supports users and not leads.
-
archive
public ContactArchived archive(ArchiveContactRequest request)
You can archive a single contact.
-
archive
public ContactArchived archive(ArchiveContactRequest request, RequestOptions requestOptions)
You can archive a single contact.
-
unarchive
public ContactUnarchived unarchive(UnarchiveContactRequest request)
You can unarchive a single contact.
-
unarchive
public ContactUnarchived unarchive(UnarchiveContactRequest request, RequestOptions requestOptions)
You can unarchive a single contact.
-
blockContact
public ContactBlocked blockContact(BlockContactRequest request)
Block a single contact.<br>Note: conversations of the contact will also be archived during the process.<br>More details in FAQ How do I block Inbox spam?
-
blockContact
public ContactBlocked blockContact(BlockContactRequest request, RequestOptions requestOptions)
Block a single contact.<br>Note: conversations of the contact will also be archived during the process.<br>More details in FAQ How do I block Inbox spam?
-
-