Configurer les Offerings
Avec l'API timum, vous définissez ce que vous proposez : Products (services), Resources (objets réservables) et Contact Profiles (coordonnées publiques).
Ordre de configuration
- Créer des Products - Les services que vous proposez
- Créer des Resources - Les objets réservables (biens, salles, collaborateurs)
- Créer des Contact Profiles (facultatif) - Coordonnées publiques
Products (produits/services)
Un Product définit un type de service que vous proposez (par ex. "visite", "entretien-conseil"). Les Products ont des contraintes de durée (durée min/max) et peuvent être liés à des ressources.
Create Product
Crée un nouveau produit pour un fournisseur.
curl -X POST "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/products" \
-H "X-TIMUM-CLIENT-ID: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"reference": "prod-besichtigung@yourCrm",
"name": "Besichtigung",
"description": "30-minütige Objektbesichtigung mit unserem Experten",
"minDuration": 30,
"maxDuration": 45
}'
Paramètres de chemin
| Paramètre | Type | Description |
|---|---|---|
crmId | string | Votre identifiant CRM |
providerRef | string | Référence du fournisseur |
Request Body
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
reference | string | Oui | Référence unique du produit |
name | string | Oui | Nom d'affichage du produit |
description | string | Non | Description destinée aux clients (par ex. indications sur le rendez-vous) |
minDuration | number | Non | Durée minimale en minutes |
maxDuration | number | Non | Durée maximale en minutes |
Response
{
"api-info": {
"version": "1"
},
"product": {
"uuid": "92867f70-4836-11e5-bc04-021a52c25043",
"reference": "prod-besichtigung@yourCrm",
"name": "Besichtigung",
"description": "30-minütige Objektbesichtigung mit unserem Experten",
"minDuration": 30,
"maxDuration": 45,
"leadTimeMinutes": null,
"followUpTimeMinutes": null
}
}
Lead/Follow-Up Time :
Get Products
Liste tous les produits d'un fournisseur.
curl -X GET "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/products" \
-H "X-TIMUM-CLIENT-ID: your-api-key"
Response
[
{
"uuid": "92867f70-4836-11e5-bc04-021a52c25043",
"reference": "prod-besichtigung@yourCrm",
"name": "Besichtigung",
"description": "30-minütige Objektbesichtigung",
"minDuration": 30,
"maxDuration": 45,
"leadTimeMinutes": null,
"followUpTimeMinutes": null
},
{
"uuid": "0bb978c0-5740-11eb-8b95-024759471364",
"reference": "prod-beratung@yourCrm",
"name": "Beratungsgespräch",
"description": "Individuelle Beratung",
"minDuration": 15,
"maxDuration": 30,
"leadTimeMinutes": null,
"followUpTimeMinutes": null
}
]
Resources
Une Resource représente un objet réservable - typiquement un bien immobilier, une salle, un véhicule ou un collaborateur. Les Resources sont liées à des Products pour indiquer quels services sont proposés sur cette ressource.
Create Resource
Crée une nouvelle ressource ou met à jour une ressource existante (si onDuplicateRaise=false).
curl -X POST "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/resources?onDuplicateRaise=false" \
-H "X-TIMUM-CLIENT-ID: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"reference": "res-musterstr1@yourCrm",
"publicName": "Musterstraße 1 - 3-Zimmer-Wohnung",
"internalName": "Objekt 4711 - Musterstraße",
"description": "Schöne 3-Zimmer-Wohnung mit Balkon im 2. OG",
"products": ["prod-besichtigung@yourCrm", "prod-beratung@yourCrm"],
"contact": "user-123@yourCrm",
"contactProfileReference": "profile-1@yourCrm",
"website": "https://example.com/objekt/4711",
"address": {
"city": "Berlin",
"countryCode": "DE",
"street": "Musterstraße",
"number": "1",
"zip": "10115"
}
}'
Paramètres de requête
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
onDuplicateRaise | boolean | false | Si true : la requête échoue avec 400 si la référence existe déjà. Si false : la ressource existante est mise à jour. |
Request Body
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
reference | string | Oui | Référence unique de la ressource |
publicName | string | Oui | Nom affiché aux clients |
internalName | string | Oui | Nom interne pour le fournisseur |
description | string | Non | Description de la ressource |
products | string[] | Non | Tableau de références de produits. Les produits doivent déjà exister. Définit quels services sont proposés sur cette ressource. |
contact | string | Non* | Référence utilisateur comme personne de contact. *Obligatoire si contactProfileReference est indiqué. |
contactProfileReference | string | Non | Référence d'un Contact Profile. Doit appartenir à l'utilisateur de contact. |
website | string | Non | URL du site web de la ressource |
address | object | Non | Adresse de la ressource. countryCode est facultatif (par défaut : "DE"). Tous les autres champs (city, zip, street, number) sont obligatoires si address est indiqué. |
Response
{
"reference": "res-musterstr1@yourCrm",
"uuid": "264de7b0-0e4a-11ea-988f-fa1e49f3d761",
"provider": "prov-001@yourCrm",
"publicName": "Musterstraße 1 - 3-Zimmer-Wohnung",
"internalName": "Objekt 4711 - Musterstraße",
"description": "Schöne 3-Zimmer-Wohnung mit Balkon im 2. OG",
"contact": "user-123@yourCrm",
"archived": false,
"products": ["prod-besichtigung@yourCrm", "prod-beratung@yourCrm"],
"address": {
"city": "Berlin",
"countryCode": "DE",
"street": "Musterstraße",
"number": "1",
"zip": "10115"
}
}
Update Resource
Met à jour une ressource existante. Seuls les champs transmis sont modifiés.
curl -X POST "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/resources/res-musterstr1@yourCrm" \
-H "X-TIMUM-CLIENT-ID: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"publicName": "Musterstraße 1 - Traumwohnung mit Balkon",
"products": ["prod-besichtigung@yourCrm"],
"archived": false
}'
Champ supplémentaire pour la mise à jour
| Champ | Type | Description |
|---|---|---|
archived | boolean | Définit la ressource comme archivée (true) ou active (false). Les ressources archivées ne sont plus réservables par les clients. |
Response
Renvoie la ressource mise à jour (comme pour Create). Statut : 202 Accepted.
Get Resources
Liste toutes les ressources d'un fournisseur.
curl -X GET "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/resources" \
-H "X-TIMUM-CLIENT-ID: your-api-key"
Response
[
{
"reference": "res-musterstr1@yourCrm",
"uuid": "264de7b0-0e4a-11ea-988f-fa1e49f3d761",
"provider": "prov-001@yourCrm",
"publicName": "Musterstraße 1 - 3-Zimmer-Wohnung",
"internalName": "Objekt 4711 - Musterstraße",
"description": "Schöne 3-Zimmer-Wohnung",
"contact": "user-123@yourCrm",
"archived": false,
"products": ["prod-besichtigung@yourCrm"],
"address": {
"city": "Berlin",
"countryCode": "DE",
"street": "Musterstraße",
"number": "1",
"zip": "10115"
}
}
]
Delete Resource
Supprime une ressource. Échoue s'il existe des rendez-vous futurs (sauf si ignoreFutureAppointments=true).
curl -X DELETE "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/resources/res-musterstr1@yourCrm?ignoreFutureAppointments=true" \
-H "X-TIMUM-CLIENT-ID: your-api-key"
Paramètres de requête
| Paramètre | Type | Description |
|---|---|---|
ignoreFutureAppointments | boolean | Si true : la ressource est supprimée même s'il existe des rendez-vous futurs. Tous les participants sont informés de l'annulation et les rendez-vous sont archivés. |
Irréversible :
Contact Profiles
Les Contact Profiles définissent la manière dont un utilisateur est présenté publiquement. Ils contiennent des canaux de contact (téléphone, e-mail, liens vidéo, etc.) que les clients voient.
Profil général vs. profil spécifique au fournisseur
- General Profile : Profil par défaut d'un utilisateur, utilisé lorsqu'aucun profil spécifique n'est attribué
- Provider Profile : Profil spécifique pour un fournisseur donné
Get General Profile
Récupère le profil de contact général d'un utilisateur.
curl -X GET "https://www.timum.de/crms/{crmId}/user/user-123@yourCrm/generalContactProfile" \
-H "X-TIMUM-CLIENT-ID: your-api-key"
Response
{
"name": "Max Mustermann - Immobilienexperte",
"contactChannels": [
{
"label": "Mobil",
"type": "mobile",
"value": "+49 170 1234567"
},
{
"label": "Email",
"type": "email",
"value": "max@example.com"
},
{
"label": "Telefon",
"type": "phone",
"value": "+49 30 12345678"
}
]
}
Update General Profile
Met à jour le profil de contact général d'un utilisateur.
curl -X PUT "https://www.timum.de/crms/{crmId}/user/user-123@yourCrm/generalContactProfile" \
-H "X-TIMUM-CLIENT-ID: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"name": "Max Mustermann - Ihr Immobilienexperte",
"contactChannels": [
{
"label": "Mobil",
"type": "mobile",
"value": "+49 170 1234567"
},
{
"label": "Email",
"type": "email",
"value": "max@example.com"
},
{
"label": "Telefon",
"type": "phone",
"value": "+49 30 12345678"
},
{
"label": "Video-Call",
"type": "video",
"value": "https://meet.example.com/max"
}
]
}'
Request Body
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Nom public. Peut différer du nom de connexion (par ex. nom d'entreprise). |
contactChannels | array | Oui | Tableau de canaux de contact |
Champs du Contact Channel
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
label | string | Non | Libellé d'affichage du canal |
type | string | Oui | Type de canal. Valeurs autorisées : mobile - numéro mobile (visible par les clients) ; phone - fixe (visible par les clients) ; email - e-mail (visible par les clients, pour les e-mails transactionnels) ; video - lien d'appel vidéo ; messenger - messagerie ; link - lien général ; location - adresse/lieu |
value | string | Oui | Valeur du canal (numéro, e-mail, URL, adresse) |
Algorithme pour contactChannels
- Nouveau type dans le tableau : Un nouveau canal est créé
- Type existant dans le tableau : Le canal est mis à jour
- Type absent du tableau : Le canal est supprimé
Un canal par type :
Get Profile (spécifique au fournisseur)
Récupère un profil de contact spécifique à un fournisseur.
curl -X GET "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/contactProfile/profile-1@yourCrm" \
-H "X-TIMUM-CLIENT-ID: your-api-key"
Erreurs
| Statut | Cause |
|---|---|
404 | Aucun profil trouvé avec cette référence |
Create or Update Profile (spécifique au fournisseur)
Crée ou met à jour un profil de contact spécifique à un fournisseur.
curl -X POST "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/contactProfile" \
-H "X-TIMUM-CLIENT-ID: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"reference": "profile-1@yourCrm",
"userReference": "user-123@yourCrm",
"providerReference": "prov-001@yourCrm",
"name": "Mustermann Immobilien - Vertrieb",
"contactChannels": [
{
"label": "Hotline",
"type": "phone",
"value": "+49 30 12345678"
},
{
"label": "Vertrieb",
"type": "email",
"value": "vertrieb@mustermann-immo.de"
},
{
"label": "Büro",
"type": "location",
"value": "Musterstraße 28, 10115 Berlin"
}
]
}'
Request Body
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
reference | string | Oui | Référence unique du profil |
userReference | string | Oui | Référence de l'utilisateur à qui appartient ce profil |
providerReference | string | Oui | Référence du fournisseur auquel ce profil s'applique |
name | string | Oui | Nom d'affichage public |
contactChannels | array | Oui | Tableau de canaux de contact (voir Update General Profile) |
Utilisation dans Resources/Appointments
Pour utiliser un profil, définissez ce qui suit lors de la création d'une ressource ou d'un rendez-vous :
contact: référence utilisateurcontactProfileReference: référence du profil
Le profil doit appartenir à l'utilisateur de contact et doit être valide pour le fournisseur dans lequel la ressource/le rendez-vous est créé.
Solution de repli :
Étapes suivantes
Avec des Offerings configurées, vous pouvez désormais :
- Configurer le Scheduling - Timeslots, Appointments, Participations, Customers
- Intégrer le Booking Flow - Endpoints de réservation destinés aux consommateurs
