import {
createMonitorBuilder, GET, POST, DELETE, Json,
Assert, Frequency, secret
} from "@griffin-app/griffin";
const monitor = createMonitorBuilder({
name: "user-lifecycle",
frequency: Frequency.every(15).minutes(),
})
.request("create", {
method: POST,
base: "https://api.example.com",
response_format: Json,
path: "/users",
headers: { "Authorization": secret("API_KEY") },
body: { name: "Test User", email: "test@example.com" },
})
.assert((state) => [
Assert(state["create"].status).equals(201),
Assert(state["create"].body["id"]).isDefined(),
])
.wait("pause", { seconds: 1 })
.request("verify", {
method: GET,
base: "https://api.example.com",
response_format: Json,
path: "/users/1",
headers: { "Authorization": secret("API_KEY") },
})
.assert((state) => [
Assert(state["verify"].status).equals(200),
Assert(state["verify"].body["name"]).equals("Test User"),
])
.request("cleanup", {
method: DELETE,
base: "https://api.example.com",
response_format: Json,
path: "/users/1",
headers: { "Authorization": secret("API_KEY") },
})
.assert((state) => [
Assert(state["cleanup"].status).equals(204),
])
.build();
export default monitor;