NueForm

API de Equipos

Gestiona equipos, miembros, roles e invitaciones para la construcción colaborativa de formularios.

La API de Equipos te permite crear y gestionar equipos para la construcción colaborativa de formularios. Los equipos permiten que múltiples usuarios compartan formularios, con control de acceso basado en roles que gobierna quién puede ver, editar y eliminar formularios y respuestas.

Todos los cuerpos de solicitud y respuesta utilizan nombres de campo en snake_case.

Roles de Equipo

ownerrole

Acceso completo. Puede gestionar miembros, facturación y eliminar el equipo.

adminrole

Puede crear, editar y eliminar formularios, gestionar miembros y ver respuestas.

editorrole

Puede crear y editar formularios, ver respuestas. No puede gestionar miembros.

viewerrole

Puede ver formularios y respuestas. No puede crear ni editar.

Listar Equipos

GET/api/v1/teams

Devuelve todos los equipos de los que el usuario autenticado es miembro.

Respuesta

json
{
  "teams": [
    {
      "id": "665b2c3d4e5f6a7b8c9d0e1f",
      "name": "Marketing",
      "slug": "marketing",
      "owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
      "created_at": "2026-01-10T09:00:00.000Z",
      "updated_at": "2026-02-15T11:30:00.000Z",
      "member_count": 5,
      "your_role": "admin"
    },
    {
      "id": "665c3d4e5f6a7b8c9d0e1f20",
      "name": "Product",
      "slug": "product",
      "owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
      "created_at": "2026-02-01T14:00:00.000Z",
      "updated_at": "2026-02-20T16:45:00.000Z",
      "member_count": 3,
      "your_role": "owner"
    }
  ]
}

Ejemplos de Código

bash
curl -X GET "https://api.nueform.io/api/v1/teams" \
  -H "Authorization: Bearer YOUR_API_KEY"

Crear Equipo

POST/api/v1/teams

Crea un nuevo equipo. El usuario autenticado se convierte en el propietario del equipo.

Cuerpo de Solicitud

namestring

Nombre del equipo

Ejemplo de Solicitud

json
{
  "name": "Marketing"
}

Respuesta

json
{
  "id": "665b2c3d4e5f6a7b8c9d0e1f",
  "name": "Marketing",
  "slug": "marketing",
  "owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
  "created_at": "2026-02-28T12:00:00.000Z",
  "updated_at": "2026-02-28T12:00:00.000Z"
}

Ejemplos de Código

bash
curl -X POST "https://api.nueform.io/api/v1/teams" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Marketing" }'

Obtener Equipo

GET/api/v1/teams/:teamId

Obtiene un equipo individual por ID.

Cualquier miembro del equipo puede llamarlo. La respuesta nunca incluye los secretos del equipo (la cadena de conexión de la base de datos de residencia de datos, el ID de la conexión SSO ni los ID internos de dominio), y sso_domain_verify_token (el valor DNS que verifica el dominio SSO) solo se devuelve a quienes llaman con rol owner o admin.

Parámetros de Ruta

teamIdstring

El ID del equipo

Respuesta

json
{
  "id": "665b2c3d4e5f6a7b8c9d0e1f",
  "name": "Marketing",
  "slug": "marketing",
  "owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
  "created_at": "2026-01-10T09:00:00.000Z",
  "updated_at": "2026-02-15T11:30:00.000Z",
  "member_count": 5
}

Ejemplos de Código

bash
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
  -H "Authorization: Bearer YOUR_API_KEY"

Actualizar Equipo

PUT/api/v1/teams/:teamId

Actualiza las propiedades del equipo. Requiere rol owner o admin.

Parámetros de Ruta

teamIdstring

El ID del equipo

Cuerpo de Solicitud

namestring

Nuevo nombre del equipo

Ejemplo de Solicitud

json
{
  "name": "Marketing & Growth"
}

Respuesta

Devuelve el objeto del equipo actualizado.

Ejemplos de Código

bash
curl -X PUT "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Marketing & Growth" }'

Eliminar Equipo

DELETE/api/v1/teams/:teamId

Elimina permanentemente un equipo. Solo el propietario del equipo puede eliminarlo.

