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
ownerroleAcceso completo. Puede gestionar miembros, facturación y eliminar el equipo.
adminrolePuede crear, editar y eliminar formularios, gestionar miembros y ver respuestas.
editorrolePuede crear y editar formularios, ver respuestas. No puede gestionar miembros.
viewerrolePuede ver formularios y respuestas. No puede crear ni editar.
/api/v1/teamsPOST/api/v1/teamsGET/api/v1/teams/:teamIdPUT/api/v1/teams/:teamIdDELETE/api/v1/teams/:teamIdGET/api/v1/teams/:teamId/membersPOST/api/v1/teams/:teamId/membersPUT/api/v1/teams/:teamId/members/:memberIdDELETE/api/v1/teams/:teamId/members/:memberIdGET/api/v1/teams/:teamId/invitationsPOST/api/v1/teams/:teamId/invitationsDELETE/api/v1/teams/:teamId/invitations/:invIdListar Equipos
/api/v1/teamsDevuelve todos los equipos de los que el usuario autenticado es miembro.
Respuesta
{
"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
curl -X GET "https://api.nueform.io/api/v1/teams" \
-H "Authorization: Bearer YOUR_API_KEY"
Crear Equipo
/api/v1/teamsCrea un nuevo equipo. El usuario autenticado se convierte en el propietario del equipo.
Cuerpo de Solicitud
namestringNombre del equipo
Ejemplo de Solicitud
{
"name": "Marketing"
}
Respuesta
{
"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
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
/api/v1/teams/:teamIdObtiene 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
teamIdstringEl ID del equipo
Respuesta
{
"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
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
-H "Authorization: Bearer YOUR_API_KEY"
Actualizar Equipo
/api/v1/teams/:teamIdActualiza las propiedades del equipo. Requiere rol owner o admin.
Parámetros de Ruta
teamIdstringEl ID del equipo
Cuerpo de Solicitud
namestringNuevo nombre del equipo
Ejemplo de Solicitud
{
"name": "Marketing & Growth"
}
Respuesta
Devuelve el objeto del equipo actualizado.
Ejemplos de Código
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
/api/v1/teams/:teamIdElimina 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
teamIdstringEl ID del equipo
Respuesta
{
"success": true
}
Ejemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
-H "Authorization: Bearer YOUR_API_KEY"
Listar Miembros
/api/v1/teams/:teamId/membersDevuelve todos los miembros de un equipo.
Parámetros de Ruta
teamIdstringEl ID del equipo
Respuesta
{
"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
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members" \
-H "Authorization: Bearer YOUR_API_KEY"
Agregar Miembro
/api/v1/teams/:teamId/membersInvita 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
teamIdstringEl ID del equipo
Cuerpo de Solicitud
emailstringDirección de email a invitar (se guarda en minúsculas)
rolestringRol que recibe la persona al aceptar: "admin", "editor" o "viewer"
Ejemplo de Solicitud
{
"email": "carol@example.com",
"role": "editor"
}
Respuesta
{
"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
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
/api/v1/teams/:teamId/members/:memberIdActualiza el rol de un miembro del equipo. Requiere rol owner o admin. No puedes cambiar el rol del propietario.
Parámetros de Ruta
teamIdstringEl ID del equipo
memberIdstringEl ID del miembro del equipo
Cuerpo de Solicitud
rolestringNuevo rol: "admin", "editor", "viewer"
Ejemplo de Solicitud
{
"role": "admin"
}
Respuesta
{
"id": "66d2e3f4a5b6c7d8e9f0a1b2",
"user_id": "665a1b2c3d4e5f6a7b8c9d0e",
"team_id": "665b2c3d4e5f6a7b8c9d0e1f",
"role": "admin",
"joined_at": "2026-01-15T14:30:00.000Z"
}
Ejemplos de Código
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
/api/v1/teams/:teamId/members/:memberIdElimina 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
teamIdstringEl ID del equipo
memberIdstringEl ID del miembro del equipo
Respuesta
{
"success": true,
"message": "Member removed from team"
}
Ejemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members/66d2e3f4a5b6c7d8e9f0a1b2" \
-H "Authorization: Bearer YOUR_API_KEY"
Listar Invitaciones
/api/v1/teams/:teamId/invitationsDevuelve 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
teamIdstringEl ID del equipo
Respuesta
{
"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
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations" \
-H "Authorization: Bearer YOUR_API_KEY"
Crear Invitación
/api/v1/teams/:teamId/invitationsEnví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
teamIdstringEl ID del equipo
Cuerpo de Solicitud
emailstringDirección de email a invitar
rolestringRol que recibe la persona al aceptar: "admin", "editor" o "viewer"
Ejemplo de Solicitud
{
"email": "carol@example.com",
"role": "editor"
}
Respuesta
{
"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
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
/api/v1/teams/:teamId/invitations/:invIdCancela una invitación pendiente. Requiere rol owner o admin. El token de la invitación dejará de ser válido.
Parámetros de Ruta
teamIdstringEl ID del equipo
invIdstringEl ID de la invitación
Respuesta
{
"success": true,
"message": "Invitation cancelled"
}
Ejemplos de Código
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 RequestCampos requeridos faltantes, email o rol inválido, o no quedan asientos en el plan del propietario del equipo
401UnauthorizedAPI key faltante o inválida
403ForbiddenNo eres miembro del equipo o tu rol no es suficiente para la acción
404Not FoundEquipo, miembro o invitación no encontrados
409ConflictEl usuario ya es miembro, invitación duplicada
500Server ErrorError interno del servidor
Ejemplo de Error
{
"error": {
"code": "CONFLICT",
"message": "A pending invitation already exists for this email",
"status": 409
}
}