Skip to main content
Voir en Markdown

Crypto et digest

Deux petites familles qui résolvent deux problèmes sans rapport : prouver qu'une charge utile n'a pas été altérée, et transformer un flot d'événements en un message qu'un humain lira vraiment.

Crypto — Hachage et HMAC

Deux opérateurs, qui calculent des empreintes et des signatures — typiquement pour vérifier un webhook entrant ou signer un webhook sortant.

Opérateur Propriétés Description
hash input, algorithm, encoding? Hache avec md5 / sha256 / sha512.
hmac input, secret, algorithm, encoding? HMAC à clé avec sha256 / sha512, clé fournie par secret.

algorithm est obligatoire sur les deux. encoding vaut hex (par défaut) ou base64 sur les deux.

- name: signPayload
  type: crypto
  operator: hmac
  props:
    input: '{{trigger.data.body}}'
    secret: $env.SIGNING_SECRET
    algorithm: sha256
    encoding: hex

Gardez la clé dans l'environnement ($env.SIGNING_SECRET), jamais en clair dans la configuration — celle-ci est du code, et elle part vers un dépôt distant.

Digest — Regroupement et libération

Deux opérateurs qui collectent des éléments sur de nombreuses exécutions dans un seau nommé, puis les vident en un seul lot. L'usage classique est le regroupement de notifications : une automatisation collecte chaque événement à mesure, une seconde les libère selon une planification.

Opérateur Propriétés Description
collect digestKey, item, deduplicateBy? Ajoute un élément à un seau nommé, avec déduplication optionnelle.
release digestKey, sort?, limit? Vide un seau — éventuellement trié ({ field, direction? }) et plafonné.

digestKey est obligatoire sur les deux opérateurs et c'est lui qui apparie un producteur à son consommateur. sort.direction vaut asc par défaut.

# Producer automation (record trigger) collects
- name: queueDigest
  type: digest
  operator: collect
  props:
    digestKey: daily-summary
    item: '{{trigger.data.record}}'
    deduplicateBy: id

# Consumer automation (cron trigger) releases
- name: drain
  type: digest
  operator: release
  props:
    digestKey: daily-summary
    sort: { field: created_at, direction: desc }
    limit: 50

Deux exécutions, pas une : collect appartient à une automatisation déclenchée par l'événement (un déclencheur d'enregistrement), et release à une automatisation déclenchée par l'horloge (un déclencheur cron). Comme release vide le seau, celui-ci repart vide pour la fenêtre suivante — une planification manquée accumule donc au lieu de perdre des événements.

Pages connexes

Dernière mise à jour 27 juillet 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta — les contributions et corrections sont les bienvenues.

Construit avec Sovrium