import { AXIOM_EMPTY_SCHEMA, AXIOM_ID_SCHEMA, AXIOM_SAVED_QUERY_SCHEMA, AXIOM_SAVED_QUERY_WITH_ID_SCHEMA, } from "@automate.ax/integration-contracts/axiom" import * as z from "zod" import { defineAction } from "../../../automation/actions" import { AXIOM_ACCOUNT, AXIOM_API_TOKEN_ACCOUNT, axiomPath, getAxiomApi, } from "../lib" const SAVED_QUERY_ID = { savedQueryId: AXIOM_ID_SCHEMA } export const listAxiomSavedQueries = defineAction("List Axiom saved queries") .describe("Lists reusable APL queries visible to the connected token.") .account(AXIOM_ACCOUNT, AXIOM_API_TOKEN_ACCOUNT) .input(z.object({})) .output(AXIOM_SAVED_QUERY_WITH_ID_SCHEMA.array()) .retry({ replaySafety: "safe" }) .handler(({ account }) => getAxiomApi(account).request("apl-starred-queries", { responseSchema: AXIOM_SAVED_QUERY_WITH_ID_SCHEMA.array(), }), ) export const createAxiomSavedQuery = defineAction("Create Axiom saved query") .describe("Creates a reusable APL query.") .account(AXIOM_ACCOUNT, AXIOM_API_TOKEN_ACCOUNT) .input(AXIOM_SAVED_QUERY_SCHEMA) .output(AXIOM_SAVED_QUERY_WITH_ID_SCHEMA) .retry({ replaySafety: "unsafe" }) .handler(({ account, input }) => getAxiomApi(account).request("apl-starred-queries", { body: input, method: "POST", responseSchema: AXIOM_SAVED_QUERY_WITH_ID_SCHEMA, }), ) export const getAxiomSavedQuery = defineAction("Get Axiom saved query") .describe("Retrieves one saved APL query by ID.") .account(AXIOM_ACCOUNT, AXIOM_API_TOKEN_ACCOUNT) .input(z.object(SAVED_QUERY_ID)) .output(AXIOM_SAVED_QUERY_WITH_ID_SCHEMA) .retry({ replaySafety: "safe" }) .handler(({ account, input }) => getAxiomApi(account).request( `apl-starred-queries/${axiomPath(input.savedQueryId)}`, { responseSchema: AXIOM_SAVED_QUERY_WITH_ID_SCHEMA }, ), ) export const updateAxiomSavedQuery = defineAction("Update Axiom saved query") .describe("Replaces one saved APL query.") .account(AXIOM_ACCOUNT, AXIOM_API_TOKEN_ACCOUNT) .input(AXIOM_SAVED_QUERY_SCHEMA.and(z.object(SAVED_QUERY_ID))) .output(AXIOM_SAVED_QUERY_WITH_ID_SCHEMA) .retry({ replaySafety: "unsafe" }) .handler(({ account, input: { savedQueryId, ...body } }) => getAxiomApi(account).request( `apl-starred-queries/${axiomPath(savedQueryId)}`, { body, method: "PUT", responseSchema: AXIOM_SAVED_QUERY_WITH_ID_SCHEMA, }, ), ) export const deleteAxiomSavedQuery = defineAction("Delete Axiom saved query") .describe("Deletes one saved APL query.") .account(AXIOM_ACCOUNT, AXIOM_API_TOKEN_ACCOUNT) .input(z.object(SAVED_QUERY_ID)) .output(AXIOM_EMPTY_SCHEMA) .retry({ replaySafety: "unsafe" }) .handler(({ account, input }) => getAxiomApi(account).request( `apl-starred-queries/${axiomPath(input.savedQueryId)}`, { method: "DELETE", responseSchema: AXIOM_EMPTY_SCHEMA }, ), )