Eliminar un equipo remueve todas las membresías e invitaciones del equipo. Los formularios que pertenecen al equipo no se eliminan automáticamente, pero serán inaccesibles para los antiguos miembros del equipo.

Parámetros de Ruta

teamIdstring

El ID del equipo

Respuesta

json
{
  "success": true
}

Ejemplos de Código

bash
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
  -H "Authorization: Bearer YOUR_API_KEY"

Listar Miembros

GET/api/v1/teams/:teamId/members

Devuelve todos los miembros de un equipo.

Parámetros de Ruta

teamIdstring

El ID del equipo

Respuesta

json
{
  "members": [
    {
      "id": "66d1e2f3a4b5c6d7e8f9a0b1",
      "user_id": "665a0a1b2c3d4e5f6a7b8c9d",
      "email": "alice@example.com",
      "first_name": "Alice",
      "last_name": "Johnson",
      "role": "owner",
      "joined_at": "2026-01-10T09:00:00.000Z"
    },
    {
      "id": "66d2e3f4a5b6c7d8e9f0a1b2",
      "user_id": "665a1b2c3d4e5f6a7b8c9d0e",
      "email": "bob@example.com",
      "first_name": "Bob",
      "last_name": "Smith",
      "role": "editor",
      "joined_at": "2026-01-15T14:30:00.000Z"
    }
  ]
}

Ejemplos de Código

bash
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members" \
  -H "Authorization: Bearer YOUR_API_KEY"

Agregar Miembro

POST/api/v1/teams/:teamId/members

Invita a alguien al equipo por email, igual que Crear Invitación: NueForm envía la invitación por email, caduca a los 7 días y la persona se une al aceptarla. No agrega directamente a un usuario existente. Requiere rol owner o admin. Devuelve la invitación (201); responde 409 si la dirección ya pertenece a un miembro o ya tiene una invitación pendiente que no ha caducado (una invitación caducada no impide enviar una nueva), y 400 si el plan del propietario del equipo no tiene asientos disponibles: una invitación pendiente ocupa un asiento hasta que caduca.

Parámetros de Ruta

teamIdstring

El ID del equipo

Cuerpo de Solicitud

emailstring

Dirección de email a invitar (se guarda en minúsculas)

rolestring

Rol que recibe la persona al aceptar: "admin", "editor" o "viewer"

Ejemplo de Solicitud

json
{
  "email": "carol@example.com",
  "role": "editor"
}

Respuesta

json
{
  "id": "66e1f2a3b4c5d6e7f8a9b0c1",
  "team_id": "665b2c3d4e5f6a7b8c9d0e1f",
  "email": "carol@example.com",
  "role": "editor",
  "invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
  "token": "2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f",
  "status": "pending",
  "language": "en",
  "expires_at": "2026-03-07T12:00:00.000Z",
  "created_at": "2026-02-28T12:00:00.000Z",
  "invite_url": "/teams/invite/2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f"
}

Ejemplos de Código

bash
curl -X POST "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "carol@example.com",
    "role": "editor"
  }'

Actualizar Rol de Miembro

PUT/api/v1/teams/:teamId/members/:memberId

Actualiza el rol de un miembro del equipo. Requiere rol owner o admin. No puedes cambiar el rol del propietario.

Parámetros de Ruta

teamIdstring

El ID del equipo

memberIdstring

El ID del miembro del equipo

Cuerpo de Solicitud

rolestring

Nuevo rol: "admin", "editor", "viewer"

Ejemplo de Solicitud

json
{
  "role": "admin"
}

Respuesta

json
{
  "id": "66d2e3f4a5b6c7d8e9f0a1b2",
  "user_id": "665a1b2c3d4e5f6a7b8c9d0e",
  "team_id": "665b2c3d4e5f6a7b8c9d0e1f",
  "role": "admin",
  "joined_at": "2026-01-15T14:30:00.000Z"
}

Ejemplos de Código

bash
curl -X PUT "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members/66d2e3f4a5b6c7d8e9f0a1b2" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "role": "admin" }'

Eliminar Miembro

DELETE/api/v1/teams/:teamId/members/:memberId

