Développeurs

Tutoriels d'intégration

Un formulaire public qui crée des tickets

Objectif : un formulaire de contact que n'importe qui remplit sur votre site, et qui crée automatiquement un ticket (ou une tâche) dans Projets/Support.

Prérequis : modules Forms et Projets/Support disponibles ; un JWT de membre.

1. Créer le formulaire couplé à Work

FORMS=https://forms.api.puwapi.com
curl -X POST $FORMS/api/forms \
  -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" \
  -d '{
    "title": "Contactez-nous",
    "schema": [
      {"key":"nom","label":"Votre nom","type":"text","required":true},
      {"key":"email","label":"E-mail","type":"email","required":true},
      {"key":"sujet","label":"Sujet","type":"text","required":true},
      {"key":"message","label":"Message","type":"textarea","required":true}
    ],
    "notifyEmails": ["support@monentreprise.fr"],
    "workConfig": {
      "createWorkItem": true,
      "type": "ticket",
      "projectId": "'$PROJECT_ID'",
      "fieldMapping": { "title": "sujet", "description": "message" }
    }
  }'

La réponse contient l'id et surtout le slug public (aléatoire si non fourni).

2. Publier le lien

Le formulaire est accessible à https://forms.puwapi.com/{org}/{slug} ({org} = le slug de votre organisation, {slug} = celui du formulaire). Intégrez ce lien (ou la page) à votre site.

3. Ce qui se passe à la soumission

curl -X POST $FORMS/api/forms/public/<slug>/submit \
  -H "Content-Type: application/json" \
  -d '{"data": {"nom":"Alice","email":"alice@ex.com","sujet":"Bug login","message":"..."}}'

Côté serveur, dans l'ordre :

  1. l'organisation est dérivée du slug ;
  2. si le honeypot est rempli → 200 silencieux, rien n'est enregistré ;
  3. si l'origine n'est pas autorisée → 403 ;
  4. la soumission est persistée ;
  5. workConfig.createWorkItem étant vrai, un ticket est créé dans le projet cible (titlesujet, descriptionmessage), best-effort ;
  6. les notifyEmails reçoivent la soumission ; l'e-mail du soumetteur reçoit un accusé.

4. Vérifier

Le ticket apparaît dans Support/Projets — le tableau se rafraîchit en temps réel. Vous pouvez aussi lister les soumissions :

curl $FORMS/api/forms/$FORM_ID/submissions -H "Authorization: Bearer $JWT"

Points d'attention

  • Le pont Forms → Work est best-effort : si Work est indisponible, la soumission reste enregistrée (l'item sera simplement absent).
  • Pour restreindre aux membres de votre organisation, passez la visibilité à organization (voir Référence API — Forms).

#tutorial #forms #work