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

  1. Crear Products - Los servicios que usted ofrece
  2. Crear Resources - Los objetos reservables (inmuebles, salas, personal)
  3. 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.

POST /crms/:crmId/provider/:providerRef/products
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ámetroTipoDescripción
crmIdstringSu identificador de CRM
providerRefstringReferencia del proveedor

Request Body

CampoTipoObligatorioDescripción
referencestringReferencia única del producto
namestringNombre visible del producto
descriptionstringNoDescripción para los clientes (por ejemplo, indicaciones sobre la cita)
minDurationnumberNoDuración mínima en minutos
maxDurationnumberNoDuración máxima en minutos

Response

201 Created
{
  "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:

leadTimeMinutes y followUpTimeMinutes definen tiempos de margen antes y después de la cita. Estos pueden configurarse a través de la interfaz de timum.

Get Products

Lista todos los productos de un proveedor.

GET /crms/:crmId/provider/:providerRef/products
curl -X GET "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/products" \
  -H "X-TIMUM-CLIENT-ID: your-api-key"

Response

200 OK
[
  {
    "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).

POST /crms/:crmId/provider/:providerRef/resources
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ámetroTipoPor defectoDescripción
onDuplicateRaisebooleanfalseSi es true: la solicitud falla con 400 si la referencia ya existe. Si es false: se actualiza el recurso existente.

Request Body

CampoTipoObligatorioDescripción
referencestringReferencia única del recurso
publicNamestringNombre mostrado a los clientes
internalNamestringNombre interno para el proveedor
descriptionstringNoDescripción del recurso
productsstring[]NoArray de referencias de productos. Los productos deben existir ya. Define qué servicios se ofrecen en este recurso.
contactstringNo*Referencia de usuario como persona de contacto. *Obligatorio si se indica contactProfileReference.
contactProfileReferencestringNoReferencia de un Contact Profile. Debe pertenecer al usuario de contacto.
websitestringNoURL del sitio web del recurso
addressobjectNoDirecció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

201 Created
{
  "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.

POST /crms/:crmId/provider/:providerRef/resources/:resourceRef
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

CampoTipoDescripción
archivedbooleanEstablece 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.

GET /crms/:crmId/provider/:providerRef/resources
curl -X GET "https://www.timum.de/crms/{crmId}/provider/prov-001@yourCrm/resources" \
  -H "X-TIMUM-CLIENT-ID: your-api-key"

Response

200 OK
[
  {
    "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).

DELETE /crms/:crmId/provider/:providerRef/resources/:resourceRef
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ámetroTipoDescripción
ignoreFutureAppointmentsbooleanSi 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:

La eliminación de un recurso es irreversible. Utilice archived: true en el endpoint de actualización si solo desea desactivar el recurso.

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.

GET /crms/:crmId/user/:userRef/generalContactProfile
curl -X GET "https://www.timum.de/crms/{crmId}/user/user-123@yourCrm/generalContactProfile" \
  -H "X-TIMUM-CLIENT-ID: your-api-key"

Response

200 OK
{
  "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.

PUT /crms/:crmId/user/:userRef/generalContactProfile
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

CampoTipoObligatorioDescripción
namestringNombre público. Puede diferir del nombre de inicio de sesión (por ejemplo, nombre de la empresa).
contactChannelsarrayArray de canales de contacto

Campos de Contact Channel

CampoTipoObligatorioDescripción
labelstringNoEtiqueta visible del canal
typestringTipo 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
valuestringValor 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:

Actualmente solo puede existir un canal por tipo. Varios números de teléfono requieren tipos diferentes (por ejemplo, phone y mobile).

Get Profile (específico del proveedor)

Obtiene un perfil de contacto específico de un proveedor.

GET /crms/:crmId/provider/:providerRef/contactProfile/:profileRef
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

EstadoCausa
404No 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.

POST /crms/:crmId/provider/:providerRef/contactProfile
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

CampoTipoObligatorioDescripción
referencestringReferencia única del perfil
userReferencestringReferencia del usuario al que pertenece este perfil
providerReferencestringReferencia del proveedor al que se aplica este perfil
namestringNombre público visible
contactChannelsarrayArray 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 usuario
  • contactProfileReference: 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:

Si no se indica contactProfileReference, se utiliza el General Profile del usuario de contacto. Si no se indica ningún contacto, se muestra la información del proveedor.

Próximos pasos

Con las Offerings configuradas, ahora puede:

Temas relacionados