Configurare le Offerings
Con l'API timum si definisce ciò che si offre: Products (servizi), Resources (oggetti prenotabili) e Contact Profiles (dati di contatto pubblici).
Ordine di configurazione
- Creare Products - I servizi offerti
- Creare Resources - Gli oggetti prenotabili (immobili, sale, personale)
- Creare Contact Profiles (opzionale) - Dati di contatto pubblici
Products (prodotti/servizi)
Un Product definisce un tipo di servizio offerto (ad es. "visita", "colloquio di consulenza"). I Products hanno vincoli di tempo (durata min/max) e possono essere collegati a risorse.
Create Product
Crea un nuovo prodotto per un fornitore.
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
}'
Parametri del percorso
| Parametro | Tipo | Descrizione |
|---|---|---|
crmId | string | Il proprio identificativo CRM |
providerRef | string | Riferimento del fornitore |
Request Body
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
reference | string | Sì | Riferimento univoco del prodotto |
name | string | Sì | Nome visualizzato del prodotto |
description | string | No | Descrizione per i clienti (ad es. indicazioni sull'appuntamento) |
minDuration | number | No | Durata minima in minuti |
maxDuration | number | No | Durata massima in minuti |
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
Elenca tutti i prodotti di un fornitore.
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
Una Resource rappresenta un oggetto prenotabile - tipicamente un immobile, una sala, un veicolo o un membro del personale. Le Resources vengono collegate ai Products per specificare quali servizi sono offerti su tale risorsa.
Create Resource
Crea una nuova risorsa o aggiorna una risorsa esistente (se 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"
}
}'
Parametri di query
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
onDuplicateRaise | boolean | false | Se true: la richiesta fallisce con 400 se il riferimento esiste già. Se false: la risorsa esistente viene aggiornata. |
Request Body
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
reference | string | Sì | Riferimento univoco della risorsa |
publicName | string | Sì | Nome mostrato ai clienti |
internalName | string | Sì | Nome interno per il fornitore |
description | string | No | Descrizione della risorsa |
products | string[] | No | Array di riferimenti a prodotti. I prodotti devono già esistere. Definisce quali servizi sono offerti su questa risorsa. |
contact | string | No* | Riferimento utente come persona di contatto. *Obbligatorio se viene indicato contactProfileReference. |
contactProfileReference | string | No | Riferimento di un Contact Profile. Deve appartenere all'utente di contatto. |
website | string | No | URL del sito web della risorsa |
address | object | No | Indirizzo della risorsa. countryCode è opzionale (predefinito: "DE"). Tutti gli altri campi (city, zip, street, number) sono obbligatori se viene indicato address. |
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
Aggiorna una risorsa esistente. Vengono modificati solo i campi forniti.
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
}'
Campo aggiuntivo per l'aggiornamento
| Campo | Tipo | Descrizione |
|---|---|---|
archived | boolean | Imposta la risorsa come archiviata (true) o attiva (false). Le risorse archiviate non sono più prenotabili dai clienti. |
Response
Restituisce la risorsa aggiornata (come in Create). Stato: 202 Accepted.
Get Resources
Elenca tutte le risorse di un fornitore.
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
Elimina una risorsa. Fallisce se esistono appuntamenti futuri (a meno che 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"
Parametri di query
| Parametro | Tipo | Descrizione |
|---|---|---|
ignoreFutureAppointments | boolean | Se true: la risorsa viene eliminata anche in presenza di appuntamenti futuri. Tutti i partecipanti vengono informati della cancellazione e gli appuntamenti vengono archiviati. |
Irreversibile:
Contact Profiles
I Contact Profiles definiscono come un utente viene presentato pubblicamente. Contengono canali di contatto (telefono, e-mail, link video, ecc.) visibili ai clienti.
Profilo generale vs. profilo specifico del fornitore
- General Profile: Profilo predefinito di un utente, utilizzato quando non è assegnato nessun profilo specifico
- Provider Profile: Profilo specifico per un determinato fornitore
Get General Profile
Recupera il profilo di contatto generale di un utente.
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
Aggiorna il profilo di contatto generale di un utente.
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
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
name | string | Sì | Nome pubblico. Può differire dal nome di login (ad es. nome dell'azienda). |
contactChannels | array | Sì | Array di canali di contatto |
Campi del Contact Channel
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
label | string | No | Etichetta visualizzata per il canale |
type | string | Sì | Tipo di canale. Valori consentiti: mobile - numero di cellulare (visibile ai clienti); phone - fisso (visibile ai clienti); email - e-mail (visibile ai clienti, per e-mail transazionali); video - link per videochiamata; messenger - messenger; link - link generico; location - indirizzo/luogo |
value | string | Sì | Valore del canale (numero, e-mail, URL, indirizzo) |
Algoritmo per contactChannels
- Nuovo tipo nell'array: Viene creato un nuovo canale
- Tipo esistente nell'array: Il canale viene aggiornato
- Tipo assente nell'array: Il canale viene rimosso
Un canale per tipo:
Get Profile (specifico del fornitore)
Recupera un profilo di contatto specifico di un fornitore.
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"
Errori
| Stato | Causa |
|---|---|
404 | Nessun profilo trovato con questo riferimento |
Create or Update Profile (specifico del fornitore)
Crea o aggiorna un profilo di contatto specifico di un fornitore.
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
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
reference | string | Sì | Riferimento univoco del profilo |
userReference | string | Sì | Riferimento dell'utente a cui appartiene questo profilo |
providerReference | string | Sì | Riferimento del fornitore per cui vale questo profilo |
name | string | Sì | Nome visualizzato pubblico |
contactChannels | array | Sì | Array di canali di contatto (vedi Update General Profile) |
Utilizzo in Resources/Appointments
Per utilizzare un profilo, impostare quanto segue durante la creazione di una risorsa o di un appuntamento:
contact: riferimento utentecontactProfileReference: riferimento del profilo
Il profilo deve appartenere all'utente di contatto e deve essere valido per il fornitore in cui viene creata la risorsa/l'appuntamento.
Fallback:
Prossimi passi
Con le Offerings configurate, ora è possibile:
- Configurare lo Scheduling - Timeslots, Appointments, Participations, Customers
- Integrare il Booking Flow - Endpoint di prenotazione lato consumatore
