Integración
Recetas for_each, smoke CI, verificar webhook, RGPD y regla UI o Terraform.
Contrato OpenAPIEmitir una clave de APICuenta Solo gratis
Obtener mi clave API (registro gratis)
Documento completo, sin autenticación, listo para su generador de clientes.
Medición desde la UE. Datos alojados en la Unión. Minimice PII en nombres y payloads. La exportación de organización queda fuera de la API con clave.
Rotación: TTL corto en CI, revocación inmediata si hay fuga. No registre Authorization en logs.
El drift aparece cuando consola y estado Terraform divergen. Una fuente de verdad por entorno. Import nativo, luego bloquear ediciones en consola.
# Adopter un scénario existant
terraform import pathly_scenario.home scn_…Recetas listas para pegar. Adapte nombres y URLs (dominios example.* en la doc).
Flota agencia — for_each
locals {
clients = {
acme = "https://www.example.com/"
globex = "https://shop.example.com/"
}
}
resource "pathly_scenario" "home" {
for_each = local.clients
name = "home-${each.key}"
url = each.value
interval_sec = 300
severity = "critical"
}GitHub Actions — run-scenario post-deploy
- name: Pathly smoke
uses: pathlyhq/pathly-action@v1
with:
api_token: ${{ secrets.PATHLY_API_TOKEN }}
operation: run-scenario
scenario_id: ${{ vars.PATHLY_CHECKOUT_SCENARIO_ID }}
timeout_sec: "120"GitLab CI — component
include:
- component: gitlab.com/pathly1/provider/gitlab-ci/pathly-ping@0.1.2
inputs:
api_token: $PATHLY_API_TOKENNode SDK — Ping, Chain, lister
import { PathlyClient } from "@pathly/sdk";
const client = new PathlyClient({ token: process.env.PATHLY_API_TOKEN });
const s = await client.createScenario({
name: "Checkout",
url: "https://www.example.com/cart",
intervalSec: 300,
expectText: "Your cart",
});
const chain = await client.createChain({
name: "Login then /me",
intervalSec: 300,
hops: [
{ method: "POST", url: "https://api.example.com/login", assertStatus: 200 },
{ method: "GET", url: "https://api.example.com/me", assertStatus: 200 },
],
});
for await (const row of client.paginate((cursor) => client.listScenarios({ cursor }))) {
console.log(row.id, row.name);
}Python SDK
from pathly import Client, ScenarioInput
client = Client()
s = client.create_scenario(ScenarioInput(
name="Checkout",
url="https://www.example.com/cart",
intervalSec=300,
expectText="Your cart",
))
chain = client.create_scenario(ScenarioInput(
name="Login then /me",
intervalSec=300,
httpChain=[
{"method": "POST", "url": "https://api.example.com/login", "assertStatus": 200},
{"method": "GET", "url": "https://api.example.com/me", "assertStatus": 200},
],
))
print(s.id, chain.id)jq — filtrer les scénarios critiques
curl -sS https://api.pathlyhq.com/v1/scenarios \
-H "Authorization: Bearer $PATHLY_API_TOKEN" \
| jq '.items[] | select(.severity=="critical") | {id,name,url}'