NueForm

API Équipes

Gérer les équipes, les membres, les rôles et les invitations pour la création collaborative de formulaires.

L'API Équipes vous permet de créer et gérer des équipes pour la création collaborative de formulaires. Les équipes permettent à plusieurs utilisateurs de partager des formulaires, avec un contrôle d'accès basé sur les rôles régissant qui peut consulter, modifier et supprimer des formulaires et des réponses.

Tous les corps de requête et de réponse utilisent des noms de champs en snake_case.

Rôles d'équipe

ownerrole

Accès complet. Peut gérer les membres, la facturation et supprimer l'équipe.

adminrole

Peut créer, modifier, supprimer des formulaires, gérer les membres et consulter les réponses.

editorrole

Peut créer et modifier des formulaires, consulter les réponses. Ne peut pas gérer les membres.

viewerrole

Peut consulter les formulaires et les réponses. Ne peut pas créer ni modifier.

Lister les équipes

GET/api/v1/teams

Renvoie toutes les équipes dont l'utilisateur authentifié est membre.

Réponse

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"
    }
  ]
}

Exemples de code

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

Créer une équipe

POST/api/v1/teams

Crée une nouvelle équipe. L'utilisateur authentifié devient le propriétaire de l'équipe.

Corps de la requête

namestring

Nom de l'équipe

Exemple de requête

json
{
  "name": "Marketing"
}

Réponse

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"
}

Exemples de code

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" }'

Obtenir une équipe

GET/api/v1/teams/:teamId

Récupère une équipe unique par son identifiant.

Tout membre de l'équipe peut l'appeler. La réponse n'inclut jamais les secrets de l'équipe (la chaîne de connexion de la base de données de résidence des données, l'ID de la connexion SSO ou les ID internes de domaine), et sso_domain_verify_token (la valeur DNS qui prouve le domaine SSO) n'est renvoyé qu'aux appelants ayant le rôle owner ou admin.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Réponse

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
}

Exemples de code

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

Mettre à jour une équipe

PUT/api/v1/teams/:teamId

Met à jour les propriétés de l'équipe. Nécessite le rôle owner ou admin.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Corps de la requête

namestring

Nouveau nom de l'équipe

Exemple de requête

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

Réponse

Renvoie l'objet équipe mis à jour.

Exemples de code

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" }'

Supprimer une équipe

DELETE/api/v1/teams/:teamId

Supprime définitivement une équipe. Seul le propriétaire de l'équipe peut la supprimer.

La suppression d'une équipe retire toutes les adhésions et invitations. Les formulaires appartenant à l'équipe ne sont pas automatiquement supprimés mais deviendront inaccessibles aux anciens membres de l'équipe.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Réponse

json
{
  "success": true
}

Exemples de code

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

Lister les membres

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

Renvoie tous les membres d'une équipe.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Réponse

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"
    }
  ]
}

Exemples de code

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

Ajouter un membre

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

Invite une personne dans l'équipe par e-mail, exactement comme Créer une invitation : NueForm envoie l'invitation par e-mail, elle expire au bout de 7 jours et la personne rejoint l'équipe en l'acceptant. Cet endpoint n'ajoute pas directement un utilisateur existant. Nécessite le rôle owner ou admin. Renvoie l'invitation (201) ; répond 409 si l'adresse appartient déjà à un membre ou a déjà une invitation en attente qui n'a pas expiré (une invitation expirée n'empêche pas d'en envoyer une nouvelle), et 400 si le forfait du propriétaire de l'équipe n'a plus de siège disponible : une invitation en attente occupe un siège jusqu'à son expiration.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Corps de la requête

emailstring

Adresse e-mail à inviter (enregistrée en minuscules)

rolestring

Rôle attribué à la personne lorsqu'elle accepte : "admin", "editor" ou "viewer"

Exemple de requête

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

Réponse

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"
}

Exemples de code

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"
  }'

Mettre à jour le rôle d'un membre

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

Met à jour le rôle d'un membre de l'équipe. Nécessite le rôle owner ou admin. Vous ne pouvez pas modifier le rôle du propriétaire.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

memberIdstring

L'identifiant du membre de l'équipe

Corps de la requête

rolestring

Nouveau rôle : "admin", "editor", "viewer"

Exemple de requête

json
{
  "role": "admin"
}

Réponse

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

Exemples de code

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" }'

Retirer un membre

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

Retire un membre d'une équipe. Nécessite le rôle owner ou admin. Le propriétaire de l'équipe ne peut pas être retiré. Les invitations en attente de cette équipe adressées à cette personne sont également annulées, afin qu'elle ne puisse pas revenir avec l'une d'elles.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

memberIdstring

L'identifiant du membre de l'équipe

Réponse

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

Exemples de code

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

Lister les invitations

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

Renvoie les invitations en attente de l'équipe qui n'ont pas expiré, de la plus récente à la plus ancienne. Tout membre de l'équipe peut l'appeler ; le champ token (le secret du lien d'invitation) n'est inclus que pour les appelants ayant le rôle owner ou admin.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Réponse

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"
    }
  ]
}

Exemples de code

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

Créer une invitation

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

Envoie une invitation par e-mail pour rejoindre une équipe. L'invitation inclut un jeton unique et expire après 7 jours. Nécessite le rôle owner ou admin. Répond 409 si l'adresse appartient déjà à un membre ou a déjà une invitation en attente qui n'a pas expiré (une invitation expirée n'empêche pas d'en envoyer une nouvelle), et 400 si le forfait du propriétaire de l'équipe n'a plus de siège disponible : une invitation en attente occupe un siège jusqu'à son expiration.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

Corps de la requête

emailstring

Adresse e-mail à inviter

rolestring

Rôle attribué à la personne lorsqu'elle accepte : "admin", "editor" ou "viewer"

Exemple de requête

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

Réponse

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"
}

Exemples de code

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"
  }'

Annuler une invitation

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

Annule une invitation en attente. Nécessite le rôle owner ou admin. Le jeton d'invitation ne sera plus valide.

Paramètres de chemin

teamIdstring

L'identifiant de l'équipe

invIdstring

L'identifiant de l'invitation

Réponse

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

Exemples de code

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

Réponses d'erreur

Réponses d'erreur standard renvoyées par les points d'accès de l'API Équipes.

Codes d'erreur

400Bad Request

Champs obligatoires manquants, e-mail ou rôle invalide, ou plus aucun siège disponible sur le forfait du propriétaire de l'équipe

401Unauthorized

Clé API manquante ou invalide

403Forbidden

Pas membre de l'équipe, ou rôle insuffisant pour l'action

404Not Found

Équipe, membre ou invitation introuvable

409Conflict

Utilisateur déjà membre, invitation en double

500Server Error

Erreur interne du serveur

Exemple d'erreur

json
{
  "error": {
    "code": "CONFLICT",
    "message": "A pending invitation already exists for this email",
    "status": 409
  }
}
Dernière mise à jour : 8 octobre 2026