Referencia · Catálogo

Servicios visibles, sedes y profesionales visibles del negocio

GET /api/v1/catalogo

Ver en Markdown
GET/api/v1/catalogo

Scope catalogo:leer. Mismo catálogo que la página pública de reservas.

Autenticación: Authorization: Bearer <clave>. Ver Autenticación.

Parámetros

NombreEnTipoObligatorioDescripción
sucursalIdquerystringNoAcota los profesionales a esa sede (si el negocio tiene más de una).

Ejemplo

curl "https://turnovapp.com/api/v1/catalogo" \
  -H "Authorization: Bearer $TURNOVA_CLAVE_SECRETA"

Respuestas

HTTPQué significa
200Catálogo
400Datos inválidos: mirá error.campos (ENTRADA_INVALIDA, IDEMPOTENCY_KEY_FALTANTE…).
401Clave faltante, inválida o revocada.
403Origen no permitido, permiso faltante, clave secreta desde un navegador o plan sin la API (PLAN_SIN_API).
404No existe o no es de este negocio.
429Demasiados pedidos (LIMITE_USO): esperá Retry-After segundos.
500Error técnico: reintentá con los mismos datos (y la misma Idempotency-Key).

Respuesta 200

{
  "version": 1,
  "ok": true,
  "progreso": {
    "principal": "CONSULTADO"
  },
  "requiereRevision": false,
  "datos": {
    "negocio": {
      "nombre": "Masaje descontracturante",
      "zonaHoraria": "America/Argentina/Buenos_Aires",
      "moneda": "ARS",
      "cobraSena": false
    },
    "sedes": [
      {
        "id": "cmh4k2n9x0001",
        "nombre": "Masaje descontracturante",
        "direccion": "Av. Colón 1234, Córdoba",
        "principal": false
      }
    ],
    "profesionales": [
      {
        "id": "cmh4k2n9x0001",
        "nombre": "Masaje descontracturante",
        "especialidad": "Masajista"
      }
    ],
    "servicios": [
      {
        "id": "cmh4k2n9x0001",
        "nombre": "Masaje descontracturante",
        "descripcion": "60 minutos con aceites esenciales.",
        "duracionMin": 60,
        "precio": 25000,
        "descuentoPct": 0,
        "sesiones": 1,
        "cantidadProfesionales": 1,
        "comboPorEtapas": false,
        "seReservaPorWhatsapp": false,
        "categorias": [
          {
            "id": "cmh3c0cat001",
            "nombre": "Masajes"
          }
        ],
        "opciones": [
          {
            "id": "cmh4k2n9x0001",
            "nombre": "Masaje descontracturante",
            "precio": 25000,
            "duracionMin": 60,
            "capacidadPersonas": 1,
            "cantidadProfesionales": 1,
            "comboPorEtapas": false
          }
        ],
        "extras": [],
        "profesionales": [
          {
            "id": "cmh4k2n9x0001",
            "nombre": "Masaje descontracturante",
            "especialidad": "Masajista"
          }
        ]
      }
    ]
  }
}
CampoTipoObligatorioDescripción
datos.negocioobjectNo
datos.negocio.nombrestringNo
datos.negocio.zonaHorariastringNo
datos.negocio.moneda"ARS"No
datos.negocio.cobraSenabooleanNo
datos.sedesarray de objectNo
datos.sedes[].idstringNo
datos.sedes[].nombrestringNo
datos.sedes[].direccionstring o nullNo
datos.sedes[].principalbooleanNo
datos.profesionalesarray de objectNo
datos.profesionales[].idstringNo
datos.profesionales[].nombrestringNo
datos.profesionales[].especialidadstring o nullNo
datos.serviciosarray de objectNo
datos.servicios[].idstringNo
datos.servicios[].nombrestringNo
datos.servicios[].descripcionstring o nullNo
datos.servicios[].duracionMinintegerNo
datos.servicios[].precionumberNoPrecio de lista. El importe final lo calcula el servidor al reservar.
datos.servicios[].descuentoPctnumberNo
datos.servicios[].sesionesintegerNoMayor a 1: paquete de sesiones.
datos.servicios[].cantidadProfesionalesintegerNo
datos.servicios[].comboPorEtapasbooleanNo
datos.servicios[].seReservaPorWhatsappbooleanNotrue: la reserva por la API responde 409 SERVICIO_DERIVADO_WHATSAPP.
datos.servicios[].categoriasarray de objectNo
datos.servicios[].categorias[].idstringNo
datos.servicios[].categorias[].nombrestringNo
datos.servicios[].opcionesarray de objectNo
datos.servicios[].opciones[].idstringNo
datos.servicios[].opciones[].nombrestringNo
datos.servicios[].opciones[].precionumber o nullNo
datos.servicios[].opciones[].duracionMininteger o nullNo
datos.servicios[].opciones[].capacidadPersonasintegerNo
datos.servicios[].opciones[].cantidadProfesionalesinteger o nullNo
datos.servicios[].opciones[].comboPorEtapasbooleanNo
datos.servicios[].extrasarray de objectNo
datos.servicios[].extras[].idstringNo
datos.servicios[].extras[].nombrestringNo
datos.servicios[].extras[].precionumberNo
datos.servicios[].extras[].duracionMinintegerNo
datos.servicios[].extras[].cantidadMaxintegerNoPara pedir N unidades, repetir el id N veces en addOnIds.
datos.servicios[].profesionalesarray de objectNo
datos.servicios[].profesionales[].idstringNo
datos.servicios[].profesionales[].nombrestringNo
datos.servicios[].profesionales[].especialidadstring o nullNo

Los errores siguen el formato común: ver Errores.