/** * Palantir Foundry Orchestration API. * Schedules, schedule runs, triggers, batch operations. * * The actual API uses `/api/v2/orchestration/schedules/` as the base path * (not `/api/v2/orchestrations/`). Schedules support cron expressions, * pause/resume, triggers, and run history. * * @see https://www.palantir.com/docs/foundry/api/v2/orchestration-v2-resources/ */ import type { PalantirClient } from "./client.js"; import type { Schedule, ScheduleRun, CreateScheduleParams, PageResponse, PageParams, } from "./types.js"; export class OrchestrationNamespace { constructor(private client: PalantirClient) {} // ─── Schedules ────────────────────────────────────────────────── /** List schedules. Requires preview=true. */ async listSchedules(params?: PageParams): Promise> { return this.client.get("/api/v2/orchestration/schedules", { ...params, preview: true, } as Record); } /** Create a schedule. Requires preview=true. */ async createSchedule(params: CreateScheduleParams): Promise { return this.client.post( "/api/v2/orchestration/schedules?preview=true", params ); } /** Get a schedule by RID. Requires preview=true. */ async getSchedule(scheduleRid: string): Promise { return this.client.get(`/api/v2/orchestration/schedules/${scheduleRid}`, { preview: true, } as Record); } /** Delete a schedule. Requires preview=true. */ async deleteSchedule(scheduleRid: string): Promise { return this.client.delete( `/api/v2/orchestration/schedules/${scheduleRid}?preview=true` ); } /** Pause a schedule. Requires preview=true. */ async pauseSchedule(scheduleRid: string): Promise { return this.client.post( `/api/v2/orchestration/schedules/${scheduleRid}/pause?preview=true` ); } /** Resume a paused schedule. Requires preview=true. */ async resumeSchedule(scheduleRid: string): Promise { return this.client.post( `/api/v2/orchestration/schedules/${scheduleRid}/resume?preview=true` ); } // ─── Schedule Runs ────────────────────────────────────────────── /** Trigger a schedule run manually. Requires preview=true. */ async triggerRun(scheduleRid: string): Promise { return this.client.post( `/api/v2/orchestration/schedules/${scheduleRid}/runs?preview=true` ); } /** Get a specific run. Requires preview=true. */ async getRun(scheduleRid: string, runRid: string): Promise { return this.client.get( `/api/v2/orchestration/schedules/${scheduleRid}/runs/${runRid}`, { preview: true } as Record ); } /** List runs for a schedule. Requires preview=true. */ async listRuns( scheduleRid: string, params?: PageParams ): Promise> { return this.client.get( `/api/v2/orchestration/schedules/${scheduleRid}/runs`, { ...params, preview: true } as Record ); } // ─── Batch Operations ─────────────────────────────────────────── /** Get a batch of schedules by RIDs. Requires preview=true. */ async getBatch(scheduleRids: string[]): Promise { return this.client.post( "/api/v2/orchestration/schedules/getBatch?preview=true", { scheduleRids } ); } }