Elimina un miembro de un equipo. Requiere rol owner o admin. El propietario del equipo no puede ser eliminado. También se cancelan las invitaciones pendientes de este equipo a esa persona, para que no pueda volver a unirse con ellas.

Parámetros de Ruta

teamIdstring

El ID del equipo

memberIdstring

El ID del miembro del equipo

Respuesta

json
{
  "success": true,
  "message": "Member removed from team"
}

Ejemplos de Código

bash
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members/66d2e3f4a5b6c7d8e9f0a1b2" \
  -H "Authorization: Bearer YOUR_API_KEY"

Listar Invitaciones

GET/api/v1/teams/:teamId/invitations

Devuelve las invitaciones pendientes del equipo que no han vencido, de la más reciente a la más antigua. Cualquier miembro del equipo puede llamarlo; el campo token (el secreto del enlace de invitación) solo se incluye para quienes llaman con rol owner o admin.

Parámetros de Ruta

teamIdstring

El ID del equipo

Respuesta

json
{
  "invitations": [
    {
      "id": "66e1f2a3b4c5d6e7f8a9b0c1",
      "email": "carol@example.com",
      "role": "editor",
      "invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
      "status": "pending",
      "expires_at": "2026-03-07T12:00:00.000Z",
      "created_at": "2026-02-28T12:00:00.000Z"
    }
  ]
}

Ejemplos de Código

bash
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations" \
  -H "Authorization: Bearer YOUR_API_KEY"

Crear Invitación

POST/api/v1/teams/:teamId/invitations

Envía una invitación por email para unirse a un equipo. La invitación incluye un token único y expira después de 7 días. Requiere rol owner o admin. Responde 409 si la dirección ya pertenece a un miembro o ya tiene una invitación pendiente que no ha caducado (una invitación caducada no impide enviar una nueva), y 400 si el plan del propietario del equipo no tiene asientos disponibles: una invitación pendiente ocupa un asiento hasta que caduca.

Parámetros de Ruta

teamIdstring

El ID del equipo

Cuerpo de Solicitud

emailstring

Dirección de email a invitar

rolestring

Rol que recibe la persona al aceptar: "admin", "editor" o "viewer"

Ejemplo de Solicitud

json
{
  "email": "carol@example.com",
  "role": "editor"
}

Respuesta

json
{
  "id": "66e1f2a3b4c5d6e7f8a9b0c1",
  "team_id": "665b2c3d4e5f6a7b8c9d0e1f",
  "email": "carol@example.com",
  "role": "editor",
  "invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
  "token": "2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f",
  "status": "pending",
  "language": "en",
  "expires_at": "2026-03-07T12:00:00.000Z",
  "created_at": "2026-02-28T12:00:00.000Z",
  "invite_url": "/teams/invite/2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f"
}

Ejemplos de Código

bash
curl -X POST "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "carol@example.com",
    "role": "editor"
  }'

Cancelar Invitación

DELETE/api/v1/teams/:teamId/invitations/:invId

Cancela una invitación pendiente. Requiere rol owner o admin. El token de la invitación dejará de ser válido.

Parámetros de Ruta

teamIdstring

El ID del equipo

invIdstring

El ID de la invitación

Respuesta

json
{
  "success": true,
  "message": "Invitation cancelled"
}

Ejemplos de Código

bash
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations/66e1f2a3b4c5d6e7f8a9b0c1" \
  -H "Authorization: Bearer YOUR_API_KEY"

Respuestas de Error

Respuestas de error estándar devueltas por los endpoints de la API de Equipos.

Códigos de Error

400Bad Request

Campos requeridos faltantes, email o rol inválido, o no quedan asientos en el plan del propietario del equipo

401Unauthorized

API key faltante o inválida

403Forbidden

No eres miembro del equipo o tu rol no es suficiente para la acción

404Not Found

Equipo, miembro o invitación no encontrados

409Conflict

El usuario ya es miembro, invitación duplicada

500Server Error

Error interno del servidor

Ejemplo de Error

json
{
  "error": {
    "code": "CONFLICT",
    "message": "A pending invitation already exists for this email",
    "status": 409
  }
}
Ultima actualizacion: 8 de octubre de 2026