Skip to content

Referencia

Referencia de la API HTTP

Un mapa legible de la API HTTP del servicio emisor, agrupado por área — Runtime, Admin, Platform, Auth, Plans, Webhooks — con método, ruta y cómo se autentica cada uno.

Un mapa legible de la API HTTP del servicio emisor, agrupado por área. Esta página sirve para encontrar el endpoint correcto y saber cómo se autentica; la especificación OpenAPI legible por máquina se incluye con el servicio para los esquemas completos de petición/respuesta, tipos de campos y ejemplos.

$BASE es la URL de tu servicio emisor (p. ej. https://keyright.delta1labs.com).

La autenticación de un vistazo

Cada endpoint que no es de runtime está protegido por una de estas. Toda la autenticación de admin/platform usa la cabecera X-Admin-Token (un token de sesión del inicio de sesión del panel se presenta de la misma forma).

AuthCabecera(s)Quién
none—llamadas de runtime del cliente final (activación, validación, prueba)
tenant tokenX-Admin-Token: <team/session/env-admin token>un proveedor gestionando su propio tenant
platform tokenX-Admin-Token: <KEYRIGHT_PLATFORM_TOKEN> (+ X-Tenant para /admin/*)el operador de la plataforma
sessionX-Admin-Token: <session token from /auth/*>un usuario del panel con sesión iniciada
HMACX-Keyright-Signaturewebhooks del proveedor de pagos
cron secretX-Cron-Secretel programador de notificaciones externo

Los roles tras un tenant token están restringidos por capacidad (owner ⊃ admin ⊃ support/billing ⊃ viewer); el rol mínimo de un endpoint se indica abajo donde importa. Consulta Panel de administración para el modelo de roles.

Runtime (/v1/*) — sin auth, llamado por tu aplicación / cliente

MétodoRutaPropósito
POST/v1/activateActiva una clave en una máquina → consume un puesto, devuelve un lease firmado. Cuerpo: { key, machineId, product }.
POST/v1/validateRevalida / refresca una clave+máquina sin consumir un puesto nuevo. Cuerpo: { key, machineId, product }.
POST/v1/free-seatLibera el puesto que esta máquina tiene en una clave. Cuerpo: { key, machineId, product }.
POST/v1/trialPrueba de autoservicio: acuña una clave de prueba para un producto y la envía por email (idempotente por email — una nueva solicitud reenvía la clave existente). Cuerpo { product, email, company }. La respuesta JSON confirma { ok, trial, emailed, expiresUtc, days, created } y no contiene la clave. CORS abierto. Consulta Pruebas gratuitas de autoservicio.

Admin (/admin/*) — tenant token

Gestiona los productos, licencias y equipo de un tenant. Con el platform token requieren una cabecera X-Tenant que nombre al tenant destino.

Productos y niveles

MétodoRutaPropósito
GET/admin/productsLista los productos (con niveles, recuentos de licencias, ajustes de prueba).
POST/admin/productsCrea/actualiza un producto (nombre, slug, trialDays/trialTier/trialSeats opcionales).
POST/admin/products/{slug}/trialHabilita/deshabilita la prueba de autoservicio de un producto. Cuerpo { days, tier, seats } (days <= 0 la deshabilita); la respuesta los devuelve como { trialDays, trialTier, trialSeats }.
POST/admin/products/{slug}/tiersCrea/actualiza un nivel por producto (puestos + plantilla de derechos).
POST/admin/products/{slug}/signing-keyGenera (o, con {"rotate":true}, rota) la clave de firma propia de este producto → devuelve signingPublicKey para embeber en tu aplicación.
GET/admin/tiersLista las plantillas de nivel de todo el tenant.
POST/admin/tiersCrea/actualiza una plantilla de nivel de todo el tenant.

Licencias

MétodoRutaPropósito
POST/admin/licensesEmite una licencia (autogenera una clave salvo que pases id).
GET/admin/licenses[?product=]Lista/filtra licencias.
POST/admin/licenses/{id}/revokeRevoca una licencia (surte efecto en la siguiente comprobación en línea).
POST/admin/licenses/{id}/renewAmplía la caducidad / cambia puestos, sin clave nueva.
POST/admin/licenses/{id}/transferTransfiere la propiedad a un nuevo titular (historial auditado).
GET/admin/licenses/{id}/transfersLa cadena de propiedad de la licencia.
POST/admin/licenses/{id}/deactivateLibera el puesto de una máquina concreta.
POST/admin/licenses/{id}/offline-leaseFirma un lease sin conexión para el id de una máquina aislada (air-gapped).
GET/admin/licenses/{id}/activationsMáquinas en las que una licencia está activa (metadatos del dispositivo + geolocalización).
POST/admin/licenses/bulk-revokeRevoca muchas por id, resultados por elemento.
POST/admin/licenses/bulk-seatsCambia recuentos de puestos en bloque, resultados por elemento.
GET/admin/revocation-listConstruye + firma una lista de revocación sin conexión distribuible.

Equipo

MétodoRutaAuthPropósito
GET/POST/admin/teamownerLista / invita miembros del equipo (la invitación envía por email un token de un solo uso).
POST/admin/team/{id}ownerHabilita/deshabilita un miembro.
POST/admin/team/{id}/set-passwordownerAprovisiona la contraseña del panel de un miembro.

Espacio de trabajo, reportes e integración

MétodoRutaPropósito
GET/admin/overviewPanel de inicio: resumen de suscripción, recuentos, desglose por producto, tendencia, renovaciones próximas.
GET/admin/accountTenant + plan + uso + el bloque de integración (URL base, clave pública de firma, URL de webhook).
GET/admin/statsTotales por producto (licencias, puestos activos, que caducan pronto, revocadas).
GET/admin/usagePuestos asignados/usados por licencia + totales (facturación basada en uso).
GET/admin/export[?product=]Paquete completo de licencias + activaciones.
GET/admin/auditRegistro de auditoría atribuible de acciones que modifican datos.
GET/admin/public-keyLa clave pública de firma del tenant. null hasta que existe una clave de tenant — para una clave por producto usa POST /admin/products/{slug}/signing-key en su lugar.
GET/admin/self-licenseSolo autoalojado: el estado de licencia de esta propia instancia — status, edition, isTrial, phase (active/expiring/grace/gated), daysUntilExpiry, graceDaysLeft.
POST/admin/workspaceOwner: nombre del espacio de trabajo, logo, marca de onboarding.
POST/admin/webhook-secret/rotateOwner: rota el secreto del webhook de fulfillment de este tenant.
POST/admin/billing/checkoutOwner: abre un checkout de Lemon Squeezy para mejorar el plan.
POST/GET/admin/resellers, /admin/resellers/{id}Gestiona revendedores (emisores limitados y con alcance por producto).

Platform (/platform/*) — platform token

La superficie del operador multi-tenant. Deshabilitada (503) cuando KEYRIGHT_PLATFORM_TOKEN no está definido (autoalojamiento de un solo tenant).

MétodoRutaPropósito
POST/platform/tenantsCrea una empresa/tenant → devuelve el token inicial del owner, la clave pública de firma, el secreto del webhook.
GET/platform/tenants[?slug=]Lista tenants.
POST/platform/tenants/{id}Habilita/deshabilita, asigna plan, estado de suscripción.
POST/platform/tenants/{id}/signing-keyImporta (PKCS#8 de Nebula) o genera una clave de firma de tenant.
POST/platform/tenants/{id}/rotate-signing-keyRota la clave de firma de un tenant.
POST/platform/tenants/{id}/rotate-webhook-secretRota el secreto del webhook de un tenant.
GET/platform/plansCatálogo completo de planes (incl. planes no públicos).
POST/platform/plans/{key}Crea/actualiza los precios, cuotas y características de un plan.

Auth (/auth/*) — inicio de sesión del panel → token de sesión

Estos acuñan un token de sesión que luego presentas como X-Admin-Token en los endpoints /admin/* de arriba. El inicio de sesión es por tenant (pasa X-Tenant; por defecto es default).

MétodoRutaPropósito
POST/auth/loginEmail + contraseña → un desafío MFA.
POST/auth/mfaEmail + contraseña + código TOTP → token de sesión.
POST/auth/ssoIntercambia un token de ID OIDC validado por un token de sesión.
POST/auth/sessionIntercambia un token de acceso de inicio de sesión nativo / social por un token de sesión.
GET/auth/oauth/{provider} → /auth/oauth/{provider}/callbackOAuth nativo de Google / GitHub en tu propio dominio.

Plans (/plans) — público

MétodoRutaAuthPropósito
GET/plansnoneCatálogo público de precios (planes marcados como públicos), para una página de precios o un registro.

Webhooks (/webhooks/*) — HMAC

Disparadores de fulfillment: un proveedor de pagos (o un adaptador ligero) hace POST de un evento normalizado, firmado con HMAC sobre el cuerpo en bruto en X-Keyright-Signature. “Paid” acuña una licencia (idempotente por referencia de pedido); “refund”/“cancel” la revoca. El procesamiento del pago en sí queda fuera de alcance.

MétodoRutaPropósito
POST/webhooks/fulfill/{slug}Webhook por tenant; el tenant se toma de la ruta y se verifica con el secreto de ese tenant.
POST/webhooks/fulfillWebhook heredado de todo el despliegue (un solo tenant, KEYRIGHT_WEBHOOK_SECRET).

Operacional

MétodoRutaAuthPropósito
GET/healthnoneSonda de vivacidad/versión.
GET/brandingnoneNombre/logo/color de marca white-label para cualquier interfaz.
POST/internal/notifications/runcron secretEjecuta el escaneo diario de caducidad/límite de puestos (dispáralo desde un programador externo).
varios/portal/*magic linkPortal de cliente de autoservicio (ver licencias, re-descargar clave/archivo, liberar puestos).

El propio panel se sirve en /dashboard — consulta Panel de administración.