actions/start-render/start-render.mjs
import app from "../../shotstack.app.mjs"; import constants from "../../common/constants.mjs"; import utils from "../../common/utils.mjs"; export default { key: "shotstack-start-render", name: "Start Render", description: "Initiate rendering of a video using a timeline created in Shotstack API. [See the documentation here](https://shotstack.io/docs/api/?shell#render-asset).", type: "action", version: "0.0.2", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, props: { app, timeline: { type: "string", label: "Timeline", description: "The timeline to render. [See the documentation for the timeline object here](https://shotstack.io/docs/api/?shell#tocs_timeline)", }, outputFormat: { type: "string", label: "Output Format", description: "The output format and type of media file to generate.", options: Object.values(constants.OUTPUT_FORMAT), }, outputResolution: { type: "string", label: "Output Resolution", description: "The output resolution of the video or image.", options: Object.values(constants.OUTPUT_RESOLUTION), }, callback: { description: "An optional webhook callback URL used to receive status notifications when a render completes or fails.", optional: true, propDefinition: [ app, "callback", ], }, }, methods: { startRender(args = {}) { return this.app.post({ path: "/render", ...args, }); }, }, async run({ $: step }) { const { timeline, outputFormat, outputResolution, callback, } = this; const response = await this.startRender({ step, data: { timeline: utils.parse(timeline), output: { format: outputFormat, resolution: outputResolution, }, callback, }, }); step.export("$summary", `Render started with id ${response.response.id}`); return response; }, };