import { JOB_NIMBUS_ACCOUNT_SETTINGS_SCHEMA, JOB_NIMBUS_GROUP_SCHEMA, JOB_NIMBUS_USERS_RESPONSE_SCHEMA, } from "@automate.ax/integration-contracts/jobnimbus" import * as z from "zod" import { defineAction } from "../../../automation/actions" import { getJobNimbusApi, JOB_NIMBUS_ACCOUNT } from "./lib" /** Retrieves workflow, type, source, and other JobNimbus account settings. */ export const getJobNimbusAccountSettings = defineAction( "Get JobNimbus account settings", ) .describe("Retrieves workflows, types, sources, and account settings.") .account(JOB_NIMBUS_ACCOUNT) .output(JOB_NIMBUS_ACCOUNT_SETTINGS_SCHEMA) .retry({ replaySafety: "safe" }) .handler(async ({ account }) => getJobNimbusApi(account.secret, "public").request("account/settings", { responseSchema: JOB_NIMBUS_ACCOUNT_SETTINGS_SCHEMA, }), ) /** Lists groups configured for the JobNimbus account. */ export const listJobNimbusGroups = defineAction("List JobNimbus groups") .describe("Lists groups configured for the JobNimbus account.") .account(JOB_NIMBUS_ACCOUNT) .output(JOB_NIMBUS_GROUP_SCHEMA.array()) .retry({ replaySafety: "safe" }) .handler(async ({ account }) => getJobNimbusApi(account.secret, "public").request("account/settings", { query: { field: "groups" }, responseSchema: JOB_NIMBUS_GROUP_SCHEMA.array() .nullable() .transform((groups) => groups ?? []), }), ) /** Lists active and disabled JobNimbus team members. */ export const listJobNimbusUsers = defineAction("List JobNimbus users") .describe("Lists active and disabled JobNimbus team members.") .account(JOB_NIMBUS_ACCOUNT) .output(JOB_NIMBUS_USERS_RESPONSE_SCHEMA) .retry({ replaySafety: "safe" }) .handler(async ({ account }) => getJobNimbusApi(account.secret, "public").request("account/users", { responseSchema: JOB_NIMBUS_USERS_RESPONSE_SCHEMA, }), ) /** Lists units of measure available to JobNimbus financial records. */ export const listJobNimbusUnitsOfMeasure = defineAction( "List JobNimbus units of measure", ) .describe("Lists units of measure available to financial records.") .account(JOB_NIMBUS_ACCOUNT) .output(z.string().array()) .retry({ replaySafety: "safe" }) .handler(async ({ account }) => getJobNimbusApi(account.secret, "public").request("utility/uoms", { responseSchema: z.string().array(), }), )