Configurar Offerings
Con la API de timum, usted define lo que ofrece: Products (servicios), Resources (objetos reservables) y Contact Profiles (datos de contacto públicos).
Orden de configuración
- Crear Products - Los servicios que usted ofrece
- Crear Resources - Los objetos reservables (inmuebles, salas, personal)
- Crear Contact Profiles (opcional) - Datos de contacto públicos
Products (productos/servicios)
Un Product define un tipo de servicio que usted ofrece (por ejemplo, "visita", "consulta"). Los Products tienen restricciones de tiempo (duración mín./máx.) y pueden vincularse a recursos.
Create Product
Crea un nuevo producto para un proveedor.
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
}'
Parámetros de ruta
| Parámetro | Tipo | Descripción |
|---|---|---|
crmId | string | Su identificador de CRM |
providerRef | string | Referencia del proveedor |
Request Body
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
reference | string | Sí | Referencia única del producto |
name | string | Sí | Nombre visible del producto |
description | string | No | Descripción para los clientes (por ejemplo, indicaciones sobre la cita) |
minDuration | number | No | Duración mínima en minutos |
maxDuration | number | No | Duración máxima en minutos |
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
Lista todos los productos de un proveedor.
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
Un Resource representa un objeto reservable - normalmente un inmueble, una sala, un vehículo o un miembro del personal. Los Resources se vinculan a Products para especificar qué servicios se ofrecen en ese recurso.
Create Resource
Crea un nuevo recurso o actualiza uno existente (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"
}
}'
Parámetros de consulta
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
onDuplicateRaise | boolean | false | Si es true: la solicitud falla con 400 si la referencia ya existe. Si es false: se actualiza el recurso existente. |
Request Body
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
reference | string | Sí | Referencia única del recurso |
publicName | string | Sí | Nombre mostrado a los clientes |
internalName | string | Sí | Nombre interno para el proveedor |
description | string | No | Descripción del recurso |
products | string[] | No | Array de referencias de productos. Los productos deben existir ya. Define qué servicios se ofrecen en este recurso. |
contact | string | No* | Referencia de usuario como persona de contacto. *Obligatorio si se indica contactProfileReference. |
contactProfileReference | string | No | Referencia de un Contact Profile. Debe pertenecer al usuario de contacto. |
website | string | No | URL del sitio web del recurso |
address | object | No | Dirección del recurso. countryCode es opcional (por defecto: "DE"). Todos los demás campos (city, zip, street, number) son obligatorios si se indica 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
Actualiza un recurso existente. Solo se modifican los campos enviados.
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 adicional para la actualización
| Campo | Tipo | Descripción |
|---|---|---|
archived | boolean | Establece el recurso como archivado (true) o activo (false). Los recursos archivados ya no pueden ser reservados por los clientes. |
Response
Devuelve el recurso actualizado (igual que en Create). Estado: 202 Accepted.
Get Resources
Lista todos los recursos de un proveedor.
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 un recurso. Falla si existen citas futuras (a menos que 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"
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
ignoreFutureAppointments | boolean | Si es true: el recurso se elimina incluso si existen citas futuras. Todos los participantes son informados de la cancelación y las citas se archivan. |
Irreversible:
Contact Profiles
Los Contact Profiles definen cómo se presenta públicamente un usuario. Contienen canales de contacto (teléfono, correo electrónico, enlaces de video, etc.) que los clientes ven.
Perfil general vs. perfil específico del proveedor
- General Profile: Perfil predeterminado de un usuario, utilizado cuando no se asigna ningún perfil específico
- Provider Profile: Perfil específico para un proveedor determinado
Get General Profile
Obtiene el perfil de contacto general de un usuario.
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
Actualiza el perfil de contacto general de un usuario.
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 | Obligatorio | Descripción |
|---|---|---|---|
name | string | Sí | Nombre público. Puede diferir del nombre de inicio de sesión (por ejemplo, nombre de la empresa). |
contactChannels | array | Sí | Array de canales de contacto |
Campos de Contact Channel
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
label | string | No | Etiqueta visible del canal |
type | string | Sí | Tipo de canal. Valores permitidos: mobile - número móvil (visible para los clientes); phone - fijo (visible para los clientes); email - correo electrónico (visible para los clientes, para correos transaccionales); video - enlace de videollamada; messenger - mensajería; link - enlace general; location - dirección/ubicación |
value | string | Sí | Valor del canal (número, correo electrónico, URL, dirección) |
Algoritmo para contactChannels
- Tipo nuevo en el array: Se crea un nuevo canal
- Tipo existente en el array: Se actualiza el canal
- Tipo ausente en el array: Se elimina el canal
Un canal por tipo:
Get Profile (específico del proveedor)
Obtiene un perfil de contacto específico de un proveedor.
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"
Errores
| Estado | Causa |
|---|---|
404 | No se encontró ningún perfil con esta referencia |
Create or Update Profile (específico del proveedor)
Crea o actualiza un perfil de contacto específico de un proveedor.
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 | Obligatorio | Descripción |
|---|---|---|---|
reference | string | Sí | Referencia única del perfil |
userReference | string | Sí | Referencia del usuario al que pertenece este perfil |
providerReference | string | Sí | Referencia del proveedor al que se aplica este perfil |
name | string | Sí | Nombre público visible |
contactChannels | array | Sí | Array de canales de contacto (véase Update General Profile) |
Uso en Resources/Appointments
Para utilizar un perfil, establezca lo siguiente al crear un recurso o una cita:
contact: referencia de usuariocontactProfileReference: referencia del perfil
El perfil debe pertenecer al usuario de contacto y debe ser válido para el proveedor en el que se crea el recurso/la cita.
Alternativa:
Próximos pasos
Con las Offerings configuradas, ahora puede:
- Configurar el Scheduling - Timeslots, Appointments, Participations, Customers
- Integrar el Booking Flow - Endpoints de reserva orientados al consumidor
