Añadir horarios de servicio

Este endpoint permite añadir horarios de servicio por tipo de día dentro de un periodo concreto.

PUT /api/v1/businesses/{businessId}/services/{serviceId}/periods/{periodId}/service-times

A continuación, se desglosan los campos que conforman el cuerpo de la petición, siendo algunos de ellos obligatorios para que esta se realice de manera exitosa.

Los campos obligatorios están marcados con un asterisco (*).

Cuerpo de la petición

Análisis del JSON
{
    "dayType": {
        "name": "string"
    },
    "type": "string",
    "openingHours": {
        "start": 0,
        "end": 0
    },
    "serviceHours": {
        "start": 0,
        "end": 0
    },
    "restHours": [
        {
            "start": 0,
            "end": 0
        }
    ]
}
Detalles
  • dayType*: tipo de día. Puede ser un tipo de día del sistema o uno creado a nivel de negocio.

    • name*: nombre del tipo de día.

  • type*: tipo de horario del servicio. Puede tomar uno de los siguientes valores: OPEN, CLOSE, OPEN_HOLIDAY y CLOSE_HOLIDAY. Tanto CLOSE como CLOSE_HOLIDAY aplican a todo el día, es decir, de 0 a 1440.

  • openingHours*: horario de apertura del servicio. El valor se expresa en minutos desde la medianoche (00:00 hora local).

    • start*: inicio del intervalo expresado en minutos desde la medianoche.

    • end*: fin del intervalo expresado en minutos desde la medianoche.

  • serviceHours*: horario de servicio al público. El valor se expresa en minutos desde la medianoche (00:00 hora local).

    • start*: inicio del intervalo expresado en minutos desde la medianoche.

    • end*: fin del intervalo expresado en minutos desde la medianoche.

  • restHours: intervalo, si procede, en el que el servicio estará cerrado. El valor se expresa en minutos desde la medianoche (00:00 hora local).

    • start*: inicio del intervalo expresado en minutos desde la medianoche.

    • end*: fin del intervalo expresado en minutos desde la medianoche.

Ejemplo de la petición

Una vez realizado el análisis de los distintos campos, se muestra un ejemplo del cuerpo de la petición:

{
    "dayType": {
        "name": "SUNDAY"
    },
    "type": "OPEN",
    "openingHours": {
        "start": 0,
        "end": 0
    },
    "serviceHours": {
        "start": 540,
        "end": 1260
    },
    "restHours": [
        {
            "start": 840,
            "end": 870
        },
        {
            "start": 1080,
            "end": 1110
        }
    ]
}

Si todos los datos son correctos, se creará un horario de tipo abierto (OPEN) para el domingo (SUNDAY) con los siguientes intervalos:

  • Abierto 24 horas.

  • Atención al público de 9:00 (540) a 21:00 (1260).

  • Descanso de 14:00 (840) a 14:30 (870) y de 18:00 (1080) a 18:30 (1110).

Consideraciones

El nombre del tipo de día (name) debe coincidir exactamente con un tipo de día del sistema o con alguno definido a nivel de negocio.

Los campos que consideran los minutos desde la medianoche tienen en cuenta la zona horaria del servicio. Por ejemplo, si el servicio está en UTC+2, 540 hace referencia a las 9:00 UTC+2. Los valores admitidos para estos campos son de 0 a 1439.

Si ya existe un horario definido para el mismo tipo de día dentro del periodo, se sobrescribirá con los datos de la petición.

Códigos de error

Además de los errores comunes, este endpoint puede devolver los siguientes códigos:

Código Mensaje Descripción

400 Bad Request

-

El campo type no tiene uno de los valores admitidos (OPEN, CLOSE, OPEN_HOLIDAY, CLOSE_HOLIDAY), o el cuerpo de la petición no tiene un formato JSON válido.

404 Not Found

Period not found

El periodId indicado en la URL no existe para el servicio. Se puede consultar la información de los diferentes periodos de un servicio a través de esta petición.

Day type not found

El nombre indicado en dayType.name no coincide con ningún tipo de día del sistema ni definido a nivel de negocio.

406 Not Acceptable

must not be null

Falta alguno de los campos obligatorios (type, dayType, o los minutos de openingHours/serviceHours).

must be greater than or equal to 0 / must be less than or equal to 1439

Alguno de los campos de minutos está fuera del rango permitido (0 a 1439).

contained_service_time

El horario de descanso (restHours) debe estar contenido dentro del horario de apertura (openingHours).

invalid_service_time_rest

Los horarios de descanso (restHours) se solapan entre sí, o el horario de apertura no es válido.

409 Conflict

-

Se ha producido un conflicto al guardar el horario. Se recomienda revisar que los datos enviados no violen ninguna restricción de integridad.

Enlaces de interés