Intégration

Ping, Flow, Chain — runs, incidents et SLA

Ping vs Flow vs Chain, déclenchement de runs, maintenance et objectifs de disponibilité.

Contrat OpenAPIÉmettre une clé d’APICompte Solo gratuit

Document complet, sans authentification, à donner à votre générateur de client.

Ping et Chain

type: "http" exige `url` (Ping) ou `httpChain` (Chain, 1–10 hops). Contrôles : expectedStatus, expectText, en-têtes, JSONPath, délai, TLS / DNS. intervalSec fixe la cadence. enabled: false prépare sans alerter. Body et headers des hops ne reviennent jamais en lecture.

POST minimal

curl -X POST https://api.pathlyhq.com/v1/scenarios \
  -H "Authorization: Bearer $PATHLY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: http-home-v1" \
  -d '{
    "type": "http",
    "name": "Home",
    "url": "https://www.example.com/",
    "intervalSec": 300,
    "expectedStatus": 200,
    "severity": "critical"
  }'

POST Chain — login puis /me

curl -X POST https://api.pathlyhq.com/v1/scenarios \
  -H "Authorization: Bearer $PATHLY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: chain-me-v1" \
  -d '{
    "type": "http",
    "name": "Login then /me",
    "intervalSec": 300,
    "httpChain": [
      {
        "name": "Login",
        "method": "POST",
        "url": "https://api.example.com/login",
        "body": "{"email":"user@example.com"}",
        "assertStatus": 200,
        "extractJson": { "path": "token", "as": "token" }
      },
      {
        "name": "Me",
        "method": "GET",
        "url": "https://api.example.com/me",
        "assertStatus": 200
      }
    ]
  }'

PATCH — pause

curl -X PATCH https://api.pathlyhq.com/v1/scenarios/{id} \
  -H "Authorization: Bearer $PATHLY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

PowerShell

$headers = @{ Authorization = "Bearer $env:PATHLY_API_TOKEN" }
Invoke-RestMethod -Method Get -Uri "https://api.pathlyhq.com/v1/scenarios" -Headers $headers

Flow

type: "browser" exige un AST d’étapes. Créez le parcours dans la console (enregistreur) : login, panier, 2FA. L’API peut référencer et déclencher, mais ne doit pas transporter les identifiants clients dans Git.

En lecture, vous obtenez une empreinte de scénario, pas le détail des secrets. Utilisez-la pour détecter un changement hors bande (console vs Terraform).

Runs (exécutions)

Un run est une exécution facturée. GET /v1/runs liste l’historique. POST de déclenchement (runs:trigger) lance un smoke immédiat — utile en CI post-deploy. Surveillez le quota d’offre : le rate limit API et le quota commercial sont distincts.

Liste récente

curl "https://api.pathlyhq.com/v1/runs?limit=20" \
  -H "Authorization: Bearer $PATHLY_API_TOKEN"

Déclencher (si exposé sur votre plan / portée)

curl -X POST https://api.pathlyhq.com/v1/scenarios/{id}/runs \
  -H "Authorization: Bearer $PATHLY_API_TOKEN" \
  -H "Idempotency-Key: smoke-$(git rev-parse --short HEAD)"

Incidents

Les incidents agrègent des échecs consécutifs selon la politique d’escalade. Lecture : incidents:read. Écriture (acquittement / notes selon contrat) : incidents:write. Un identifiant inconnu → 404.

curl "https://api.pathlyhq.com/v1/incidents?limit=50" \
  -H "Authorization: Bearer $PATHLY_API_TOKEN"

Maintenance et SLA

Fenêtres de maintenance : silence les alertes pendant un créneau planifié (déploiements). Objectifs de disponibilité (SLA) : seuil et périmètre, alertes quand le budget d’erreur fond. Les deux sont des ressources IaC de premier plan.

Terraform — maintenance + SLA

resource "pathly_maintenance_window" "friday_deploy" {
  name       = "Friday deploy"
  starts_at  = "2026-09-26T22:00:00Z"
  ends_at    = "2026-09-26T23:00:00Z"
  # lier les scénarios concernés selon le schéma provider
}

resource "pathly_sla_target" "checkout" {
  name              = "Checkout"
  target_percentage = 99.9
}