Skip to content

Cuenta y equipo

La gestión de tu cuenta de desarrollador y de tu equipo vive en el dashboard, bajo /platform/dashboard/*. Toda esta superficie es cookie-only: la consume el dashboard web con la sesión access_token_dev que setea POST /platform/dashboard/login. No se expone a API keys programáticas: no hay scope que la habilite, igual que la conexión de canales y la facturación.

Distinto de la API. La superficie /platform/v1/* (send, media, templates, data plane, webhooks, broadcasts, gestión de canales) se autentica con X-API-Key. La higiene de cuenta y el equipo NO: son plomería del dashboard.

Al registrarte (POST /platform/dashboard/register) tu cuenta arranca con email_verified = false. El dashboard muestra un banner “verificá tu correo” mientras siga en false.

Método + rutaAuthDescripción
POST /platform/dashboard/resend-verificationCookieRe-emite un token de verificación (TTL 24 h) y dispara el correo. Siempre 200: si el servicio de correo no está configurado, el envío se saltea y se loguea, sin bloquear.
POST /platform/dashboard/verify-emailToken (el token ES el auth)Consume el token y setea email_verified = true. 400 invalid_token si el token es inválido / vencido / ya usado / de otro propósito.

El correo de verificación lleva un enlace a https://devs.kalipto.app/app/verify-email?token=<token>; esa página del dashboard hace el POST por vos.

// POST /platform/dashboard/verify-email
{ "token": "<token de la URL>" }
// → 200 { "message": "Email verified", "email_verified": true }

Dos pasos: pedir el enlace, y restablecer con el token.

Método + rutaAuthDescripción
POST /platform/dashboard/forgot-passwordNingunaPide un enlace de restablecimiento. Siempre 200, exista o no la cuenta (anti-enumeración). El token (TTL 1 h) + el correo solo se crean cuando la cuenta existe.
POST /platform/dashboard/reset-passwordTokenConsume el token y setea la contraseña nueva (password, 8-128 chars). 400 invalid_token si el token es inválido / vencido / ya usado.
// POST /platform/dashboard/forgot-password
{ "email": "[email protected]" }
// → 200 (idéntico exista o no la cuenta)
// { "message": "Si la cuenta existe, te enviamos un correo para restablecer la contraseña." }

Anti-enumeración. forgot-password devuelve la misma respuesta exista o no el correo. No podés descubrir qué correos tienen cuenta sondeando este endpoint.

El correo de restablecimiento lleva a https://devs.kalipto.app/app/reset-password?token=<token>.

Método + rutaAuthDescripción
DELETE /platform/dashboard/accountCookieBorra tu cuenta de desarrollador + cascada FK sobre todas las filas hijas platform_* (canales, mensajes, conversaciones, contactos, templates, keys, webhooks, broadcasts, membresías). Devuelve 204 y limpia la cookie de sesión.
  • El borrado es síncrono: ves la operación completa antes de que se limpie la cookie.
  • Antes de borrar, se intenta cancelar la suscripción de Polar (best-effort, nunca bloquea el borrado) para que la facturación se detenga.
  • La cascada la hace el ondelete="CASCADE" de las FKs. Cero FK a businesses: la plataforma es un sistema independiente, así que borrar tu cuenta de desarrollador no toca ningún negocio managed.

Irreversible. No hay papelera ni restauración. Toda tu data del data plane (mensajes/conversaciones/contactos), tus canales, tus keys y tus membresías se borran.

Podés invitar a otros desarrolladores a tu cuenta. Las membresías viven bajo /platform/dashboard/team/* (cookie-only, owner-scoped).

Método + rutaAuthDescripción
POST /platform/dashboard/team/inviteCookie (owner)Invitá por correo. Body {email, role} con role ∈ {owner, member} (default member). Crea una membresía invited (token TTL 7 días) y dispara el correo de invitación. 201. 409 already_member si ese correo ya fue invitado (UNIQUE (owner_account_id, invited_email)) o si te invitás a vos mismo.
GET /platform/dashboard/teamCookie (owner)Lista los miembros (invited + active), más nuevo primero.
POST /platform/dashboard/team/acceptCookie (el invitado, logueado en SU cuenta)Acepta la invitación. Body {token} de la URL del correo. Linkea tu cuenta como miembro (status='active'), setea member_account_id, y limpia el token. 400 invalid_invite si la invitación falta / venció / fue revocada / ya no está invited.
DELETE /platform/dashboard/team/{member_id}Cookie (owner)Revoca una membresía (la marca revoked). 204. 404 si el miembro no es tuyo (owner-scoped).

El correo de invitación lleva a https://devs.kalipto.app/app/accept-invite?token=<token>. El invitado tiene que estar logueado en su propia cuenta de desarrollador para aceptar.

// POST /platform/dashboard/team/invite
{ "email": "[email protected]", "role": "member" }
// → 201 { "id": 7, "invited_email": "[email protected]",
// "member_account_id": null, "role": "member", "status": "invited",
// "created_at": "...", "accepted_at": null }
EstadoSignificado
invitedInvitación enviada, todavía sin aceptar.
activeEl invitado aceptó; member_account_id apunta a su cuenta.
revokedEl owner revocó la membresía.

En esta versión, el equipo es solo el ciclo de vida de la membresía: invitar, aceptar, listar y revocar. Un miembro activo todavía NO opera sobre los recursos del owner (canales, mensajes, keys): eso es un WF futuro documentado. Hoy, ser miembro registra la relación; no delega autoridad sobre las otras superficies de la API.

Cada cuenta de desarrollador sigue autenticándose con su propia sesión / sus propias keys. La membresía es el primer paso del modelo de colaboración; el acceso compartido a recursos llega después.

  • Autenticación: cómo generar API keys y elegir scopes para la superficie /platform/v1/*.
  • Quickstart: registrar cuenta, conectar un canal y enviar tu primer mensaje.