← Tous les guides

Guide · API

Automatiser Mortemain avec l'API REST

Tout ce que fait le tableau de bord, créer un check, le mettre en pause, brancher un canal, tient en un appel HTTP. Une clé Bearer, cinq endpoints, pas de SDK.

1. Obtenez une clé API

L'API est disponible sur les offres payantes ; un compte gratuit peut détenir des clés, mais elles restent inactives jusqu'au passage à une offre payante. Créez et révoquez vos clés dans le tableau de bord, sous Paramètres → Clés API (propriétaires de l'espace uniquement) : donnez une note facultative à la clé et sa valeur complète s'affiche une seule fois, juste après sa création. Vous pouvez aussi créer d'autres clés (une par intégration, plus simple à distinguer ensuite) en appelant l'API elle-même avec une clé que vous détenez déjà :

 créer une clé API
curl -s -X POST https://app.mortemain.com/api/keys \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"ci-pipeline"}'

# -> 201 {"public_id":"...", "key":"mm_live_...", "note":"store this key now; it is not shown again"}

La clé complète n'est affichée que dans cette réponse. Rangez-la dans un gestionnaire de secrets, pas dans un script ou un commit.

2. Authentifiez-vous

Chaque requête /api/ a besoin de la clé en jeton Bearer dans l'en-tête Authorization. Une clé absente ou invalide reçoit un simple 401, sans plus de détail :

 en-tête d'authentification
Authorization: Bearer mm_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# clé absente ou incorrecte -> 401 {"error":"unauthorized"}

3. Créez un check

name est le seul champ obligatoire. Donnez-lui un planning period_seconds ou cron_expr (par défaut, period) ; tz, grace_seconds et tags sont facultatifs et valent par défaut UTC, 0 et aucun :

 créer un check
curl -s -X POST https://app.mortemain.com/api/checks \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Export nocturne","schedule_kind":"period","period_seconds":86400,"grace_seconds":900,"tags":["export"]}'

# -> 201 {"public_id":"...", "ping_url":"https://ping.mortemain.com/..."}

Utilisez ping_url exactement comme un check créé à la main : curlez-le en cas de succès, curlez /fail en cas d'erreur, comme dans le guide sur les tâches cron. Au-delà du plafond de checks de votre plan, la création renvoie plutôt 402 (check_limit_reached) ; un period_seconds ou cron_expr trop serré renvoie 400 (interval_too_frequent).

4. Listez et mettez en pause des checks

GET /api/checks renvoie tous les checks du projet (nom, état, planning, tags, horodatages) :

 lister les checks
curl -s https://app.mortemain.com/api/checks \
  -H "Authorization: Bearer $API_KEY"

# -> 200 {"checks":[{"public_id":"...","name":"Export nocturne","state":"new","paused":false, ...}]}

Mettez-en un en pause ou reprenez-le par son public_id. Omettre le corps le met en pause (le champ vaut true par défaut) ; envoyez explicitement {"paused":false} pour reprendre :

 mettre un check en pause
curl -s -X POST https://app.mortemain.com/api/checks/<public_id>/pause \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"paused":true}'

# -> 200 {"ok":true, "paused":true} (ou 404 si ce public_id n'existe pas)

DELETE sur ce même chemin /api/checks/<public_id> le supprime définitivement.

5. Créez un canal et rattachez-le

Un canal a besoin d'un kind, d'un name et d'un config adapté à ce type ; un webhook (comme les URL de webhook entrant Slack, Discord et Teams) n'a besoin que d'url :

 créer un canal
curl -s -X POST https://app.mortemain.com/api/channels \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"webhook","name":"Webhook astreinte","config":{"url":"https://example.com/hooks/mortemain"}}'

# -> 201 {"public_id":"..."}

Puis rattachez-le à un check par le public_id du canal :

 rattacher un canal
curl -s -X POST https://app.mortemain.com/api/checks/<public_id>/channels \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":""}'

# -> 200 {"ok":true} (ou 404 si le check ou le canal est introuvable)

Et ensuite

Cela couvre les checks, les canaux et les clés, tout ce dont un script de provisioning a besoin. Pour le côté check-in (ce qu'il faut curler depuis le job lui-même), voyez le guide sur les tâches cron ; si une simple URL de ping ne suffit pas comme secret pour votre contexte, les pings signés ajoutent une signature HMAC et un horodatage pour qu'une URL fuitée ne puisse pas simuler un état actif.