Skip to content

API — Règles automatiques


Lister les règles

GET /api/rules/:accountId

Retourne toutes les règles du compte Gmail.


Créer une règle

POST /api/rules/:accountId

Body

json
{
  "name": "Newsletters → corbeille",
  "description": "Supprime automatiquement les newsletters",
  "conditions": [
    { "field": "from", "operator": "contains", "value": "newsletter" },
    { "field": "has_attachment", "operator": "is_true", "value": false }
  ],
  "action": { "type": "trash" },
  "schedule": "daily",
  "is_active": true
}

Champs de condition disponibles

FieldDescriptionOpérateurs
fromExpéditeurcontains, not_contains, equals, not_equals
toDestinatairecontains, not_contains, equals, not_equals
subjectSujetcontains, not_contains, equals, not_equals
has_attachmentA une pièce jointeis_true
size_gtTaille supérieure (octets)gt
size_ltTaille inférieure (octets)lt
labelLabel Gmailequals, not_equals
older_thanAncienneté minimaleequals (ex: 7d, 3m, 1y)
newer_thanAncienneté maximaleequals (ex: 7d, 3m, 1y)

Actions disponibles

TypeDescription
trashCorbeille Gmail
deleteSuppression définitive ⚠️
labelAjouter un label (labelId requis)
unlabelRetirer un label (labelId requis)
archiveRetirer de l'INBOX
archive_nasArchiver sur le NAS (EML)
mark_readMarquer comme lu
mark_unreadMarquer comme non lu

Planifications

ValeurFréquence
nullManuel uniquement
hourlyToutes les heures
dailyChaque jour
weeklyChaque semaine
monthlyChaque mois

Modifier une règle

PUT /api/rules/:accountId/:ruleId

Mêmes champs que la création, tous optionnels.


Activer / désactiver

PATCH /api/rules/:accountId/:ruleId/toggle

Inverse le statut is_active de la règle.

Réponse : règle mise à jour.


Supprimer une règle

DELETE /api/rules/:accountId/:ruleId

Réponse 204


Exécuter manuellement

POST /api/rules/:accountId/:ruleId/run

Lance l'exécution de la règle via BullMQ (asynchrone).

Réponse 202

json
{ "jobId": "run_rule-1234567890", "message": "Rule execution enqueued" }

Prévisualiser

POST /api/rules/:accountId/preview

Compte les mails qui matcheraient les conditions sans appliquer d'action.

Body

json
{ "conditions": [...] }

Réponse

json
{
  "query": "from:(newsletter) -has:attachment",
  "estimatedCount": 342
}

Toujours prévisualiser avant de créer

Le preview traduit vos conditions en requête Gmail native et vous donne une estimation du nombre de mails affectés. Utile pour éviter les surprises avec des actions irréversibles comme delete.


Templates de règles

GET /api/rules/templates

Retourne la bibliothèque de règles pré-configurées, organisée par catégorie.

Réponse

json
[
  {
    "id": "cleanup-github-notifications",
    "name": "Nettoyer les notifications GitHub",
    "description": "Supprime les notifications GitHub lues de plus de 7 jours",
    "category": "cleanup",
    "dto": {
      "name": "...",
      "conditions": [...],
      "action": { "type": "trash" },
      "schedule": "daily"
    }
  }
]

Catégories disponibles : cleanup, archive, organize.

POST /api/rules/:accountId/from-template

Crée une règle à partir d'un template.

Body

json
{ "templateId": "cleanup-github-notifications" }

Réponse 201 : la règle créée.