import {
createGraphBuilder, HttpRequest, Wait, Assertion,
GET, POST, DELETE, Json, START, END,
Frequency, Assert, createStateProxy, secret
} from "@griffin-app/griffin";
const state = createStateProxy(["create", "get", "delete"]);
const monitor = createGraphBuilder({
name: "user-crud",
frequency: Frequency.every(15).minutes(),
})
// Define steps
.addNode("create", HttpRequest({
method: POST,
base: "https://api.example.com",
response_format: Json,
path: "/users",
headers: { "Authorization": secret("API_KEY") },
body: { name: "Test User" },
}))
.addNode("pause", Wait({ seconds: 1 }))
.addNode("get", HttpRequest({
method: GET,
base: "https://api.example.com",
response_format: Json,
path: "/users/1",
}))
.addNode("validate", Assertion([
Assert(state["create"].status).equals(201),
Assert(state["get"].status).equals(200),
Assert(state["get"].body["name"]).equals("Test User"),
]))
.addNode("delete", HttpRequest({
method: DELETE,
base: "https://api.example.com",
response_format: Json,
path: "/users/1",
}))
// Define flow
.addEdge(START, "create")
.addEdge("create", "pause")
.addEdge("pause", "get")
.addEdge("get", "validate")
.addEdge("validate", "delete")
.addEdge("delete", END)
.build();
export default monitor;