Interests
Table of contents¶
Introduction¶
This article covers the API requests related to contact interests in Fideltour.
An interest is a topic a contact has shown affinity for (for example, Golf, Gastronomy or Family travel). Fideltour manages them with two elements:
- Interest: the topic itself, identified by its name. It is shared across the whole hotel chain.
- Interest subscription: the link between a contact and an interest, with a score (
punctuation) that indicates the degree of affinity.
Interests are different from contact tags (custom_tags), which are managed through the Contacts API.
Endpoint: https://app.hoteldatahub.io/api/v1/interests/
Swagger documentation: https://app.hoteldatahub.io/swagger/
Use cases¶
This endpoint lets an external system (CRM, CDP, Wi-Fi, surveys…) tell Fideltour which interests it has detected in a contact, so communications can be segmented and personalized.
Important: an interest is always linked to a contact that already exists in Fideltour. If it doesn't exist yet, create it first with the Contacts API.
There is no need to create the interest beforehand: if no interest with that name exists in the chain, it is created automatically.
Available methods¶
- GET: returns the chain's interest catalog or, with the
contactfilter, a contact's interests with their score. - POST: links an interest to a contact. If the contact already had that interest, its score is updated.
The ApiUser needs the contacts and interests permissions.
Parameter table¶
Filters (GET)¶
| Filter | Type | Description |
|---|---|---|
contact |
Integer | Contact ID in Fideltour. If provided, that contact's interests are returned; otherwise, the chain's interest catalog |
name__iexact |
String | Exact interest name, case-insensitive (catalog only) |
name__icontains |
String | Interests whose name contains the text (catalog only) |
category__iexact |
String | Interest category ID (catalog only) |
limit |
Integer | Number of results per page |
offset |
Integer | Position from which results are returned |
Results are paginated (count, next, previous, results). To page through them, use limit and offset.
Request body (POST)¶
| Field | Type | Required | Description |
|---|---|---|---|
contact |
Integer | Yes | Contact ID in Fideltour |
name |
String | Yes | Interest name (up to 200 characters). It is matched case-insensitively; if it doesn't exist, it is created |
punctuation |
Integer | No | The contact's score or degree of affinity with the interest |
category |
Integer | No | ID of the interest category in Fideltour |
min_appearances |
Integer | No | Minimum number of appearances of the interest |
min_likes |
Integer | No | Minimum number of likes of the interest |
Examples¶
Request (GET): Interest catalog¶
PROTOCOL: HTTP/1.1
METHOD: GET
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/interests/?name__icontains=golf
HEADERS:
Content-type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Response:
On a 200 response, you receive the following JSON:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 30412,
"scope": 1,
"name": "Golf",
"min_appearances": 1,
"min_likes": 1,
"category": null
}
]
}
id: interest ID in Fideltour.
Request (GET): A contact's interests¶
PROTOCOL: HTTP/1.1
METHOD: GET
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/interests/?contact=11602828
HEADERS:
Content-type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Response:
On a 200 response, you receive the following JSON:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 30412,
"name": "Golf",
"punctuation": 5
},
{
"id": 30415,
"name": "Gastronomía",
"punctuation": 2
}
]
}
id: interest ID in Fideltour (the same one returned by the catalog, and shown astagin the POST).punctuation: the contact's score for that interest.
Request (POST): Link an interest to a contact¶
PROTOCOL: HTTP/1.1
METHOD: POST
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/interests/
HEADERS:
Content-type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BODY:
{
"contact": 11602828,
"name": "Golf",
"punctuation": 5
}
Response:
On a 201 response, you receive the contact's subscription to the interest:
{
"id": 845231,
"timestamp": "2026-10-14T10:15:42.120391",
"punctuation": 5,
"punctuation_modified": false,
"tag_source": 7,
"contact": 11602828,
"tag": 30412
}
id: interest subscription ID (not the interest ID).tag: interest ID in Fideltour.punctuation: current score.
If the contact already had the interest with the same score, nothing is changed and the current subscription is returned.
Errors:
400: in the POST,contactornameis missing; in the GET,contactis not a numeric ID.502: Fideltour could not create or update the interest or the subscription.