At a high level, the Push API provides a programmatic mechanism for pushing data from one or more sources to be integrated into one of the three Higher Logic platforms:
- Higher Logic Thrive Marketing Professional
- Higher Logic Thrive Marketing Enterprise
- Higher Logic Thrive Community
For Higher Logic Community Essentials, not all objects in the API are supported. Community Essentials does not require or support pushing:
- Meetings, Products, or Orders
- Communities and Groups
- Custom Demographics
- Contact Job History or Education
Form an API call
All calls to the Push API are an HTTP POST that will only allow a Content-Type of application/json or text/json in the request body. Additionally, you will need an API Key, which should be generated by Higher Logic when the push API is initially configured for a tenant for use.
With the exception of the /list endpoint, each object in the array should contain the full data of the record. For example, by not adding contact groups, a contact should remain in for /contactinfo, with the expectation being that they will be removed from the groups that weren't included in the last request. That also goes for fields (i.e., OrganizationName wasn't included on the latest API call, thus removing it from that contact record). With the /list endpoint, you can mimic this behavior using the "Replace" mode every time. The "Add" and "Remove" modes allow for partial data to be sent as long as the required fields are correctly filled out (e.g., "adding" a few contacts to a list does not require the entire list of ContactIds for that list).
- Base URL: https://datapushapi.higherlogic.com/v2
- For customers in Canada, the Base URL is https://datapushapi.onlinecommunity.ca/v2
- Example API endpoint URL: https://datapushapi.higherlogic.com/v2/contactinfo
NOTE: In the tables in this article, required fields are indicated in bold text.
Reference objects (ContactDetails, Meeting, and Product) each have an IsDeleted property. When you request that one of these objects be deleted, the only required field is the corresponding unique ID (ContactId, MeetingId, and ProductId).
DateTime data type
When using the DateTime data type, the value must be in either of these ISO 8601 formats:
- UTC - .NET Format "yyyy-MM-ddTHH:mm:ss.fffZ"
- Time Offset from UTC - .NET Format "yyyy-MM-ddTHH:mm:ss.fffzzz"
This endpoint defines all information related to a contact. The following tables display the fields that are available for each object in a ContactInfo push.
|ContactDetails||ContactDetails||A "details" object that contains basic contact demographics|
|Groups||List of ContactGroup||Relationships to Groups that would benefit from a discussion and library (communities) or serve to define a contact's access permissions (security groups).
For Community Essentials, all groups will be pushed as Security Groups.
|Demographics||List of ContactDemographic||A "demographics" object that contains enhanced and custom contact demographics.
Demographics should not be pushed for Community Essentials.
|Education||List of ContactEducation|
|JobHistory||List of ContactJobHistory|
|Addresses||List of ContactAddress|
|PhoneNumbers||List of ContactPhone|
|EmailAddresses||List of ContactEmail|
|Orders||List of ContactProductOrder||Not supported in Community Essentials|
|ContactType||string||Any high-level classification|
|MemberSince||DateTime||Date the contact's relationship with the client started|
|MemberExpiresOn||DateTime||Date the contact's relationship with the client is scheduled to end (e.g., the end of a term for paid access)|
|FirstName||string||If IsOrganization = false, then either this or LastName is required|
|LastName||string||If IsOrganization = false, then either this or FirstName is required|
|OrganizationName||string||Required when IsOrganization = true|
|ParentContactId||string||Unique identifier of an Individual's Parent Organization|
|PrimaryContactContactId||string||Unique identifier of a contact. An Organization's Primary contact's unique ID|
|IsMember||bool||If a Client has a binary concept of Member/NonMember, denoted here|
|IsOrganization||bool||Indicates whether this Contact is an Individual (false) or an Organization (true)|
|AlternativeContactId||string||An alternative identifier for this Contact. Unlike ContactId, uniqueness is not enforced|
|IsDeleted||bool||Soft delete. When true, only ContactId is required|
This object defines a contact's relationship to a Group (Community or Security) and pertinent information on the reference Group.
For Community Essentials, all groups will be configured as Security Groups. Community Groups are not pushed as part of Community Essentials.
|InitialJoinDate||DateTime||Date the contact joined this reference Group|
|BeginDate||DateTime||Start of this relationship term; null will be interpreted as "far in the past" / "active"|
|EndDate||DateTime||End of this relationship term; null will be interpreted as "open-ended"|
|GroupName||string||Human-readable name for the reference Group|
|GroupType||string||Categorization field such as, Committee, Chapter, Membership, and Event|
|GroupSubType||string||Second categorization field (optional)|
|Role||string||Contact's role in the reference Group such as, President and Treasurer|
This object defines a single address entry for a contact.
This object defines a single phone number entry for a contact.
|IsSmsPreferred||boolean||Is preferred for SMS communications|
- Key = ApiKey
- Value = API Key for the tenant.
"ListName": "Test List 1",
"ListType": "Awesome List",
"ListName": "Test List 2",
|HTTP Status Code||Explanation||Troubleshooting|
|401||The API Key is not valid.||Make sure you're using the correct API Key or request a new one.|
|500||There is an internal issue that must be investigated.||The engineering team will have to look into this error.|