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 contact filter, 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 as tag in 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, contact or name is missing; in the GET, contact is not a numeric ID.
  • 502: Fideltour could not create or update the interest or the subscription.