Referencia · Panel

Credenciales del negocio (panel, con sesión)

GET /api/configuracion/api-externa/credenciales

Ver en Markdown
GET/api/configuracion/api-externa/credenciales

Dueña o administradora (la Super Recepción no pasa). Nunca devuelve la clave ni su hash.

Autenticación: sesión del panel de Turnova (dueña o administradora). No se llama con una clave de la API.

Ejemplo

// Desde el panel de Turnova, con la sesión iniciada (cookie).
const res = await fetch("/api/configuracion/api-externa/credenciales", {
  method: "GET",
});
const r = await res.json();

Respuestas

HTTPQué significa
200Lista
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.

Respuesta 200

{
  "ok": true,
  "datos": {
    "plan": {
      "incluyeApi": false
    },
    "credenciales": [
      {
        "id": "cmh4k2n9x0001",
        "nombre": "Masaje descontracturante",
        "tipo": "PUBLICA",
        "prefijo": "tnv_pk_ab12cd34",
        "scopes": [
          "catalogo:leer",
          "disponibilidad:leer",
          "reservas:crear"
        ],
        "origenes": [
          "https://mi-spa.com"
        ],
        "createdAt": "2026-11-01T13:00:00.000Z",
        "ultimoUsoEn": "2026-11-01T13:05:00.000Z",
        "revocadaEn": null
      }
    ]
  }
}
CampoTipoObligatorioDescripción
datos.planobjectNo
datos.plan.incluyeApibooleanNofalse: el plan no incluye la API; las claves existentes no funcionan.
datos.credencialesarray de objectNo
datos.credenciales[].idstringNo
datos.credenciales[].nombrestringNo
datos.credenciales[].tipoPUBLICA, SECRETANo
datos.credenciales[].prefijostringNo
datos.credenciales[].scopesarray de stringNo
datos.credenciales[].origenesarray de stringNo
datos.credenciales[].createdAtstring (date-time)No
datos.credenciales[].ultimoUsoEnstring (date-time) o nullNo
datos.credenciales[].revocadaEnstring (date-time) o nullNo

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