diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9d3b74..6c78945 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,11 +9,18 @@ jobs: build-mcp-server: name: Build MCP Server runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v5 - - uses: actions/setup-node@v5 + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup Node + uses: actions/setup-node@v5 + with: + node-version: "22" + cache: "yarn" - - name: Install dependencies + - name: Install run: yarn install --immutable - name: Build diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..a82a071 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,35 @@ +name: Publish +on: + push: + tags: + - "v*" + +jobs: + publish: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup Node (with npm auth) + uses: actions/setup-node@v5 + with: + node-version: "22" + cache: "yarn" + registry-url: "https://registry.npmjs.org" + always-auth: true + + - name: Enable Corepack + run: corepack enable + + - name: Install + run: yarn install --immutable + + - name: Build + run: yarn build + + - name: Publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npm publish --access public diff --git a/README.md b/README.md index a68b9cb..a4b4d1b 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,89 @@ -# Plainly MCP server +# Plainly's Official MCP Server -## Local configuration +Implementation of MCP server for [Plainly](https://www.plainlyvideos.com/) in NodeJS. Enables LLM clients to connect and interact with Plainly APIs. -To configure MCP locally, add `.vscode/mcp.json` like following: +## 🎥 Demo + +

+ + Demo Video + +

+ +## 📋 Prerequisites + +- [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) **≥ 18** (required) +- [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) +- [Plainly Account](https://app.plainlyvideos.com) + +## ▶️ How to run (local installation) + +1. **Get your Plainly API key** + +- Go to [Settings page](https://app.plainlyvideos.com/dashboard/user/settings/general) +- Create a new API key +- Copy the new API key + +2. **Add config to your editor** ```json { "servers": { - "Plainly": { + "plainly": { + "command": "npx", + "args": ["-y", "@plainly-videos/mcp-server@latest"], + "env": { + "PLAINLY_API_KEY": "" + } + } + } +} +``` + +## 🛠️ Available tools + +- `list_renderable_items` - returns a list of all criteria matching designs and custom projects for authenticated user +- `get_renderable_items_details` - returns details of a single design or custom project, such as: required and optional parameters, preview links, aspect ratios, etc. +- `render_item` - submits a render with all needed parameters +- `check_render_status` - checks the render status and report error or preview links + +## 🗣️ Prompts & Resources + +This implementation **does not** include `prompts` or `resources` from the MCP specification. However, this may change in the future when there is broader support across popular MCP clients. + +## 🚧 Development mode + +If you want to run the server in development mode, you can install dependencies and run the server using the following command: + +1. Clone, install, and build: + +```shell +git clone git@github.com:plainly-videos/mcp-server.git +cd mcp-server + +yarn install +yarn build +``` + +2. Add your API key in `.vscode/mcp.json` + +```json +{ + "servers": { + "plainly": { "command": "node", "args": [""], "env": { - "PLAINLY_API_URL": "https://api.test.plainlyvideos.com", - "PLAINLY_API_KEY": "" + "PLAINLY_API_KEY": "" } } } } ``` + +3. Start MCP server from `.vscode/mcp.json` + +## 📄 Plainly developer resources + +- [Help center](https://help.plainlyvideos.com/) +- [API reference](https://app.plainlyvideos.com/api-reference.html) diff --git a/package.json b/package.json index a2dd7aa..3b312f4 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,42 @@ { - "name": "plainly-mcp-server", + "name": "@plainly-videos/mcp-server", "version": "1.0.0", - "description": "MCP server for video generation platform", - "type": "module", - "main": "dist/index.js", + "description": "MCP server for Plainly Videos that allows browsing designs and projects, as well as rendering videos.", + "license": "MIT", + "author": "PlainlyVideos ", + "homepage": "https://plainlyvideos.com", + "repository": { + "type": "git", + "url": "git+https://github.com/plainly-videos/mcp-server.git" + }, + "engines": { + "node": ">=18" + }, + "keywords": [ + "plainly", + "plainlyvideos", + "mcp", + "mcp-server", + "modelcontextprotocol", + "aftereffects", + "video-api", + "video-automation" + ], + "bin": "dist/index.js", + "files": [ + "dist" + ], "scripts": { "dev": "vite build --watch", "build": "tsc --noEmit && vite build", "typecheck": "tsc --noEmit", "start": "node dist/index.js" }, - "author": "Daniel Elero ", - "license": "MIT", "packageManager": "yarn@4.9.2", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.4", - "axios": "^1.12.2" + "axios": "^1.12.2", + "zod": "^3.25.76" }, "devDependencies": { "@types/node": "^22.10.6", diff --git a/resources/api-docs.yaml b/resources/api-docs.yaml deleted file mode 100644 index 52b1f56..0000000 --- a/resources/api-docs.yaml +++ /dev/null @@ -1,8069 +0,0 @@ -openapi: 3.1.0 -info: - contact: - email: contact@plainlyvideos.com - description: | - This is a reference for the **PlainlyVideos REST API**. - - You would generally use this API together with [Plainly Web App](https://app.plainlyvideos.com) and primary goal of the REST API is to enable users to render videos on demand using the REST API calls. - Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies (if not otherwise specified), returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs. - - Read the [Developer guide](https://help.plainlyvideos.com/docs/developer-guide) for more information on how to use the API. - - ### Authentication - The API key is needed to authorize requests. - You can get your API key in the [Settings](https://app.plainlyvideos.com/dashboard/user/settings) section of the Plainly Web App Dashboard. - To authorize use the API key as the username in the basic HTTP authentication, leaving the password empty. - - ### Errors - Plainly uses conventional HTTP response codes to indicate the success or failure of an API request. - In general, codes in the `2xx` range indicate success. - Codes in the `4xx` range indicate an error that failed given the information provided and codes in the `5xx` range indicate an error on our side. - - The response body in a case of an error will contain the basic information about the error (message, status, timestamp, etc) and will be JSON-encoded. - In many cases we will include the `X-PlainlyErrorCode` header in the response, which contains the error code and helps in categorizing errors. - - ### Backward compatibility - API is considered to be in the stable state and we don't expect any breaking changes in the future. - However, you should regularly check the API documentation for any updates and deprecations. - - ### Rate limiting - The API is rate limited to 400 requests per minute in average (per user). - We support burst of up to 600 requests in a single minute. - If you exceed above limits, you will get a `429 Too Many Requests` response, including `Retry-After` and `X-Retry-In` headers, for subsequent requests. - Note that since the rate limiting is performed on the load balancer level, the response will not have the content type `application/json` and will not contain the usual error information in the response body. - termsOfService: https://plainlyvideos.com/terms/ - title: PlainlyVideos API V2 - version: 0.19.20.e9e039f4 -servers: -- description: The API V2 production server. - url: https://api.plainlyvideos.com -tags: -- name: Designs -- description: "Read the [Projects API developer guide](https://help.plainlyvideos.com/docs/developer-guide/projects-api)\ - \ introduction on managing projects using the API." - name: Projects -- description: "Read the [Templates API developer guide](https://help.plainlyvideos.com/docs/developer-guide/templates-api)\ - \ introduction on managing templates using the API." - name: Templates -- description: "Read the [Renders API developer guide](https://help.plainlyvideos.com/docs/developer-guide/renders-api)\ - \ introduction on managing renders using the API." - name: Renders -- name: VideoGenius / Brands -- name: VideoGenius / Articles -- name: VideoGenius / Videos -- name: Utilities -- name: Apps -paths: - /api/v2/apps/twitter: - post: - deprecated: true - description: Renders a Twitter based design using the integration that automatically - fetches the tweet data. - operationId: render_1 - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TwitterAppDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedRender" - description: Render created. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - APP_DESIGN_NOT_SUPPORTED - - APP_TWITTER_TWEET_URL_NOT_VALID - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - DESIGN_VARIANT_DOES_NOT_EXIST - - DESIGN_DOES_NOT_EXIST - - APP_TWITTER_TWEET_NOT_FOUND - style: simple - "502": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad gateway. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - APP_TWITTER_GATEWAY_ERROR - style: simple - security: - - ApiKey: [] - summary: Twitter - tags: - - Apps - /api/v2/designs: - get: - description: Gets all the available designs. - operationId: getDesigns - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/Design" - description: Returns a list of all available designs. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: List All Designs - tags: - - Designs - post: - description: Renders a design. - operationId: renderDesign - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DesignRenderDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedRender" - description: Render created. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - DESIGN_DOES_NOT_EXIST - - DESIGN_VARIANT_DOES_NOT_EXIST - - RENDER_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Render Design - tags: - - Designs - /api/v2/designs/{designId}: - get: - description: Gets a specific design by its ID. - operationId: getDesign - parameters: - - in: path - name: designId - required: true - schema: - $ref: "#/components/schemas/DesignIds" - description: The ID of a design. - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/Design" - description: Successfully retrieved the design. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - DESIGN_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Design - tags: - - Designs - /api/v2/me: - get: - description: Returns basic info about the organization. - operationId: getMe - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/MeResponseDto" - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: Organization Info - tags: - - Utilities - /api/v2/projects: - get: - description: Returns all projects available for your organization. - operationId: getAll_2 - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/DestructedProject" - minItems: 0 - uniqueItems: true - minItems: 0 - uniqueItems: true - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: List All Projects - tags: - - Projects - post: - description: "Creates a new project. Please check the [following guidelines](https://help.plainlyvideos.com/docs/user-guide/projects)\ - \ in order to learn how to prepare your project files for the upload." - operationId: createFromUpload - requestBody: - content: - multipart/form-data: - schema: - type: object - properties: - aeVersion: - type: string - default: AE2025 - description: "The After Effects version of the project. Used as\ - \ a preliminary processing reference, the project analysis will\ - \ ensure correct project version is detected anyway." - enum: - - AE2023_AMD64 - - AE2024 - - AE2025 - description: - type: string - description: The description of the project - file: - type: string - format: binary - description: The project ZIP file to upload. Maximum size 300 MB. - folder: - type: string - description: "The folder where the project will be stored. If not\ - \ provided, the project will be findable in the root folder on\ - \ the UI. The format should be `/folder/sub-folder`, where `/`\ - \ is a separator. If you want to create a root folder, use `/`\ - \ as a value. Only alphanumeric characters, spaces, underscores,\ - \ hyphens and slashes are allowed." - example: /My_folder/Example subfolder - name: - type: string - description: The name of the project - tags: - type: array - items: - type: string - description: "The tags of the project. Note that since this endpoint\ - \ consumes `multipart/form-data`, multiple tags should be defined\ - \ as `tag1,tag2`." - minItems: 0 - uniqueItems: true - responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_UPLOAD_AEP_FILE_DUPLICATE - - PROJECT_UPLOAD_AEP_FILE_NOT_FOUND - - PROJECT_UPLOAD_AEP_FILE_EMPTY - - PROJECT_UPLOAD_CHAR_ENCODING_WRONG - - PROJECT_UPLOAD_ASSET_PATH_WRONG - - PROJECT_UPLOAD_PROCESSING_FAILED - - PROJECT_UPLOAD_ZIP_FILE_INVALID - style: simple - security: - - ApiKey: [] - summary: Create Project - tags: - - Projects - /api/v2/projects/upgrade-all: - post: - description: |2- - Requests upgrade for all projects within organization, in order to switch to the latest After Effects version. - - > NOTE: Upgrade errors are silently ignored for projects that can't be upgraded or are already upgraded. - operationId: upgradeAll - responses: - "200": - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: Upgrade All Projects - tags: - - Projects - /api/v2/projects/{projectId}: - delete: - description: Deletes an existing project. - operationId: delete_1 - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - responses: - "201": - content: - '*/*': - schema: - type: object - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_NOT_ANALYZED - - PROJECT_HAS_ACTIVE_RENDERS - - PROJECT_ANALYSIS_PENDING - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Delete Project - tags: - - Projects - get: - description: Returns a project by ID. - operationId: getOne_1 - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Project - tags: - - Projects - post: - description: | - Edit an existing project. Please check the [following guidelines](https://help.plainlyvideos.com/docs/user-guide/projects) in order to learn how to prepare your project files for the upload. - operationId: edit - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - requestBody: - content: - multipart/form-data: - schema: - type: object - properties: - aeVersion: - type: string - default: AE2025 - description: "The After Effects version of the updated project.\ - \ Used as a preliminary processing reference, the project analysis\ - \ will ensure correct project version is detected anyway." - enum: - - AE2022 - - AE2023_AMD64 - - AE2024 - - AE2025 - description: - type: string - description: The description of the project - file: - type: string - format: binary - description: The project ZIP file to upload. Maximum size 300 MB. - folder: - type: string - description: "The folder where the project will be stored. If not\ - \ provided, the project will be findable in the root folder on\ - \ the UI. The format should be `/folder/sub-folder`, where `/`\ - \ is a separator. If you want to create a root folder, use `/`\ - \ as a value. Only alphanumeric characters, spaces, underscores,\ - \ hyphens and slashes are allowed." - example: /My_folder/Example subfolder - name: - type: string - description: The name of the project - strictFontChecks: - type: string - description: "Controls the strictness of the font checks during\ - \ the rendering. If set to `ENABLED`, the render will fail if\ - \ the font can't support the characters in the text. If set to\ - \ `DISABLED`, the render will continue, but the text will be rendered\ - \ with a fallback font." - enum: - - DEFAULT - - ENABLED - - DISABLED - tags: - type: array - items: - type: string - description: "The tags of the project. Note that since this endpoint\ - \ consumes `multipart/form-data`, multiple tags should be defined\ - \ as `tag1,tag2`." - minItems: 0 - uniqueItems: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_UPLOAD_AEP_FILE_DUPLICATE - - PROJECT_UPLOAD_AEP_FILE_NOT_FOUND - - PROJECT_UPLOAD_AEP_FILE_EMPTY - - PROJECT_UPLOAD_CHAR_ENCODING_WRONG - - PROJECT_UPLOAD_ASSET_PATH_WRONG - - PROJECT_UPLOAD_PROCESSING_FAILED - - PROJECT_UPLOAD_ZIP_FILE_INVALID - - PROJECT_NOT_ANALYZED - - PROJECT_RE_UPLOAD_HAS_ACTIVE_RENDERS - - PROJECT_ANALYSIS_PENDING - style: simple - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Internal server error. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_RE_UPLOAD_BACKUP_FAILED - style: simple - security: - - ApiKey: [] - summary: Edit Project - tags: - - Projects - /api/v2/projects/{projectId}/meta: - get: - description: Returns a project metadata defined by Plainly project analysis. - operationId: getProjectMetaData - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: If the results should be returned in tree or flat fashion. Note - that `flatten` option is currently in beta. - example: tree - in: query - name: responseType - required: false - schema: - type: string - default: tree - enum: - - tree - - flatten - pattern: tree|flatten - - in: header - name: If-None-Match - required: false - schema: - type: string - responses: - "200": - content: - application/json: - example: - - type: COMPOSITION - internalId: "13251" - name: Big Sale Promotion - id: 13251 - duration: 5 - workAreaStart: 0 - width: 720 - height: 720 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: TEXT - internalId: "25894" - name: EDIT-color-1(Yellow Default) - startTime: 0 - inPoint: 0 - outPoint: 60 - value: FFEA63 - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 18 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 21.6000003814697 - tracking: 0 - - type: TEXT - internalId: "25892" - name: EDIT-color-2(Bright Blue Default) - startTime: 0 - inPoint: 0 - outPoint: 60 - value: 0065F2 - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 18 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 21.6000003814697 - tracking: 0 - - type: TEXT - internalId: "25903" - name: EDIT-color-3(Dark Blue Default) - startTime: 0 - inPoint: 0 - outPoint: 60 - value: 00274A - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 18 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 21.6000003814697 - tracking: 0 - - type: TEXT - internalId: "25905" - name: EDIT-color-top-text(Dark Blue Default) - startTime: 0 - inPoint: 0 - outPoint: 60 - value: 00274A - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 18 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 21.6000003814697 - tracking: 0 - - type: TEXT - internalId: "25899" - name: EDIT-color-mid-text(White Default) - startTime: 0 - inPoint: 0 - outPoint: 60 - value: FFFFFF - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 18 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 21.6000003814697 - tracking: 0 - - type: TEXT - internalId: "25907" - name: EDIT-color-bot-text(White Default) - startTime: 0 - inPoint: 0 - outPoint: 60 - value: FFFFFF - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 18 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 21.6000003814697 - tracking: 0 - - type: MEDIA - internalId: "25893" - name: color-1-solid - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#2e4fe7" - width: 1920 - height: 1080 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: MEDIA - internalId: "25891" - name: color-2-solid - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#2e4fe7" - width: 1920 - height: 1080 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: MEDIA - internalId: "25898" - name: color-3-solid - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#2e4fe7" - width: 1920 - height: 1080 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: MEDIA - internalId: "25902" - name: color-4-solid - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#2e4fe7" - width: 1920 - height: 1080 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: MEDIA - internalId: "25904" - name: color-5-solid - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#2e4fe7" - width: 1920 - height: 1080 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: MEDIA - internalId: "25906" - name: color-6-solid - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#2e4fe7" - width: 1920 - height: 1080 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: COMPOSITION - internalId: "25452" - name: discount ammount - startTime: 0 - inPoint: 0 - outPoint: 5.06666666666667 - layerName: discount ammount - id: 25452 - duration: 7.04037370704037 - workAreaStart: 0 - width: 288 - height: 65 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "25880" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "25454" - name: EDIT-discount ammount - startTime: 0 - inPoint: 0 - outPoint: 7.04037370704037 - value: 30% oFF ON EVERYTHING - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 67 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: true - leading: 80.4000015258789 - tracking: 0 - - type: COMPOSITION - internalId: "25438" - name: mid text - startTime: 0 - inPoint: 0 - outPoint: 5.06666666666667 - layerName: mid text - id: 25438 - duration: 7.04037370704037 - workAreaStart: 0 - width: 288 - height: 65 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "25884" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "25440" - name: EDIT-mid text - startTime: 0 - inPoint: 0 - outPoint: 7.04037370704037 - value: SALE - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 67 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: true - leading: 80.4000015258789 - tracking: 0 - - type: COMPOSITION - internalId: "25403" - name: type of sale - startTime: 0 - inPoint: 0 - outPoint: 5.06666666666667 - layerName: type of sale - id: 25403 - duration: 7.04037370704037 - workAreaStart: 0 - width: 288 - height: 65 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "25882" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "25426" - name: EDIT-type of sale - startTime: 0 - inPoint: 0 - outPoint: 7.04037370704037 - value: END OF YEAR - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 67 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: true - leading: 80.4000015258789 - tracking: 0 - - type: MEDIA - internalId: "25401" - name: EDIT-color-bg - startTime: 0 - inPoint: 0 - outPoint: 5.06666666666667 - value: "#ffffff" - width: 800 - height: 800 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - effects: [] - - type: COMPOSITION - internalId: "26046" - name: Insta Story Last Piece Promo - id: 26046 - duration: 5.00500500500501 - workAreaStart: 0 - width: 720 - height: 1280 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: COMPOSITION - internalId: "26096" - name: product name comp - startTime: 1.13446780113447 - inPoint: 1.13446780113447 - outPoint: 6.13947280613947 - layerName: product name comp - id: 26096 - duration: 5.00500500500501 - workAreaStart: 0 - width: 720 - height: 106 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "26173" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "26108" - name: edit_product - startTime: 0 - inPoint: 0 - outPoint: 5 - value: BIG SALEEEEEE - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 93.8000030517578 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: true - leading: 48.6004104614258 - tracking: 50 - - type: COMPOSITION - internalId: "26120" - name: cta comp - startTime: 1.6016016016016 - inPoint: 1.6016016016016 - outPoint: 6.60660660660661 - layerName: cta comp - id: 26120 - duration: 5.00500500500501 - workAreaStart: 0 - width: 455 - height: 72 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "26175" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "26131" - name: EDIT-cta - startTime: 0 - inPoint: 0 - outPoint: 5 - value: LAst piece - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 64.0999984741211 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: true - leading: 76.9199981689453 - tracking: 50 - - type: COMPOSITION - internalId: "26144" - name: price short comp - startTime: 2.16883550216884 - inPoint: 2.16883550216884 - outPoint: 7.17384050717384 - layerName: price short comp - id: 26144 - duration: 5.00500500500501 - workAreaStart: 0 - width: 160 - height: 72 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "26169" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "26154" - name: EDIT-price short - startTime: 0 - inPoint: 0 - outPoint: 5 - value: $99 - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 67 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 34.6179695129395 - tracking: 0 - - type: MEDIA - internalId: "26095" - name: Null 5 - startTime: 0 - inPoint: 0 - outPoint: 5 - value: "#ffffff" - width: 100 - height: 100 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: false - effects: [] - - type: MEDIA - internalId: "26091" - name: edit_image - startTime: 0 - inPoint: 0 - outPoint: 5 - value: (Footage)/Assets/pexels-robert-bogdan-910122.jpg - width: 1732 - height: 1155 - mediaType: IMAGE - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - effects: - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Scale to Fit (Maintain Ratio) - propertyName: Effects.STC - Scale to Fit (Maintain Ratio).Checkbox - value: 1 - keyframeValues: [] - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Scale to Fill - propertyName: Effects.STC - Scale to Fill.Checkbox - value: 1 - keyframeValues: [] - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Restore Original Size - propertyName: Effects.STC - Restore Original Size.Checkbox - value: 0 - keyframeValues: [] - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Bypass - propertyName: Effects.STC - Bypass.Checkbox - value: 0 - keyframeValues: [] - preview: - link: https://storage.googleapis.com/plainlyvideos-user-projects-test/0c83ea04-2728-4e89-b50c-c9825786a25a/%28Footage%29/Assets/pexels-robert-bogdan-910122.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=plainly-backend-signer-sa%40plainly-test.iam.gserviceaccount.com%2F20250811%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250811T101904Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=5d8f6c8c7859221b0405e8393cd0fdf0527caae0d23929e82a9f6dfb904766c2b13e5ed8ad63f0d21b7c1b7f3011347ea890e62d080dbd16096480e148287100b0a8e4e2c0890a2401013dbff36511c548c592868cfd058692fccdac57d7e27bf4d4c16ba93a4fc543a257cd2bac2cb786862b75ee04ffb910a4d288f991c6fd38f7b1e0ac25f6ac51b873b66563dc97e9cb4bbebd76f9d2ac019daeb1c186c2bd1151265bacb79564db15743d64d412810dcd1cc946a68357096b64fad176314f37b61e50b32f8f4684c47bd33476513de81103c90dd7756df8f30be5e908f561f2139a8eba607d4c910a05efbc065929f5b353dd5c7e75f3fb738abac9d88a - expiresAt: 2025-08-11T11:19:04.328587098Z - internal: false - - type: COMPOSITION - internalId: "16215" - name: Single Product Promo - id: 16215 - duration: 6.03333333333333 - workAreaStart: 0 - width: 720 - height: 720 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: COMPOSITION - internalId: "25984" - name: discount comp - startTime: 1.36 - inPoint: 1.36 - outPoint: 6.04 - layerName: discount comp - id: 25984 - duration: 4.68 - workAreaStart: 0 - width: 1080 - height: 194 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "26045" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "26001" - name: EDIT-discount - startTime: -0.72 - inPoint: 0 - outPoint: 4.68 - value: 30% OFF - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 266 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: true - leading: 25.0997009277344 - tracking: 0 - - type: COMPOSITION - internalId: "26013" - name: price comp - startTime: 0.72 - inPoint: 0.72 - outPoint: 6.04 - layerName: price comp - id: 26013 - duration: 5.32 - workAreaStart: 0 - width: 1080 - height: 228 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "26043" - name: boundingBox - startTime: 0 - inPoint: 0 - outPoint: 60 - value: "#848484" - width: 250 - height: 500 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: false - shy: true - effects: [] - - type: TEXT - internalId: "26028" - name: EDIT-price - startTime: -0.72 - inPoint: 0 - outPoint: 5.32 - value: "$199,99" - font: Poppins-Black - fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf - fontStyle: Black - fontFamily: Poppins - fontSize: 266 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - isParagraph: false - allCaps: false - leading: 31.9737205505371 - tracking: 0 - - type: COMPOSITION - internalId: "25942" - name: product pic comp - startTime: 0 - inPoint: 0 - outPoint: 6.04 - layerName: product pic comp - id: 25942 - duration: 6.04 - workAreaStart: 0 - width: 500 - height: 500 - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - children: - - type: MEDIA - internalId: "25954" - name: EDIT-example 2 product pic - startTime: 0 - inPoint: 0 - outPoint: 6.04 - value: (Footage)/Assets/generic%20keyboard.jpg - width: 500 - height: 500 - mediaType: IMAGE - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - effects: - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Scale to Fit (Maintain Ratio) - propertyName: Effects.STC - Scale to Fit (Maintain Ratio).Checkbox - value: 1 - keyframeValues: [] - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Scale to Fill - propertyName: Effects.STC - Scale to Fill.Checkbox - value: 1 - keyframeValues: [] - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Restore Original Size - propertyName: Effects.STC - Restore Original Size.Checkbox - value: 0 - keyframeValues: [] - - type: EFFECT_CHECKBOX_CONTROL - name: STC - Bypass - propertyName: Effects.STC - Bypass.Checkbox - value: 0 - keyframeValues: [] - preview: - link: https://storage.googleapis.com/plainlyvideos-user-projects-test/0c83ea04-2728-4e89-b50c-c9825786a25a/%28Footage%29/Assets/generic%20keyboard.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=plainly-backend-signer-sa%40plainly-test.iam.gserviceaccount.com%2F20250811%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250811T101904Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=915cd5e63f1bb65f8505fb2f648ebc67806ed4b7a466ea746753a8151b021d01c40ec9238c774375625887e827a5e828837d68f061124e0df33d2f56b52cea1e47de5aec955716dcd39e6f9385be152fd9e8a2c5b94e8a9d88031f704475d40b3b68b93d2d806f7128aa7e1f254bbd52d12467202fad3904c22eb0398532f5e6d89627f82a67edec461ea12092d3c77e24842254d846de798e3566fcfd9655b40b2d71483d9d59b226e43eebd443ee5512d25398eb43fdcea2624e60065c1addead7edd47337376a8b9989e306c78d49cdb987dd5a8ca384e1ef2db0b712d33d036ebdbac8bc994c3122e69a054fea062684447ff26a75acb6f295affd2beae7 - expiresAt: 2025-08-11T11:19:04.330854605Z - internal: false - - type: MEDIA - internalId: "25910" - name: bg - startTime: 0 - inPoint: 0 - outPoint: 6.04 - value: "#00274a" - width: 800 - height: 800 - mediaType: SOLID - guideLayer: false - adjustmentLayer: false - enabled: true - shy: false - effects: [] - schema: - type: array - items: - type: string - oneOf: - - $ref: "#/components/schemas/AeItem" - - $ref: "#/components/schemas/FlattenAeItem" - description: "Call successful. Note that there are guarantees on the Metadata\ - \ schema, it can change at any time." - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_NOT_ANALYZED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Metadata - tags: - - Projects - /api/v2/projects/{projectId}/reanalyze: - post: - description: |- - Requests project re-analysis in order to confirm project validity for rendering. - - > NOTE: Only one re-analysis is allowed per project for the same Plainly platform version. - operationId: reanalyze - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - responses: - "200": - content: - '*/*': - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_ANALYSIS_PENDING - - PROJECT_ANALYSIS_REANALYZE_LIMIT - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Re-analyze Project - tags: - - Projects - /api/v2/projects/{projectId}/share: - post: - description: |- - Controls project sharing via the static links. - - > NOTE: This feature is only available for subscriptions on *Team* and *Pro* packages, and during the free trial. - operationId: share - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ProjectShareDto" - required: true - responses: - "200": - content: - '*/*': - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - FEATURE_GATING_NOT_ALLOWED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Share Project - tags: - - Projects - /api/v2/projects/{projectId}/templates: - post: - description: Creates a new template in a project. - operationId: create - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: "The type of response to return. Can be `project` (default) which\ - \ means response will be a project where template is located, or `template`\ - \ which means response will be the template itself." - in: query - name: responseType - required: false - schema: - type: string - enum: - - project - - template - pattern: project|template - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateTemplateDto" - required: true - responses: - "200": - content: - application/json: - schema: - type: string - anyOf: - - $ref: "#/components/schemas/DestructedProject" - - $ref: "#/components/schemas/DestructedTemplate" - description: "Call successful. Returns the project with added template as\ - \ body by default, or template representation if the query param `responseType`\ - \ has value `template`." - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_METADATA_COMPOSITION_DOES_NOT_EXIST - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Create Template - tags: - - Templates - /api/v2/projects/{projectId}/templates/auto-generate: - post: - description: Auto creates one or more templates based on provided auto-create - type and its settings. - operationId: autoCreateTemplates - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AutoCreateTemplateDto" - description: The auto-create template settings. - required: true - responses: - "200": - content: - application/json: - schema: - type: string - anyOf: - - $ref: "#/components/schemas/DestructedProject" - description: "Call successful. Returns the project with all templates, including\ - \ newly created templates as well." - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Auto Create Templates - tags: - - Templates - /api/v2/projects/{projectId}/templates/{templateId}: - delete: - description: Deletes a template from a project. - operationId: delete - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: The ID of a template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - in: path - name: templateId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. Returns the updated project as body. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Delete Template - tags: - - Templates - get: - description: Returns a template from a project by Project ID and Template ID. - operationId: get - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: The ID of a template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - in: path - name: templateId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedTemplate" - description: Call successful. Returns the template as body. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Template - tags: - - Templates - put: - description: Updates a new template in a project. - operationId: update - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: The ID of a template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - in: path - name: templateId - required: true - schema: - type: string - - description: "The type of response to return. Can be `project` (default) which\ - \ means response will be a project where template is located, or `template`\ - \ which means response will be the template itself." - in: query - name: responseType - required: false - schema: - type: string - enum: - - project - - template - pattern: project|template - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateTemplateDto" - required: true - responses: - "200": - content: - application/json: - schema: - type: string - anyOf: - - $ref: "#/components/schemas/DestructedProject" - - $ref: "#/components/schemas/DestructedTemplate" - description: "Call successful. Returns the project with added template as\ - \ body by default, or template representation if the query param `responseType`\ - \ has value `template`." - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_METADATA_COMPOSITION_DOES_NOT_EXIST - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Update Template - tags: - - Templates - /api/v2/projects/{projectId}/templates/{templateId}/clone: - post: - description: Clones a template in a project. - operationId: cloneTemplate - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: The ID of a template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - in: path - name: templateId - required: true - schema: - type: string - - description: "The type of response to return. Can be `project` (default) which\ - \ means response will be a project where template is located, or `template`\ - \ which means response will be the template itself." - in: query - name: responseType - required: false - schema: - type: string - enum: - - project - - template - pattern: project|template - responses: - "200": - content: - application/json: - schema: - type: string - anyOf: - - $ref: "#/components/schemas/DestructedProject" - - $ref: "#/components/schemas/DestructedTemplate" - description: "Call successful. Returns the project with added template as\ - \ body by default, or template representation if the query param `responseType`\ - \ has value `template`." - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Clone Template - tags: - - Templates - /api/v2/projects/{projectId}/templates/{templateId}/default: - post: - description: Sets a template in a project as default. - operationId: setDefault - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: The ID of a template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - in: path - name: templateId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. Returns the project with added template as - body. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Set Default - tags: - - Templates - /api/v2/projects/{projectId}/templates/{templateId}/options: - post: - description: Sets a template default rendering options. - operationId: setOptions - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - - description: The ID of a template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - in: path - name: templateId - required: true - schema: - type: string - - description: "The type of response to return. Can be `project` (default) which\ - \ means response will be a project where template is located, or `template`\ - \ which means response will be the template itself." - in: query - name: responseType - required: false - schema: - type: string - enum: - - project - - template - pattern: project|template - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RenderOptionsDto" - required: true - responses: - "200": - content: - application/json: - schema: - type: string - anyOf: - - $ref: "#/components/schemas/DestructedProject" - - $ref: "#/components/schemas/DestructedTemplate" - description: "Call successful. Returns the project with added template as\ - \ body by default, or template representation if the query param `responseType`\ - \ has value `template`." - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Update Options - tags: - - Templates - /api/v2/projects/{projectId}/upgrade: - post: - description: Requests project upgrade in order to switch to the latest After - Effects version. - operationId: upgrade - parameters: - - description: The ID of a project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: projectId - required: true - schema: - type: string - responses: - "200": - content: - '*/*': - schema: - $ref: "#/components/schemas/DestructedProject" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_ANALYSIS_PENDING - - PROJECT_NOT_ANALYZED - - PROJECT_UPGRADE_ALREADY_FAILED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: The project with given ID does not exist. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Upgrade Project - tags: - - Projects - /api/v2/renders: - get: - description: "Returns all renders available for your organization, optionally\ - \ filtered by project and/or template." - operationId: get_1 - parameters: - - description: The ID of a project to return renders for (optional). - example: 3934539a-d7f1-4308-a33c-ca523c0c916a - in: query - name: projectId - required: false - schema: - type: string - - description: "The ID of a template to return renders for (optional). Note\ - \ that if `projectId` is given, the provided `templateId` must be a part\ - \ of the given project." - example: 0fade64c-588e-44c2-a9ea-d7435372cbfb - in: query - name: templateId - required: false - schema: - type: string - - description: Filters the returned renders by the given state (optional). - example: DONE - in: query - name: state - required: false - schema: - type: string - description: | - The state of the render, which can be one of the following: - - * `PENDING` - The render is successfully created and pending for processing. - * `THROTTLED` - The render has been throttled temporary due to concurrent render limits. - * `QUEUED` - The render is submitted to a rendering queue. - * `IN_PROGRESS` - The render is currently being processed on a rendering worker node. - * `DONE` - The render is successfully finalized and the output video is ready for download. - * `FAILED` - The render process failed on a rendering worker node. - * `INVALID` - The render has not been created successfully, as the input data is invalid. - * `CANCELLED` - The render has been canceled on a user request. - enum: - - PENDING - - THROTTLED - - QUEUED - - IN_PROGRESS - - DONE - - FAILED - - INVALID - - CANCELLED - - description: Filters the returned renders by the webhook delivery status (optional). - example: FAILURE - in: query - name: webhookStatus - required: false - schema: - type: string - enum: - - PENDING - - RETRYING - - IGNORED - - FAILURE - - SUCCESS - - description: The number of items to return per page. - example: 20 - in: query - name: size - schema: - type: string - - description: The zero-indexed page number to return. - example: 1 - in: query - name: page - schema: - type: string - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/DestructedRender" - minItems: 0 - uniqueItems: true - minItems: 0 - uniqueItems: true - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: List All Renders - tags: - - Renders - post: - description: Invokes a new render generation. - operationId: render - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ProjectRenderDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedRender" - description: Render created. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_PROJECT_NOT_UPLOADED - - RENDER_PROJECT_NOT_ANALYZED - - RENDER_PROJECT_NOT_TEMPLATED - - RENDER_SCRIPTS_SCENE_MANAGEMENT_TOO_MANY_SCENES - - RENDER_SCRIPTS_SCENE_MANAGEMENT_PARAMETER_INVALID - - RENDER_SCRIPTS_SCENE_MANAGEMENT_PARAMETER_MISSING - - RENDER_SCRIPTS_IMAGE_SEQUENCE_PARAMETER_INVALID - - RENDER_SCRIPTS_IMAGE_SEQUENCE_PARAMETER_EMPTY - - RENDER_OUTPUT_MODULE_NOT_SUPPORTED_BY_AFTER_EFFECTS_VERSION - - RENDER_SETTINGS_TEMPLATE_NOT_SUPPORTED_BY_AFTER_EFFECTS_VERSION - - RENDER_INPUT_SOLID_COLOR_NOT_VALID - - RENDER_INPUT_EFFECT_COLOR_CONTROL_NOT_VALID - - RENDER_INPUT_EFFECT_SLIDER_CONTROL_NOT_VALID - - RENDER_INPUT_EFFECT_CHECKBOX_CONTROL_NOT_VALID - - RENDER_INPUT_EFFECT_POINT_CONTROL_NOT_VALID - - RENDER_INPUT_EFFECT_DROPDOWN_CONTROL_NOT_VALID - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - - RENDER_DOES_NOT_EXIST - style: simple - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Too many requests. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_ORGANIZATION_QUEUE_FULL - style: simple - security: - - ApiKey: [] - summary: New Render - tags: - - Renders - /api/v2/renders/cancel-all: - post: - description: |- - Cancels all not started renders for your organization, optionally filtered by project and/or template.", - - NOTE: This request return `HTTP 201` and processes cancellation in async mode. - operationId: cancelAll - parameters: - - description: The ID of a project to cancel renders for (optional). - example: 3934539a-d7f1-4308-a33c-ca523c0c916a - in: query - name: projectId - required: false - schema: - type: string - - description: "The ID of a template to cancel renders for (optional). Note\ - \ that if `projectId` is given, the provided `templateId` must be a part\ - \ of the given project." - example: 0fade64c-588e-44c2-a9ea-d7435372cbfb - in: query - name: templateId - required: false - schema: - type: string - responses: - "201": - description: Action accepted. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: Cancel All Renders - tags: - - Renders - /api/v2/renders/search: - get: - description: Return all renders for your organization based on the provided - search term. - operationId: getBySearchTerm - parameters: - - description: The search term to return renders for. - example: Twitter - in: query - name: searchTerm - required: false - schema: - type: string - - description: The number of items to return per page. - example: 20 - in: query - name: size - schema: - type: string - - description: The zero-indexed page number to return. - example: 1 - in: query - name: page - schema: - type: string - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/DestructedRender" - minItems: 0 - uniqueItems: true - minItems: 0 - uniqueItems: true - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: Search Renders - tags: - - Renders - /api/v2/renders/{renderId}: - delete: - description: Deletes an existing and processed render. - operationId: delete_2 - parameters: - - description: The ID of a render. - example: 36fea4a1-934b-47c2-8151-875481055ffb - in: path - name: renderId - required: true - schema: - type: string - - description: "When set to `true`, the render assets like video and thumbnails\ - \ will be kept available until the end of the rentention period." - example: true - in: query - name: skipAssets - required: false - schema: - type: boolean - responses: - "201": - content: - '*/*': - schema: - type: object - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_NOT_FINISHED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Delete Render - tags: - - Renders - get: - description: Return a render by its ID. - operationId: getOne_4 - parameters: - - description: The ID of a render. - example: 36fea4a1-934b-47c2-8151-875481055ffb - in: path - name: renderId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedRender" - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Render - tags: - - Renders - /api/v2/renders/{renderId}/cancel: - post: - description: Cancels a render if it's not started yet. - operationId: cancelOne - parameters: - - description: The ID of a render. - example: 36fea4a1-934b-47c2-8151-875481055ffb - in: path - name: renderId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedRender" - description: Render maybe cancelled. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Cancel Render - tags: - - Renders - /api/v2/renders/{renderId}/promote: - post: - description: Promote render to static link if sharing for the project is enabled. - operationId: promoteRenderToStaticLink - parameters: - - description: The ID of a render. - example: 36fea4a1-934b-47c2-8151-875481055ffb - in: path - name: renderId - required: true - schema: - type: string - responses: - "200": - content: - '*/*': - schema: - type: object - description: Render promoted. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - PROJECT_SHARING_NOT_ENABLED - - FEATURE_GATING_NOT_ALLOWED_SHARING_LINKS - - RENDER_EXPIRED - - RENDER_NOT_FINISHED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_DOES_NOT_EXIST - - PROJECT_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Promote Render. - tags: - - Renders - /api/v2/renders/{renderId}/resubmit: - post: - description: "Re-renders an existing render. This action effectively creates\ - \ a new render which information is returned as a response. Note that all\ - \ data from the original render will be reused (parameters, output format,\ - \ webhook information, etc)." - operationId: resubmit - parameters: - - description: The ID of a render. - example: 36fea4a1-934b-47c2-8151-875481055ffb - in: path - name: renderId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedRender" - description: Render created. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_RESUBMIT_PARAMETRIZATION_ERROR - - RENDER_PROJECT_NOT_UPLOADED - - RENDER_PROJECT_NOT_ANALYZED - - RENDER_PROJECT_NOT_TEMPLATED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_DOES_NOT_EXIST - - PROJECT_DOES_NOT_EXIST - - PROJECT_TEMPLATE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Resubmit Render - tags: - - Renders - /api/v2/renders/{renderId}/webhook: - post: - description: Re-triggers webhook call for an existing and finished render. - operationId: reTriggerWebhook - parameters: - - description: The ID of a render. - example: 36fea4a1-934b-47c2-8151-875481055ffb - in: path - name: renderId - required: true - schema: - type: string - responses: - "200": - content: - '*/*': - schema: - type: object - description: Webhook called. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_NOT_FINISHED - - RENDER_DOES_NOT_HAVE_WEBHOOK - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - RENDER_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Re-trigger webhook - tags: - - Renders - /api/v2/video-genius/brands: - get: - description: Returns all brands available for your organization. - operationId: getAll_1 - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/DestructedBrand" - minItems: 0 - uniqueItems: true - minItems: 0 - uniqueItems: true - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: List All Brands - tags: - - VideoGenius / Brands - post: - description: Creates a new brand. - operationId: createBrand - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateBrandDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedBrand" - description: Call successful. Returns the created brand details as body. - headers: - Location: - description: The URL of the created brand. - schema: - format: uri - style: simple - "400": - description: Bad Request - security: - - ApiKey: [] - summary: Create Brand - tags: - - VideoGenius / Brands - /api/v2/video-genius/brands/{brandId}: - delete: - description: Deletes an existing brand. - operationId: deleteBrand - parameters: - - description: The ID of a brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - responses: - "201": - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Delete Brand - tags: - - VideoGenius / Brands - get: - description: Returns a brand by ID. - operationId: getOne - parameters: - - description: The ID of a brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedBrand" - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Brand - tags: - - VideoGenius / Brands - post: - description: Updates an existing brand. - operationId: updateBrand - parameters: - - in: path - name: brandId - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateBrandDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedBrand" - description: Call successful. Returns the updated brand details as body. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Update Brand - tags: - - VideoGenius / Brands - /api/v2/video-genius/brands/{brandId}/articles: - get: - description: Returns all articles available for a single brand in your organization. - operationId: getAll - parameters: - - description: The ID of a brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The number of items to return per page. - example: 20 - in: query - name: size - schema: - type: string - - description: The zero-indexed page number to return. - example: 1 - in: query - name: page - schema: - type: string - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/DestructedArticle" - minItems: 0 - uniqueItems: true - minItems: 0 - uniqueItems: true - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: List All Articles for Brand - tags: - - VideoGenius / Articles - post: - description: Creates a new article for a specific brand. - operationId: createArticle - parameters: - - description: The ID of a brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateArticleDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedArticle" - description: Call successful. Returns the created brand details as body. - headers: - Location: - description: The URL of the created article. - schema: - format: uri - style: simple - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_URL_NOT_FOUND - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Create Article - tags: - - VideoGenius / Articles - /api/v2/video-genius/brands/{brandId}/articles/{articleId}: - delete: - description: Deletes an existing article. - operationId: deleteArticle - parameters: - - description: The ID of a brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article. It must belong to the given brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - responses: - "201": - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Delete Article - tags: - - VideoGenius / Articles - get: - description: Returns a article by ID. - operationId: getOne_3 - parameters: - - description: The ID of a brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article. It must belong to the given brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedArticle" - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Article for Brand - tags: - - VideoGenius / Articles - /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos: - get: - description: Returns all videos available for a single article in your organization. - operationId: getAll_3 - parameters: - - description: The ID of a brand the article belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article. - example: 22a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/DestructedArticleVideo" - minItems: 0 - uniqueItems: true - minItems: 0 - uniqueItems: true - description: Call successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: List All Videos for Article - tags: - - VideoGenius / Videos - /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}: - get: - description: Returns a article video by ID. - operationId: getOne_2 - parameters: - - description: The ID of a brand the article belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article the video belongs to. - example: 22a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - - description: The ID of the video. - example: 33a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: videoId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedArticleVideo" - description: Call successful. - "400": - description: Bad Request - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Get Single Video for Article - tags: - - VideoGenius / Videos - /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}/revisions/{revisionId}/clone: - post: - description: Clones an existing revision of a video. - operationId: cloneRevision - parameters: - - description: The ID of a brand the article belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article the video belongs to. - example: 22a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - - description: The ID of the video. - example: 33a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: videoId - required: true - schema: - type: string - - description: The ID of the revision. - example: 44a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: revisionId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedArticleVideo" - description: Call successful. - "400": - description: Bad Request - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Forbidden. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_NOT_OWNED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST - - BRAND_ARTICLE_VIDEO_REVISION_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Clone a Video Revision - tags: - - VideoGenius / Videos - /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}/revisions/{revisionId}/save: - post: - description: Updates an existing revision of a video. - operationId: save - parameters: - - description: The ID of a brand the article belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article the video belongs to. - example: 22a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - - description: The ID of the video. - example: 33a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: videoId - required: true - schema: - type: string - - description: The ID of the revision. - example: 44a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: revisionId - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RevisionUpdateDto" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedArticleVideo" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_VIDEO_REVISION_STATE_INVALID - style: simple - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Forbidden. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_NOT_OWNED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST - - BRAND_ARTICLE_VIDEO_REVISION_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Update a Video Revision - tags: - - VideoGenius / Videos - /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}/revisions/{revisionId}/submit: - post: - description: Submits an existing revision of a video for rendering. - operationId: submitRevision - parameters: - - description: The ID of a brand the article belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: brandId - required: true - schema: - type: string - - description: The ID of an article the video belongs to. - example: 22a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: articleId - required: true - schema: - type: string - - description: The ID of the video. - example: 33a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: videoId - required: true - schema: - type: string - - description: The ID of the revision. - example: 44a1578c-521c-49f4-b1b7-a8df71d87549 - in: path - name: revisionId - required: true - schema: - type: string - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DestructedArticleVideo" - description: Call successful. - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Bad request. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_VIDEO_REVISION_STATE_INVALID - style: simple - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Forbidden. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_NOT_OWNED - style: simple - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ApiError" - description: Not found. - headers: - X-PlainlyErrorCode: - description: Error code. - schema: - enum: - - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST - - BRAND_ARTICLE_VIDEO_REVISION_DOES_NOT_EXIST - style: simple - security: - - ApiKey: [] - summary: Submit a Video Revision - tags: - - VideoGenius / Videos - /api/v2/webhook-test: - get: - description: "Calls a webhook your provided in order to simulate a call that\ - \ will be fired once a rendering with supplied webhook has been finalized.\ - \ This can be useful when you build the integrations using Zappier or other\ - \ integration tools, as you can receive the `POST` body structure the webhook\ - \ will be call with." - operationId: doTest - parameters: - - description: The URL of the webhook to send the POST request with the example - body. - example: https://hooks.zapier.com/hooks/catch/123456/abcdefg/ - in: query - name: url - required: true - schema: - type: string - - description: A string of your choice to receive as the passthrough on the - webhook. This can help you to reference a render to your data identifiers. - example: pid98765 - in: query - name: passthrough - required: false - schema: - type: string - responses: - "200": - content: - '*/*': - example: 202 - schema: - type: integer - format: int32 - description: Test successful. - "400": - description: Bad Request - security: - - ApiKey: [] - summary: Webhook Test - tags: - - Utilities -components: - schemas: - AeItem: - type: object - description: Project metadata tree item. - discriminator: - mapping: - COMPOSITION: "#/components/schemas/AeItem.Composition" - MEDIA: "#/components/schemas/AeItem.Media" - TEXT: "#/components/schemas/AeItem.Text" - propertyName: type - oneOf: - - $ref: "#/components/schemas/AeItem.Composition" - - $ref: "#/components/schemas/AeItem.Media" - - $ref: "#/components/schemas/AeItem.Text" - properties: - adjustmentLayer: - type: boolean - description: Indicates if this is an adjustment layer. Note that this property - can be inherit from parent composition(s) properties. - enabled: - type: boolean - description: Indicates if the layer is enabled. Note that this property - can be inherit from parent composition(s) properties. - guideLayer: - type: boolean - description: Indicates if this is a guide layer. Note that this property - can be inherit from parent composition(s) properties. - inPoint: - type: number - format: double - description: In point of the item in seconds relative to containing composition. - internalId: - type: string - description: Plainly's internal identifier of the item. - name: - type: string - description: Name of the item. - outPoint: - type: number - format: double - description: Out point of the item in seconds relative to containing composition. - shy: - type: boolean - description: "Indicates if the layer is shy, meaning it is hidden in the\ - \ timeline unless the shy switch is enabled. Note that this property can\ - \ be inherit from parent composition(s) properties." - startTime: - type: number - format: double - description: Start time of the item in seconds relative to containing composition. - type: - type: string - description: Type of the After Effects layer. - enum: - - COMPOSITION - - MEDIA - - TEXT - value: - type: string - description: "Value of the item, if applicable. Usually used for text layers\ - \ or expressions." - AeItem.Composition: - allOf: - - $ref: "#/components/schemas/AeItem" - - type: object - properties: - children: - type: array - items: - $ref: "#/components/schemas/AeItem" - duration: - type: number - format: double - description: Duration of the composition in seconds. - height: - type: number - format: double - description: Height of the composition in pixels. - id: - type: integer - format: int64 - description: Unique identifier for the composition as reported by After - Effects. - layerName: - type: string - description: Layer name of the composition. Note that composition name - and it source layer name can differ. - width: - type: number - format: double - description: Width of the composition in pixels. - workAreaStart: - type: number - format: double - description: Work area start time of the composition in seconds. - AeItem.Media: - allOf: - - $ref: "#/components/schemas/AeItem" - - type: object - properties: - effects: - type: array - items: - type: object - description: List of effects applied to the media item. - height: - type: number - format: double - description: Height of the media item in pixels. - mediaType: - type: string - description: "Type of the media item, such as video or image." - enum: - - AUDIO - - VIDEO - - IMAGE - - SOLID - - UNKNOWN - preview: - $ref: "#/components/schemas/SignedUrlFilePreview" - width: - type: number - format: double - description: Width of the media item in pixels. - AeItem.Text: - allOf: - - $ref: "#/components/schemas/AeItem" - - type: object - properties: - allCaps: - type: boolean - description: Indicates if the text has all caps option enabled. - font: - type: string - description: Font name used in the text layer. - fontFamily: - type: string - description: Font family used in the text layer. - fontSize: - type: number - format: double - description: Font size used in the text layer. - fontStyle: - type: string - description: Font style used in the text layer. - isParagraph: - type: boolean - description: Indicates if the text is a paragraph. - leading: - type: number - format: double - description: "Leading value for the text layer, which is the vertical\ - \ space between lines of text." - tracking: - type: number - format: double - description: "Tracking value for the text layer, which is the horizontal\ - \ space between characters." - ApiError: - properties: - error: - description: The error title. - example: Error type - message: - description: Human-readable message that explains the error. - example: "[ERROR_CODE] The error message describing the error." - path: - description: The path of the API request. - example: /api/v2 - status: - description: The HTTP status code. - timestamp: - description: Timestamp of the request. - example: 2023-04-10T10:44:21.848+00:00 - App: - type: object - properties: - apiUrl: - type: string - description: "The app API endpoint, which accepts POST requests using the\ - \ API key." - id: - type: string - description: The app identifier. - enum: - - APP_TWITTER - inputs: - type: array - items: - $ref: "#/components/schemas/DesignParameter" - minItems: 1 - parameters: - type: array - items: - $ref: "#/components/schemas/DesignParameter" - minItems: 0 - webApiUrl: - type: string - description: "The app Web-API endpoint, which accepts POST requests using\ - \ the JWT token." - required: - - apiUrl - - id - - inputs - - webApiUrl - ArticleInput: - type: object - description: Data for a the article input. - discriminator: - mapping: - WEB_ARTICLE: "#/components/schemas/ArticleInput.Web" - propertyName: type - oneOf: - - $ref: "#/components/schemas/ArticleInput.Web" - properties: - image: - type: string - description: The image of the article. - example: http://static01.nyt.com/images/2023/09/26/science/26tb-fairy-circles/26tb-fairy-circles-facebookJumbo.jpg - title: - type: string - description: The title of the article. - example: Satellites Show Mysterious Fairy Circles in More Parts of the World - type: - type: string - required: - - type - ArticleInput.Web: - allOf: - - $ref: "#/components/schemas/ArticleInput" - - type: object - properties: - articleUrl: - type: string - description: The URL where article is published. - example: https://www.nytimes.com/2021/01/20/us/politics/biden-inauguration.html - body: - type: string - description: The complete text of the article. - maxLength: 20000 - minLength: 250 - description: - type: string - description: The description of the article resolved from the existing - metadata. - example: "Researchers say that the rings of vegetation, which had mostly\ - \ been studied in Namibia and Australia, may exist in 15 countries." - image: - type: string - description: The image of the article resolved from the existing metadata. - example: http://static01.nyt.com/images/2023/09/26/science/26tb-fairy-circles/26tb-fairy-circles-facebookJumbo.jpg - metadata: - type: object - additionalProperties: - type: string - description: Optional the complete metadata map resolved from the article - HTML meta tags. - example: - og:title: Satellites Show Mysterious Fairy Circles in More Parts of - the World - og:description: "Researchers say that the rings of vegetation, which\ - \ had mostly been studied in Namibia and Australia, may exist in 15\ - \ countries." - og:image: http://static01.nyt.com/images/2023/09/26/science/26tb-fairy-circles/26tb-fairy-circles-facebookJumbo.jpg - title: - type: string - description: The title of the article resolved from the existing metadata. - example: Satellites Show Mysterious Fairy Circles in More Parts of the - World - description: Data for a the web article input. - required: - - articleUrl - - body - ArticleVideoSceneHeadline: - type: object - description: Headline group for a scene. - properties: - heading: - type: string - description: The main heading. - subheading: - type: string - description: The subheading. - required: - - heading - Asset: - type: object - description: Parametrization details used to create assets. - discriminator: - mapping: - audio: "#/components/schemas/Asset.Audio" - data: "#/components/schemas/Asset.Data" - image: "#/components/schemas/Asset.Image" - script: "#/components/schemas/Asset.Script" - static: "#/components/schemas/Asset.Static" - video: "#/components/schemas/Asset.Video" - propertyName: type - oneOf: - - $ref: "#/components/schemas/Asset.Script" - - $ref: "#/components/schemas/Asset.Static" - - $ref: "#/components/schemas/Asset.Data" - - $ref: "#/components/schemas/Asset.Image" - - $ref: "#/components/schemas/Asset.Video" - - $ref: "#/components/schemas/Asset.Audio" - properties: - type: - type: string - required: - - type - Asset.Audio: - allOf: - - $ref: "#/components/schemas/Asset" - - type: object - properties: - composition: - type: string - description: Composition name where layer is located. - example: mainComposition - contentType: - type: string - description: "Optional, assumed asset content type." - layerName: - type: string - description: Layer name to update. - example: productNameLayer - src: - type: string - description: Asset source. - example: https://my.cnd.net/image.png - description: Media asset that contains the audio source. - required: - - layerName - - src - Asset.Data: - allOf: - - $ref: "#/components/schemas/Asset" - - type: object - properties: - composition: - type: string - description: Composition name where layer is located. - example: mainComposition - extras: - $ref: "#/components/schemas/Extras" - layerName: - type: string - description: Layer name to update. - example: productNameLayer - property: - type: string - description: The After Effects property name to update. - example: Source Text - value: - type: object - description: Update value. - example: Samsung TV - description: Asset applying an update to the layer data. - required: - - layerName - - property - - value - Asset.Image: - allOf: - - $ref: "#/components/schemas/Asset" - - type: object - properties: - asSequence: - type: boolean - description: If asset is loaded as sequence. - composition: - type: string - description: Composition name where layer is located. - example: mainComposition - contentType: - type: string - description: "Optional, assumed asset content type." - layerName: - type: string - description: Layer name to update. - example: productNameLayer - src: - type: string - description: Asset source. - example: https://my.cnd.net/image.png - description: Media asset that contains the image source. - required: - - layerName - - src - Asset.Script: - allOf: - - $ref: "#/components/schemas/Asset" - - type: object - properties: - parameters: - type: array - items: - $ref: "#/components/schemas/AssetParameter" - minItems: 0 - src: - type: string - description: "Technical field, should not be referenced and used." - description: Asset applying a script to the project. - Asset.Static: - allOf: - - $ref: "#/components/schemas/Asset" - - type: object - properties: - name: - type: string - skipContentTypeFileExtension: - type: boolean - src: - type: string - description: Asset downloading a static resource. - Asset.Video: - allOf: - - $ref: "#/components/schemas/Asset" - - type: object - properties: - composition: - type: string - description: Composition name where layer is located. - example: mainComposition - contentType: - type: string - description: "Optional, assumed asset content type." - layerName: - type: string - description: Layer name to update. - example: productNameLayer - src: - type: string - description: Asset source. - example: https://my.cnd.net/image.png - description: Media asset that contains the video source. - required: - - layerName - - src - AssetParameter: - type: object - description: Script parameter. - properties: - key: - type: string - description: Script parameter key. - example: input - value: - type: object - description: Script parameter value. Any JS object. - AutoCreateTemplateDto: - type: object - description: Auto create templates for a project. - discriminator: - mapping: - all: "#/components/schemas/AutoCreateTemplateDto.All" - prefix: "#/components/schemas/AutoCreateTemplateDto.Prefix" - propertyName: type - oneOf: - - $ref: "#/components/schemas/AutoCreateTemplateDto.All" - - $ref: "#/components/schemas/AutoCreateTemplateDto.Prefix" - properties: - type: - type: string - required: - - type - AutoCreateTemplateDto.All: - allOf: - - $ref: "#/components/schemas/AutoCreateTemplateDto" - - type: object - properties: - allLayers: - type: boolean - default: "false" - description: "If true, all text and media layers contained in a composition\ - \ tree will be auto parametrized." - applyExclusionsToCompositions: - type: boolean - default: "true" - description: "If true, the exclusions will be applied to compositions\ - \ as well." - excludeAdjustmentLayers: - type: boolean - default: "false" - description: "If true, adjustment layers will be excluded from auto parametrization." - excludeDisabledLayers: - type: boolean - default: "false" - description: "If true, disabled layers will be excluded from auto parametrization." - excludeGuideLayers: - type: boolean - default: "false" - description: "If true, guide layers will be excluded from auto parametrization." - excludeShyLayers: - type: boolean - default: "false" - description: "If true, shy layer will be excluded from auto parametrization" - greedy: - type: boolean - default: "false" - description: "If true, template will be created for all root compositions,\ - \ otherwise only for the one with most sub-layers." - targetCompositionName: - type: string - description: "The name of the target composition to create the template\ - \ for. If provided, greedy will be ignored." - description: "Auto create templates for root compositions, with options to auto-parametrize\ - \ all layers that exist in them." - AutoCreateTemplateDto.Prefix: - allOf: - - $ref: "#/components/schemas/AutoCreateTemplateDto" - - type: object - properties: - applyExclusionsToCompositions: - type: boolean - default: "true" - description: "If true, the exclusions will be applied to compositions\ - \ as well." - excludeAdjustmentLayers: - type: boolean - default: "false" - description: "If true, adjustment layers will be excluded from auto parametrization." - excludeDisabledLayers: - type: boolean - default: "false" - description: "If true, disabled layers will be excluded from auto parametrization." - excludeGuideLayers: - type: boolean - default: "false" - description: "If true, guide layers will be excluded from auto parametrization." - excludeShyLayers: - type: boolean - default: "false" - description: "If true, shy layers will be excluded from auto parametrization." - prefixes: - type: array - default: "[\"plainly\"]" - description: "Prefixes are used for auto-generating templates and auto-parametrizing\ - \ layers. All compositions that start with any of the provided prefixes\ - \ will be auto-generated. All layers that start with any of the provided\ - \ prefixes will be auto-parametrized. If not provided, the default prefix\ - \ is `plainly`." - items: - type: string - stripPrefix: - type: boolean - default: "false" - description: Strip the prefix from the composition and layer names when - auto-generating templates and auto-parametrizing layers. - targetCompositionName: - type: string - description: "The name of the target composition to create the template\ - \ for. If provided, the prefixes will not be considered for the template\ - \ creation." - description: Auto-generate templates and auto-parametrize layers based on prefixes. - Avatar: - type: object - description: Provides the input and output for the avatar presenter creation. - properties: - in: - $ref: "#/components/schemas/AvatarIn" - out: - $ref: "#/components/schemas/AvatarOut" - AvatarIn: - type: object - description: The input for the avatar presenter creation. - properties: - paragraphs: - type: array - description: The paragraphs of the avatar content. - items: - $ref: "#/components/schemas/AvatarInParagraph" - presenterSignature: - type: string - description: The presenter name/signature to use for the avatar. - settings: - $ref: "#/components/schemas/AvatarProviderSettings" - required: - - paragraphs - - settings - AvatarInParagraph: - type: object - description: A single paragraph of the avatar content. - properties: - text: - type: string - description: The text to convert for avatar. - required: - - text - AvatarOptions: - type: object - description: The options for the avatar presenter creation. - properties: - presenterSignature: - type: string - description: The presenter name/signature to use for the avatar. - settings: - $ref: "#/components/schemas/AvatarProviderSettings" - required: - - settings - AvatarOut: - type: object - description: The output of the avatar presenter creation. - properties: - paragraphDurations: - type: array - description: The duration of each input paragraph in seconds. - items: - type: number - format: double - preview: - type: boolean - description: If the output is a preview (non-final asset). - providerResponse: - type: object - additionalProperties: - type: object - description: The complete response from the avatar service provider used. - url: - type: string - description: "The URL of the avatar video or audio. If `preview=false` it\ - \ will be a video, otherwise it can be either." - required: - - paragraphDurations - - url - AvatarProviderSettings: - type: object - description: Settings for the presenter avatar created by AI. - discriminator: - mapping: - D_ID: "#/components/schemas/AvatarProviderSettings.Did" - propertyName: type - oneOf: - - $ref: "#/components/schemas/AvatarProviderSettings.Did" - properties: - type: - type: string - required: - - type - AvatarProviderSettings.Did: - allOf: - - $ref: "#/components/schemas/AvatarProviderSettings" - description: Settings for the D-ID avatar provider. - BrandSettings: - type: object - description: The complete settings of a brand. - properties: - baseUrl: - type: string - description: The base url of the brand. - example: https://www.nytimes.com - language: - type: string - description: The default language code for the produced videos. - example: en-US - logoUrl: - type: string - description: The default logo of the brand. - example: https://www.nytimes.com/logo.png - name: - type: string - description: The name of the brand. - example: New York Times - videoTypes: - type: array - items: - $ref: "#/components/schemas/VideoSettingsObject" - required: - - baseUrl - - language - - logoUrl - - name - Captions: - type: object - description: Captions options for the render. - properties: - captionsPosition: - type: string - default: BOTTOM - description: Captions position. - enum: - - TOP - - CENTER - - BOTTOM - example: TOP - captionsStyle: - type: string - default: BASIC - description: Captions style. - enum: - - BASIC - - BASIC_WITH_STROKE_AND_SHADOW - - BASIC_WITH_SHADOW - - POPPINS_WHITE - - POPPINS_WHITE_VERTICAL - example: BASIC_WITH_STROKE_AND_SHADOW - srtFileUrl: - type: string - description: Url to the srt file. - example: https://my.cnd.net/srt.srt - required: - - srtFileUrl - ColorPalette: - type: object - properties: - defaultPalette: - type: boolean - description: Specifies whether is this the default color palette for a design - (true) or not (false). - example: true - group: - type: string - description: The group this color palette logically belongs to. - enum: - - WHITE - - YELLOW - - GREEN - - GRAY - - BEIGE - - PINK - - CYAN - - ORANGE - - BLUE - - NAVY - - PURPLE - - RED - - BROWN - - BLACK - example: YELLOW - primary: - type: string - description: Primary color. - example: "#8400ff" - secondary: - type: string - description: Secondary color. - example: "#fff200" - tertiary: - type: string - description: Tertiary color. - example: "#ed1c24" - required: - - group - - primary - CompositionIdentifier: - type: object - properties: - id: - type: integer - format: int64 - description: "The internal id of the composition. In case name contains\ - \ `->`, id should be the id of the last composition in the chain." - example: 24L - name: - type: string - description: The name of the composition. You can also use the `->` to create - a concrete composition tree that should be matched. For example `Root - composition->Concrete composition` would match the layer with the given - name only in the `Concrete composition` that has a parent named `Root - composition`. - example: main-comp - required: - - name - ConvertedAsset: - type: object - description: Details of an asset that was converted as part of a rendering job. - properties: - conversionDurationMillis: - type: number - format: double - description: "Time taken to perform the conversion, in milliseconds." - url: - type: string - description: "The URL of the converted asset (e.g. image, video, or audio)." - example: https://example.com/my-asset.heic - CreateArticleDto: - type: object - description: Data for a the article input. - discriminator: - mapping: - WEB_ARTICLE: "#/components/schemas/CreateArticleDto.Web" - propertyName: type - oneOf: - - $ref: "#/components/schemas/CreateArticleDto.Web" - properties: - type: - type: string - required: - - type - CreateArticleDto.Web: - allOf: - - $ref: "#/components/schemas/CreateArticleDto" - - type: object - properties: - articleUrl: - type: string - description: The URL where article is published. - example: https://www.nytimes.com/2021/01/20/us/politics/biden-inauguration.html - body: - type: string - description: The complete text of the article. - maxLength: 20000 - minLength: 250 - description: Data for creating a web article. - required: - - articleUrl - - body - CreateBrandDto: - type: object - properties: - baseUrl: - type: string - description: The base url of the brand. - example: https://www.nytimes.com - language: - type: string - description: The default language code for the produced videos. - example: en-US - logoUrl: - type: string - description: The default logo of the brand. - example: https://www.nytimes.com/logo.png - name: - type: string - description: The name of the brand. - example: New York Times - required: - - baseUrl - - language - - logoUrl - - name - CreateTemplateDto: - type: object - properties: - defaultRenderOptions: - $ref: "#/components/schemas/RenderOptionsDto" - description: "The default render options for this template. If not provided,\ - \ the default options which only specify rendering format to MP4 will\ - \ be used. " - layers: - type: array - description: List of dynamically changed layers in this template. - items: - $ref: "#/components/schemas/ParametrizedLayer" - name: - type: string - description: The name of the template. - example: My template - renderingComposition: - type: string - description: The name of the composition to render in this template. - example: render-comp - renderingCompositionId: - type: integer - format: int64 - description: "The ID of the composition that will be rendered, as defined\ - \ by project metadata." - example: 123456 - required: - - layers - - name - - renderingComposition - - renderingCompositionId - Design: - type: object - properties: - app: - $ref: "#/components/schemas/App" - description: The information about the app provider. Apps are like integrations - that can be used to quickly render a design that is supported by the app. - category: - type: string - description: The category identifier the design belongs to. - enum: - - TWITTER - - SLIDESHOW - - ECOMMERCE - - MEDIA - - SUMMARY - example: TWITTER - defaultExample: - $ref: "#/components/schemas/DesignExample" - description: "Provides information about the design example, which contains\ - \ an image and a video." - description: - type: string - description: Human-readable description of the design. - example: A gradient based video design that displays a tweet without a media - in a white box. - id: - type: string - $ref: "#/components/schemas/DesignIds" - name: - type: string - description: Human-readable name of the design. - example: Boxed gradient - palettes: - type: array - items: - $ref: "#/components/schemas/ColorPalette" - minItems: 1 - parameters: - type: array - items: - $ref: "#/components/schemas/DesignParameter" - minItems: 1 - publishedDate: - type: string - format: date - description: The date when the design was published. - example: 2022-10-08 - renderUiDisabled: - type: boolean - description: Internal field. If rendering of the design is disabled on the - UI. - variants: - type: array - items: - $ref: "#/components/schemas/DesignVariant" - minItems: 1 - required: - - category - - defaultExample - - description - - id - - name - - palettes - - publishedDate - - variants - DesignExample: - type: object - properties: - thumbnailUrl: - type: string - description: The example image thumbnail of the variant. - example: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.jpg - videoUrl: - type: string - description: The example video of the variant. - example: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.mp4 - required: - - thumbnailUrl - - videoUrl - DesignIds: - type: string - description: The ID of a design. - enum: - - ecommerce-dapper@v1 - - ecommerce-flair@v1 - - ecommerce-moda@v1 - - ecommerce-pop@v1 - - ecommerce-street@v1 - - ecommerce-style@v1 - - ecommerce-trendy@v1 - - media-abstract@v1 - - media-classic@v1 - - media-evergreen@v1 - - media-retro@v1 - - media-timeless@v1 - - media-urban@v1 - - slideshow-corporate@v1 - - slideshow-rollercoaster@v1 - - slideshow-serif@v1 - - summary-business@v1 - - summary-common@v1 - - summary-economic@v1 - - summary-endless@v1 - - summary-funky@v1 - - summary-placeholder@v1 - - twitter-bird@v1 - - twitter-box@v1 - - twitter-duotone@v1 - - twitter-dusty@v1 - - twitter-elegant@v1 - - twitter-industrial@v1 - DesignParameter: - type: object - properties: - defaultValue: - type: object - description: Default value to be used if not given. - description: - type: string - description: Human-readable description of the parameter. - key: - type: string - description: Technical key of the parameter. - name: - type: string - description: Human-readable name of the parameter. - optional: - type: boolean - description: Specifies whether is this parameter optional. - example: true - sampleValue: - type: object - description: Example data to be used. - type: - type: string - description: Type of the parameter. - enum: - - STRING - - MEDIA - - COLOR - - NUMBER - - BOOLEAN - - COMPLEX - required: - - key - - name - - type - DesignRenderDto: - type: object - properties: - attributes: - type: object - $ref: "#/components/schemas/RenderAttributes" - additionalProperties: - type: object - colorPalette: - type: string - description: "The color palette identifier to use. If the provided palette\ - \ is not supported by the selected design, this parameter will be ignored." - enum: - - WHITE - - YELLOW - - GREEN - - GRAY - - BEIGE - - PINK - - CYAN - - ORANGE - - BLUE - - NAVY - - PURPLE - - RED - - BROWN - - BLACK - example: BLUE - designId: - type: string - $ref: "#/components/schemas/DesignIds" - options: - $ref: "#/components/schemas/ExtraOptions" - outputFormat: - $ref: "#/components/schemas/OutputFormatDto" - parameters: - type: object - additionalProperties: - type: object - description: Map of the parameters that design expects. All required parameters - should be provided. Keys in this map must not contain dots. - variantId: - type: string - description: Variant id of the design to use. If not provided the default - variant would be used. - example: square - webhook: - $ref: "#/components/schemas/Webhook" - required: - - designId - DesignVariant: - type: object - properties: - aspectRatio: - type: string - description: The variant aspect ratio. - enum: - - WIDE - - SQUARE - - STORY - example: STORY - defaultVariant: - type: boolean - description: Specifies whether is this the default variant. - example: true - duration: - type: number - format: double - description: Duration of this variant in seconds. - example: 15 - examples: - type: object - additionalProperties: - $ref: "#/components/schemas/DesignExample" - description: "A mapping of color palette groups to design examples. The\ - \ key is a color palette group, and the value is an example of how the\ - \ design variant looks using given palette." - example: - BLUE: - thumbnail-url: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.jpg - video-url: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.mp4 - id: - type: string - description: Variant identifier. - example: square - name: - type: string - description: The human readable name of the variant. - example: Square - required: - - aspectRatio - - examples - - id - DestructedArticle: - type: object - properties: - brandId: - type: string - description: The ID of the brand the article belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - createdDate: - type: string - format: date-time - description: The date & time when the article was created. - id: - type: string - description: The ID of the article. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - input: - $ref: "#/components/schemas/ArticleInput" - description: The input of the article including the meta-data collected. - lastModified: - type: string - format: date-time - description: The date & time when the article was last modified. - videoCount: - type: integer - format: int32 - description: The amount of videos created for this article. - DestructedArticleVideo: - type: object - properties: - articleId: - type: string - description: The ID of the article the video belongs to. - example: 22a1578c-521c-49f4-b1b7-a8df71d87549 - brandId: - type: string - description: The ID of the brand the video belongs to. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - createdDate: - type: string - format: date-time - description: The date & time when the video was created. - data: - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject" - description: "The data of this video. Includes settings for automated video\ - \ creation, as well as all the revisions of this video." - id: - type: string - description: The ID of the video. - example: 33a1578c-521c-49f4-b1b7-a8df71d87549 - lastModified: - type: string - format: date-time - description: The date & time when the video was last modified. - DestructedBrand: - type: object - properties: - createdDate: - type: string - format: date-time - description: The date & time when the brand was created. - id: - type: string - description: The ID of the brand. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - lastModified: - type: string - format: date-time - description: The date & time when the brand was last modified. - settings: - $ref: "#/components/schemas/BrandSettings" - DestructedOutputFormat: - type: object - properties: - attachment: - type: boolean - default: "false" - description: "If the output file should be consider as an attachment, meaning\ - \ that the video link will initiate a download of the file in a web browser." - example: false - attachmentFileName: - type: string - description: "Optional, name of the file when downloading as attachment.\ - \ Note that this has effect only if `attachment` is `true`. The file name\ - \ **must** be provided without extension which will be added automatically\ - \ based on the selected format. Could be any string or a render parameter\ - \ reference in formats `{{parameterName}}` or `{{parameterName:defaultValue}},\ - \ including a reference to `{{integrationPassthrough}}` or `{{webhookPassthrough}}\ - \ in the same manner`." - example: my_cool_video - outputModule: - type: string - description: | - The output module defines the format of the video generated by the After Effects. Available options are: - * `H_264` - output module for H.264 codec with 5 Mbps bitrate. - * `H_264_HIGH_BIT_RATE` - output module for H.264 codec with 15 Mbps bitrate. - * `HQ` - output module for quicktime video (`.mov`). - * `HQ_ALPHA` - output module for quicktime video with alpha channel (`.mov`). - - *NOTE: If you use post encoding, the final video produced by Plainly will be in the format defined in the post encoding.* - enum: - - H_264 - - H_264_HIGH_BIT_RATE - - HQ - - HQ_ALPHA - postEncoding: - $ref: "#/components/schemas/PostEncoding" - settingsTemplate: - type: string - description: | - Defines render settings template to be used during After Effects rendering. Available options: - * `BEST_SETTINGS`: `Best Settings` as defined in After Effects. Explicitly specifying the best settings for rendering has no effect, as this is already the default in After Effects. - * `DRAFT`: `Draft Settings` as defined in After Effects, which means half resolution and lower quality settings. Should serve for testing purposes and previews. - - > NOTE: Using `DRAFT` template is currently free of charge and your video minutes will not be consumed. - enum: - - BEST_SETTINGS - - DRAFT - DestructedProject: - type: object - properties: - aeVersion: - type: string - description: The selected After Effects version of the project. - enum: - - AENA - - AE2022 - - AE2023_AMD64 - - AE2024 - - AE2025 - example: AE2022 - analysis: - $ref: "#/components/schemas/DestructedProjectAnalysis" - analyzed: - type: boolean - description: If project is considered as analysed successfully. - example: true - attributes: - type: object - additionalProperties: - type: object - description: "User-defined attributes of the project. The field `tags` is\ - \ reserved, and must contain a list of strings." - example: - author: John Doe - location: New York - tags: - - internal - - ad - createdBy: - type: string - description: The ID of the user that created the project. - example: 5f6d5f4f-5f4f-4f4f-4f4f-4f4f4f4f4f4f - createdDate: - type: string - format: date-time - description: The date & time when the project was created. - defaultTemplateId: - type: string - description: "The ID of the default project template, which be use for rendering\ - \ the project if no template is specified. Can be `null` in case there\ - \ are no templates." - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - description: - type: string - description: The user-specified description of the project. - example: My awesome project for automating video production. - id: - type: string - description: The ID of the project. - example: 11a1578c-521c-49f4-b1b7-a8df71d87549 - lastModified: - type: string - format: date-time - description: The date & time when the project was last modified. - name: - type: string - description: The user-specified name of the project. - example: My Project - revisionHistory: - type: array - description: Provides the project files revision history information. - items: - $ref: "#/components/schemas/DestructedProjectRevision" - sharing: - $ref: "#/components/schemas/DestructedProjectSharing" - description: Provides the information on project sharing properties. Set - to `null` if sharing is disabled. - sharingLinks: - type: object - additionalProperties: - type: string - description: |- - If static link sharing is enabled for the project, this object will contain a link for each template in the project. The keys in the object are the template IDs and the values are the static links. - - > NOTE: Sharable link will be provided for each template in the project, but there is no guarantee that the link will not return the `404 Not Found`. The existence of the video at the given link depends on the sharing rules. For example, if manual promotion is selected, the link would contain a video once a render for a specific template was promoted to the sharing link. - size: - type: integer - format: int64 - description: The size of the project files in bytes. - example: 1048576 - minimum: 1 - strictFontChecks: - type: string - description: | - Controls the strictness of the font checks during the rendering. If set to `ENABLED`, the render will fail if the font can't support the characters in the text. If set to `DISABLED`, the render will continue, but the text will be rendered with a fallback font. - enum: - - DEFAULT - - ENABLED - - DISABLED - example: ENABLED - templates: - type: array - items: - $ref: "#/components/schemas/DestructedTemplate" - minItems: 0 - uniqueItems: true - uploaded: - type: boolean - description: If project files are uploaded to the Plainly storage. - example: true - DestructedProjectAnalysis: - type: object - description: Defines the state of the project analysis. - properties: - done: - type: boolean - description: If analysis is finished. - example: true - error: - type: object - $ref: "#/components/schemas/WorkerAnalysisError" - additionalProperties: - type: object - failed: - type: boolean - description: If analysis ended up with an error. - example: false - pending: - type: boolean - description: If analysis is currently in progress or pending. - example: false - upgradeError: - type: object - $ref: "#/components/schemas/WorkerUpgradeError" - additionalProperties: - type: object - DestructedProjectRevision: - type: object - description: Defines the single revision of the project files. - properties: - createdDate: - type: string - format: date-time - description: The date when the revision was created. - expired: - type: boolean - description: If the revision has expired. - expiredDate: - type: string - format: date-time - description: The date when the revision expired. - id: - type: string - description: The id if the revision. - example: e8a3eW - DestructedProjectSharing: - type: object - properties: - autoLatest: - type: boolean - description: If publishing latest renders to the share link(s) is done automatically. - example: true - enabled: - type: boolean - description: If the sharing is enabled for the project. - example: true - enabledDate: - type: string - format: date-time - description: When was the sharing enabled for the project. - DestructedRender: - type: object - properties: - attributes: - type: object - $ref: "#/components/schemas/RenderAttributes" - additionalProperties: - type: object - compositionName: - type: string - description: Composition name given by the user. - convertedAssets: - type: array - description: List of assets that were converted to a supported format. Only - available when render state is `DONE` and conversion was needed. - items: - $ref: "#/components/schemas/ConvertedAsset" - createdBy: - type: string - description: User ID that created the render. - example: 5f6d5f4f-5f4f-4f4f-4f4f-4f4f4f4f4f4f - createdDate: - type: string - format: date-time - description: Render created date/time. - error: - type: object - $ref: "#/components/schemas/WorkerRenderingError" - additionalProperties: - type: object - expirationDate: - type: string - format: date-time - description: Render output video expiration date. - expired: - type: boolean - description: Whether render output video is deleted from the Plainly storage. - id: - type: string - description: Render id. - example: 36fea4a1-934b-47c2-8151-875481055ffb - integrationDelivery: - $ref: "#/components/schemas/IntegrationDelivery" - description: Details for integration delivery. Not `null` only if at least - one delivery integration type exists for the render. - lastModified: - type: string - format: date-time - description: Render last modified date/time. - options: - $ref: "#/components/schemas/ExtraOptions" - output: - type: string - description: HTTP(S) link to the output file. Only available when render - state is `DONE`. - example: https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/video.mp4 - outputFormat: - $ref: "#/components/schemas/EncodingParamsOutputFormat" - description: Output format of the render. - outputWatermark: - type: string - description: HTTP(S) link to the output file with watermark. Only available - when render state is `DONE` and watermark generation was requested. - example: https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/video-watermark.mp4 - parameters: - type: object - additionalProperties: - type: object - description: Parameters passed when the rendering was initiated. May be - `null` or `empty` in case the render had no parameters. - example: - product_id: SU123456 - product_name: Samsung TV - parametrizationResults: - type: array - description: Result of the template parametrization processing. May be `null` - or `empty` in case template has no parametrization. - items: - $ref: "#/components/schemas/LayerParametrizationResult" - projectId: - type: string - description: Project ID this render belongs to. - example: 3934539a-d7f1-4308-a33c-ca523c0c916a - projectName: - type: string - description: Project name this render belongs to. - example: Summer Promotion - projectZipUrl: - type: string - description: HTTP(S) link to the modified project zip. Only available when - render state is `DONE` and project upload was requested. - example: https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/0dbe5f2a-c813-4d3c-b694-441b44b85b1e.zip - publicDesign: - type: boolean - description: Whether the project used for rendering is one of the public - designs offered by Plainly. This is `false` in case custom project is - used. - example: false - retried: - type: boolean - description: |- - If this render was automatically retried once on the rendering failure. - > The value can be `null` for renders created before Plainly version `v0.5.3`. - example: false - state: - type: string - description: | - The state of the render, which can be one of the following: - - * `PENDING` - The render is successfully created and pending for processing. - * `THROTTLED` - The render has been throttled temporary due to concurrent render limits. - * `QUEUED` - The render is submitted to a rendering queue. - * `IN_PROGRESS` - The render is currently being processed on a rendering worker node. - * `DONE` - The render is successfully finalized and the output video is ready for download. - * `FAILED` - The render process failed on a rendering worker node. - * `INVALID` - The render has not been created successfully, as the input data is invalid. - * `CANCELLED` - The render has been canceled on a user request. - enum: - - PENDING - - THROTTLED - - QUEUED - - IN_PROGRESS - - DONE - - FAILED - - INVALID - - CANCELLED - submittedDate: - type: string - format: date-time - description: Date/time when render was submitted to a rendering worker node. - May be `null` in case render state is `INVALID`. - templateId: - type: string - description: Template ID used to render. - example: 0fade64c-588e-44c2-a9ea-d7435372cbfb - templateName: - type: string - description: Template name used to render. - example: Product Template - thumbnailUris: - type: array - description: List of thumbnail HTTP(S) links. Only available when render - state is `DONE`. - example: - - https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/thumbnails/1.png - items: - type: string - webhook: - $ref: "#/components/schemas/Webhook" - webhookDelivery: - $ref: "#/components/schemas/WebhookDelivery" - description: |- - *Available for renders trigger with the Plainly version 0.4.3 or later* - - Details of the webhook delivery. Not `null` only if the webhook exist for the render. - DestructedRenderOptions: - type: object - description: The default render options for this template. - properties: - options: - $ref: "#/components/schemas/ExtraOptions" - outputFormat: - $ref: "#/components/schemas/DestructedOutputFormat" - webhook: - $ref: "#/components/schemas/Webhook" - DestructedTemplate: - type: object - properties: - createdBy: - type: string - description: The ID of the user that created the template. - example: 5f6d5f4f-5f4f-4f4f-4f4f-4f4f4f4f4f4f - createdDate: - type: string - format: date-time - description: The date & time when the template was created. - defaultRenderOptions: - $ref: "#/components/schemas/DestructedRenderOptions" - description: The default render options for this template. - duration: - type: number - format: double - description: |- - The duration in seconds of the rendered composition, and thus the video output. - > The value can be `null` for templates created before Plainly version `v0.3.4`. - example: 15.0 - id: - type: string - description: The ID of the template. - example: 1b2081db-9881-4b2d-bde9-41d167d94e8e - lastModified: - type: string - format: date-time - description: The date & time when the template was last modified. - layers: - type: array - description: List of dynamically changed layers in this template. - items: - $ref: "#/components/schemas/ParametrizedLayer" - name: - type: string - description: The user-specified template name. - example: My Template - renderingComposition: - type: string - description: The composition that will be rendered when this template is - rendered. - example: render-comp - renderingCompositionId: - type: integer - format: int64 - description: "The ID of the composition that will be rendered, as defined\ - \ by project metadata." - example: render-comp - resolution: - $ref: "#/components/schemas/Resolution" - description: "Resolution of the rendered composition, and thus the video\ - \ output." - required: - - name - EncodingParamsOutputFormat: - type: object - properties: - attachment: - type: boolean - default: "false" - description: "If the output file should be consider as an attachment, meaning\ - \ that the video link will initiate a download of the file in a web browser." - example: false - attachmentFileName: - type: string - description: "Optional, name of the file when downloading as attachment.\ - \ Note that this has effect only if `attachment` is `true`. The file name\ - \ **must** be provided without extension which will be added automatically\ - \ based on the selected format. Could be any string or a render parameter\ - \ reference in formats `{{parameterName}}` or `{{parameterName:defaultValue}},\ - \ including a reference to `{{integrationPassthrough}}` or `{{webhookPassthrough}}\ - \ in the same manner`." - example: my_cool_video - contentType: - type: string - description: Output file `Content-type` header. - example: video/mp4 - encodingNeeded: - type: boolean - description: Boolean flag denoting a need to encode the output file after - rendering. - ext: - type: string - description: Output file extension. - example: mp4 - outputModule: - type: string - description: | - The output module defines the format of the video generated by the After Effects. Available options are: - * `H_264` - output module for H.264 codec with 5 Mbps bitrate. - * `H_264_HIGH_BIT_RATE` - output module for H.264 codec with 15 Mbps bitrate. - * `HQ` - output module for quicktime video (`.mov`). - * `HQ_ALPHA` - output module for quicktime video with alpha channel (`.mov`). - - *NOTE: If you use post encoding, the final video produced by Plainly will be in the format defined in the post encoding.* - enum: - - H_264 - - H_264_HIGH_BIT_RATE - - HQ - - HQ_ALPHA - postEncoding: - $ref: "#/components/schemas/PostEncoding" - settingsTemplate: - type: string - description: | - Defines render settings template to be used during After Effects rendering. Available options: - * `BEST_SETTINGS`: `Best Settings` as defined in After Effects. Explicitly specifying the best settings for rendering has no effect, as this is already the default in After Effects. - * `DRAFT`: `Draft Settings` as defined in After Effects, which means half resolution and lower quality settings. Should serve for testing purposes and previews. - - > NOTE: Using `DRAFT` template is currently free of charge and your video minutes will not be consumed. - enum: - - BEST_SETTINGS - - DRAFT - ExtraOptions: - type: object - description: The map of additional options for the render. - properties: - captions: - $ref: "#/components/schemas/Captions" - integrations: - $ref: "#/components/schemas/Integrations" - projectFiles: - $ref: "#/components/schemas/ProjectFiles" - thumbnails: - $ref: "#/components/schemas/Thumbnails" - watermark: - $ref: "#/components/schemas/Watermark" - Extras: - type: object - properties: - fontPath: - type: string - FlattenAeItem: - type: object - description: Flattened project metadata item. - discriminator: - mapping: - COMPOSITION: "#/components/schemas/FlattenAeItem.Composition" - MEDIA: "#/components/schemas/FlattenAeItem.Media" - TEXT: "#/components/schemas/FlattenAeItem.Text" - propertyName: type - oneOf: - - $ref: "#/components/schemas/FlattenAeItem.Composition" - - $ref: "#/components/schemas/FlattenAeItem.Media" - - $ref: "#/components/schemas/FlattenAeItem.Text" - properties: - compositions: - type: array - description: "List of compositions that this item is part of, if any. When\ - \ empty it means that this item represents a root composition in a project." - items: - $ref: "#/components/schemas/FlattenCompositionDescriptor" - uniqueItems: true - internalId: - type: string - description: Plainly's internal identifier of the item. - name: - type: string - description: Name of the item. - type: - type: string - description: Type of the After Effects layer. - enum: - - COMPOSITION - - MEDIA - - TEXT - value: - type: string - description: "Value of the item, if applicable. Usually used for text layers\ - \ or expressions." - FlattenAeItem.Composition: - allOf: - - $ref: "#/components/schemas/FlattenAeItem" - - type: object - properties: - duration: - type: number - format: double - description: Duration of the composition in seconds. - height: - type: number - format: double - description: Height of the composition in pixels. - id: - type: integer - format: int64 - description: Unique identifier for the composition as reported by After - Effects. - layerName: - type: string - description: Layer name of the composition. Note that composition name - and it source layer name can differ. - width: - type: number - format: double - description: Width of the composition in pixels. - workAreaStart: - type: number - format: double - description: Work area start time of the composition in seconds. - FlattenAeItem.Media: - allOf: - - $ref: "#/components/schemas/FlattenAeItem" - - type: object - properties: - effects: - type: array - items: - type: object - description: List of effects applied to the media item. - height: - type: number - format: double - description: Height of the media item in pixels. - mediaType: - type: string - description: "Type of the media item, such as video or image." - enum: - - AUDIO - - VIDEO - - IMAGE - - SOLID - - UNKNOWN - preview: - $ref: "#/components/schemas/SignedUrlFilePreview" - width: - type: number - format: double - description: Width of the media item in pixels. - FlattenAeItem.Text: - allOf: - - $ref: "#/components/schemas/FlattenAeItem" - - type: object - properties: - allCaps: - type: boolean - description: Indicates if the text has all caps option enabled. - font: - type: string - description: Font name used in the text layer. - fontFamily: - type: string - description: Font family used in the text layer. - fontSize: - type: number - format: double - description: Font size used in the text layer. - fontStyle: - type: string - description: Font style used in the text layer. - isParagraph: - type: boolean - description: Indicates if the text is a paragraph. - leading: - type: number - format: double - description: "Leading value for the text layer, which is the vertical\ - \ space between lines of text." - tracking: - type: number - format: double - description: "Tracking value for the text layer, which is the horizontal\ - \ space between characters." - FlattenCompositionDescriptor: - type: object - properties: - id: - type: integer - format: int64 - description: Unique identifier for the composition as reported by After - Effects. - inCompositionProps: - $ref: "#/components/schemas/FlattenInCompositionProps" - description: Set of layer properties that describe the behavior in the composition. - internalId: - type: string - description: Plainly's internal ID of the composition descriptor. - example: 12345678-1234-1234-1234-123456789012 - layerName: - type: string - description: Name of the composition source layer. Note that composition - name and source layer name can differ. - example: Main Composition - name: - type: string - description: Name of the composition. - example: Main Composition - path: - type: string - description: Path to the composition in the project structure. Needed for - parametrizing an item that is contained in this composition. - example: Root->Main Composition - FlattenInCompositionProps: - type: object - properties: - adjustmentLayer: - type: boolean - description: Indicates if this is an adjustment layer. Note that this property - can be inherit from parent composition(s) properties. - enabled: - type: boolean - description: Indicates if the layer is enabled. Note that this property - can be inherit from parent composition(s) properties. - guideLayer: - type: boolean - description: Indicates if this is a guide layer. Note that this property - can be inherit from parent composition(s) properties. - inPoint: - type: number - format: double - description: In point of the item in seconds relative to containing composition. - outPoint: - type: number - format: double - description: Out point of the item in seconds relative to containing composition. - shy: - type: boolean - description: "Indicates if the layer is shy, meaning it is hidden in the\ - \ timeline unless the shy switch is enabled. Note that this property can\ - \ be inherit from parent composition(s) properties." - startTime: - type: number - format: double - description: Start time of the item in seconds relative to containing composition. - IntegrationDelivery: - type: object - properties: - deliveries: - type: array - description: List of all performed integration deliveries for a specific - render. - items: - $ref: "#/components/schemas/IntegrationDelivery" - Integrations: - type: object - description: "Integrations options for the render, meaningful only if integrations\ - \ are active for the project or template this render relates to." - properties: - passthrough: - type: string - description: "Data to be sent to the integration as the `integrationPassthrough`\ - \ parameter. Serves to pass arbitrary data to your active integrations.\ - \ Could be any string or a render parameter reference in formats `{{parameterName}}`\ - \ or `{{parameterName:defaultValue}}, including a reference to `{{webhookPassthrough}}\ - \ in the same manner`." - skipAll: - type: boolean - description: "If `true`, any active integration for this project or template\ - \ will not be triggered." - LayerParametrizationResult: - type: object - properties: - assets: - type: array - description: List of assets to be updated in the video. - items: - $ref: "#/components/schemas/Asset" - errorMessage: - type: string - description: Error message in case of the fatal error. - fatalError: - type: boolean - description: If dynamic parameterization failed due to the error. Usually - occurs when passed parameter(s) do not match expected structure. - mandatoryNotResolved: - type: boolean - description: "If parameterization is mandatory, but the dynamic expression\ - \ could not be resolved." - parametrization: - $ref: "#/components/schemas/Parametrization" - description: Parametrization details used to create assets. Can be `null` - in case no parametrization has been defined for the layer. - scripting: - $ref: "#/components/schemas/Scripting" - description: Scripting details used to create assets. Can be `null` in case - no scripting has been defined for the layer. - MeResponseDto: - type: object - properties: - organizationId: - type: string - description: The ID of the organization. - example: 123e4567-e89b-12d3-a456-426655440000 - organizationName: - type: string - description: The name of the organization. - example: My Organization - OutputFormatDto: - type: object - description: Output format to use for rendering. If not specified defaults to - default output format for the target After Effects version. - properties: - attachment: - type: boolean - default: "false" - description: "If the output file should be consider as an attachment, meaning\ - \ that the video link will initiate a download of the file in a web browser." - example: false - attachmentFileName: - type: string - description: "Optional, name of the file when downloading as attachment.\ - \ Note that this has effect only if `attachment` is `true`. The file name\ - \ **must** be provided without extension which will be added automatically\ - \ based on the selected format." - example: my_cool_video - outputModule: - type: string - description: | - The output module defines the format of the video generated by the After Effects. Available options are: - * `H_264` - output module for H.264 codec with 5 Mbps bitrate. - * `H_264_HIGH_BIT_RATE` - output module for H.264 codec with 15 Mbps bitrate. - * `HQ` - output module for quicktime video (`.mov`). - * `HQ_ALPHA` - output module for quicktime video with alpha channel (`.mov`). - - *NOTE: If you use post encoding, the final video produced by Plainly will be in the format defined in the post encoding.* - enum: - - H_264 - - H_264_HIGH_BIT_RATE - - HQ - - HQ_ALPHA - postEncoding: - $ref: "#/components/schemas/PostEncoding" - settingsTemplate: - type: string - description: | - Defines render settings template to be used during After Effects rendering. Available options: - * `BEST_SETTINGS`: `Best Settings` as defined in After Effects. Explicitly specifying the best settings for rendering has no effect, as this is already the default in After Effects. - * `DRAFT`: `Draft Settings` as defined in After Effects, which means half resolution and lower quality settings. Should serve for testing purposes and previews. - - > NOTE: Using `DRAFT` template is currently free of charge and your video minutes will not be consumed. - enum: - - BEST_SETTINGS - - DRAFT - Parametrization: - type: object - properties: - defaultValue: - type: string - description: Default value to use when `expression` is `true` and value - can not be resolved. - example: Samsung TV - expression: - type: boolean - description: If `true` then `value` parameter represents a SpEl expression. - example: true - mandatory: - type: boolean - description: If render should fail immediately is a dynamic value for this - parametrization can not be resolved. - example: false - value: - type: string - description: "Parametrization value. If `expression` parameter is `true`\ - \ then this represents a SpEl expression, otherwise static a value." - example: "#productName" - required: - - value - ParametrizedLayer: - type: object - description: Parametrization data for a single layer or composition. - discriminator: - mapping: - COMPOSITION: "#/components/schemas/ParametrizedLayer.Composition" - DATA: "#/components/schemas/ParametrizedLayer.Data" - DATA_EFFECT: "#/components/schemas/ParametrizedLayer.DataEffect" - MEDIA: "#/components/schemas/ParametrizedLayer.Media" - SOLID_COLOR: "#/components/schemas/ParametrizedLayer.SolidColor" - propertyName: layerType - oneOf: - - $ref: "#/components/schemas/ParametrizedLayer.Data" - - $ref: "#/components/schemas/ParametrizedLayer.Media" - - $ref: "#/components/schemas/ParametrizedLayer.SolidColor" - - $ref: "#/components/schemas/ParametrizedLayer.Composition" - - $ref: "#/components/schemas/ParametrizedLayer.DataEffect" - properties: - compositions: - type: array - items: - $ref: "#/components/schemas/CompositionIdentifier" - internalId: - type: string - description: "The internal ID of the layer, as defined in the project metadata." - example: 123456 - layerName: - type: string - description: The name of the parametrized layer. - example: cta - layerType: - type: string - parametrization: - $ref: "#/components/schemas/Parametrization" - scripting: - $ref: "#/components/schemas/Scripting" - description: '`Beta Feature` The scripting definition for this parametrized - layer.' - required: - - internalId - - layerName - ParametrizedLayer.Composition: - allOf: - - $ref: "#/components/schemas/ParametrizedLayer" - description: Composition parametrization that can contain scripts applied on - the composition. - required: - - compositions - - internalId - - layerName - ParametrizedLayer.Data: - allOf: - - $ref: "#/components/schemas/ParametrizedLayer" - - type: object - properties: - label: - type: string - description: The user-facing name of the layer when shown in the render - form. - example: Call to action - parametrization: - $ref: "#/components/schemas/Parametrization" - description: The templated value definition for this parametrized layer. - propertyName: - type: string - description: The property being parametrized. - example: Source Text - description: Data layer parametrization. - example: - propertyName: Source Text - compositions: - - id: 0 - name: main-comp - internalId: "123456" - label: Call to action - layerName: cta - layerType: DATA - parametrization: - defaultValue: Samsung TV - expression: true - mandatory: false - value: "#productName" - required: - - compositions - - internalId - - label - - layerName - - propertyName - ParametrizedLayer.DataEffect: - allOf: - - $ref: "#/components/schemas/ParametrizedLayer" - - type: object - properties: - effectType: - type: string - description: The type of the effect. - enum: - - EFFECT_COLOR_CONTROL - - EFFECT_SLIDER_CONTROL - - EFFECT_CHECKBOX_CONTROL - - EFFECT_POINT_CONTROL - - EFFECT_DROPDOWN_CONTROL - label: - type: string - description: The user-facing name of the layer when shown in the render - form. - example: Call to action - parametrization: - $ref: "#/components/schemas/Parametrization" - description: The templated value definition for this parametrized layer. - propertyName: - type: string - description: The property being parametrized. - example: Effects.color1.Color - description: Data effect parametrized layer. - example: - propertyName: Effects.color1.Color - compositions: - - id: 0 - name: main-comp - internalId: "123456" - label: Color control - layerName: textColor - layerType: DATA_EFFECT - parametrization: - defaultValue: "#0066ff" - expression: true - mandatory: false - value: "#textColor" - required: - - compositions - - effectType - - internalId - - label - - layerName - - propertyName - ParametrizedLayer.Media: - allOf: - - $ref: "#/components/schemas/ParametrizedLayer" - - type: object - properties: - label: - type: string - description: The user-facing name of the layer when shown in the render - form. - example: Call to action - mediaType: - type: string - description: The type of the media being parametrized - enum: - - image - - video - - audio - example: image - pattern: image|video|audio - parametrization: - $ref: "#/components/schemas/Parametrization" - description: The templated value definition for this parametrized layer. - description: Media parametrized layer. - example: - propertyName: image - compositions: - - id: 0 - name: main-comp - internalId: "123456" - label: Main image - layerName: image-layer - layerType: MEDIA - parametrization: - defaultValue: https://some.cnd/image.png - expression: true - mandatory: false - value: "#mainImage" - required: - - compositions - - internalId - - label - - layerName - - mediaType - ParametrizedLayer.SolidColor: - allOf: - - $ref: "#/components/schemas/ParametrizedLayer" - - type: object - properties: - label: - type: string - description: The user-facing name of the layer when shown in the render - form. - example: Call to action - parametrization: - $ref: "#/components/schemas/Parametrization" - description: The templated value definition for this parametrized layer. - propertyName: - type: string - description: The property being parametrized. - enum: - - source.mainSource.color - description: Solid color parametrized layer. - example: - propertyName: source.mainSource.color - compositions: - - id: 0 - name: main-comp - internalId: "123456" - label: Background color - layerName: backgroundSolid - layerType: SOLID_COLOR - parametrization: - defaultValue: "#0066ff" - expression: true - mandatory: false - value: "#background" - required: - - compositions - - internalId - - label - - layerName - PostEncoding: - type: object - description: | - Enables the additional encoding on the output file of the After Effects render process. - - If not defined, following rules apply: - * If output module which controls the output of the After Effects process is explicitly defined, then post-encoding is skipped. - * Otherwise, the default post-encoding will be used. - - Available options are: - * `default` - Default post encoding which in current version encodes into MP4 using H.264 codec with constant rate factor of `23`. Note that defaults might change in future versions. - * `none` - No post encoding will be applied, the original After Effects output file will be kept. - * `custom` - User specified custom encoding. The output format and encoding params can be specified. - * `smallest` - Post encoding that produces the smallest file with acceptable quality, which in current version encodes into MP4 using H.265 codec with constant rate factor of `30`. Note that defaults might change in future versions. - * `captions` - Post encoding that adds captions to the video. - * `scale` - Post encoding that scales the video based on the specified percentage. - discriminator: - mapping: - captions: "#/components/schemas/PostEncoding.Captions" - custom: "#/components/schemas/PostEncoding.Custom" - default: "#/components/schemas/PostEncoding.Default" - none: "#/components/schemas/PostEncoding.None" - scale: "#/components/schemas/PostEncoding.ScaleResolution" - smallest: "#/components/schemas/PostEncoding.Smallest" - propertyName: type - oneOf: - - $ref: "#/components/schemas/PostEncoding.Default" - - $ref: "#/components/schemas/PostEncoding.None" - - $ref: "#/components/schemas/PostEncoding.Custom" - - $ref: "#/components/schemas/PostEncoding.Smallest" - - $ref: "#/components/schemas/PostEncoding.Captions" - - $ref: "#/components/schemas/PostEncoding.ScaleResolution" - properties: - type: - type: string - required: - - type - PostEncoding.Captions: - allOf: - - $ref: "#/components/schemas/PostEncoding" - - type: object - properties: - baseEncoding: - $ref: "#/components/schemas/PostEncoding" - description: "Base encoding, that will be merged with this one." - captionsPosition: - type: string - default: BOTTOM - description: Captions position. - enum: - - TOP - - CENTER - - BOTTOM - example: TOP - captionsStyle: - type: string - default: BASIC - description: Captions style. - enum: - - BASIC - - BASIC_WITH_STROKE_AND_SHADOW - - BASIC_WITH_SHADOW - - POPPINS_WHITE - - POPPINS_WHITE_VERTICAL - example: BASIC_WITH_STROKE_AND_SHADOW - srtFileUrl: - type: string - description: Url to the srt file. - example: https://my.cnd.net/srt.srt - description: Post encoding that adds captions to the video. - required: - - srtFileUrl - PostEncoding.Custom: - allOf: - - $ref: "#/components/schemas/PostEncoding" - - type: object - properties: - encodingFormat: - type: string - description: "Optional, format of the post-encoded file." - enum: - - MP4 - - GIF - - OGG - - WEBM - - MOV - - MP4_H265 - - MXF - encodingParamsLine: - type: string - description: Encoding params passed to ffmpeg for post encoding. - example: -vcodec libx264 -pix_fmt yuv420p - description: Custom post encoding based on the user-defined parameters. - PostEncoding.Default: - allOf: - - $ref: "#/components/schemas/PostEncoding" - description: Default post encoding on the platform. - PostEncoding.None: - allOf: - - $ref: "#/components/schemas/PostEncoding" - description: No post encoding being performed. - PostEncoding.ScaleResolution: - allOf: - - $ref: "#/components/schemas/PostEncoding" - - type: object - properties: - scalingPercentage: - type: integer - format: int32 - description: "Scaling factor in percents. For example 50 scales the video\ - \ resolution down in half, and 200 doubles it up." - example: 50 - maximum: 400 - description: Post encoding that scales the video down or up based on the provided - percentage. - PostEncoding.Smallest: - allOf: - - $ref: "#/components/schemas/PostEncoding" - description: Smallest file size encoding type. - ProjectFiles: - type: object - description: Project files options for the render. - properties: - uploadEnabled: - type: boolean - description: Enables uploading modified project files as a zip archive. - ProjectRenderDto: - type: object - properties: - attributes: - type: object - $ref: "#/components/schemas/RenderAttributes" - additionalProperties: - type: object - options: - $ref: "#/components/schemas/ExtraOptions" - outputFormat: - $ref: "#/components/schemas/OutputFormatDto" - parameters: - type: object - additionalProperties: - type: object - description: Map of parameters to use in order to resolve the template parametrized - layers. Keys in this map must not contain dots. - example: - name: Mike - product: - id: SU123456 - title: Samsung TV - projectId: - type: string - description: The ID of the project to render. - example: 3934539a-d7f1-4308-a33c-ca523c0c916a - templateId: - type: string - description: "The ID of the template to use in the render. If not provided,\ - \ the project default template will be used." - example: 0fade64c-588e-44c2-a9ea-d7435372cbfb - webhook: - $ref: "#/components/schemas/Webhook" - required: - - projectId - ProjectShareDto: - type: object - properties: - autoLatest: - type: boolean - description: "When true, the static link will automatically be updated with\ - \ the latest video for the given project and rendered template. Ignored\ - \ when `enabled` is `false`." - example: true - enabled: - type: boolean - description: If the static link sharing should be enabled for the project. - example: true - RenderAttributes: - description: User-defined attributes of the render. The field `batchRenderId` - is reserved and should be a string. The field `batchRenderSequenceNo` is reserved - and should be a number. Keys in this map must not contain dots. - example: "{\"author\": \"John\", \"batchRenderId\": \"render-id\"}" - RenderInfo: - type: object - properties: - error: - type: boolean - description: "The render is resulted to an error state, only `true` if `renderState=FAILED`\ - \ or `renderState=INVALID`." - finished: - type: boolean - description: If render is not pending. - renderId: - type: string - description: The id of the render that was used to produce the video. - renderState: - type: string - description: The current state of the render. - enum: - - PENDING - - THROTTLED - - QUEUED - - IN_PROGRESS - - DONE - - FAILED - - INVALID - - CANCELLED - success: - type: boolean - description: "The render is done successfully, only `true` if `renderState=DONE`." - required: - - renderId - - renderState - RenderOptionsDto: - type: object - properties: - options: - $ref: "#/components/schemas/ExtraOptions" - outputFormat: - $ref: "#/components/schemas/OutputFormatDto" - webhook: - $ref: "#/components/schemas/Webhook" - Resolution: - type: object - description: "Resolution of the rendered composition, and thus the video output." - properties: - height: - type: number - format: double - description: The height pixels of the resolution. - example: 1080 - minimum: 0 - width: - type: number - format: double - description: The width pixels of the resolution. - example: 1920 - minimum: 0 - RevisionUpdateDto: - type: object - description: Data for a the revision update. - discriminator: - mapping: - PRESENTER: "#/components/schemas/RevisionUpdateDto.Presenter" - SOCIAL_MEDIA: "#/components/schemas/RevisionUpdateDto.SocialMedia" - SUMMARY_SLIDESHOW: "#/components/schemas/RevisionUpdateDto.Summary" - propertyName: videoType - oneOf: - - $ref: "#/components/schemas/RevisionUpdateDto.Presenter" - - $ref: "#/components/schemas/RevisionUpdateDto.Summary" - - $ref: "#/components/schemas/RevisionUpdateDto.SocialMedia" - properties: - videoType: - type: string - required: - - videoType - RevisionUpdateDto.Presenter: - allOf: - - $ref: "#/components/schemas/RevisionUpdateDto" - - type: object - properties: - avatarOptions: - $ref: "#/components/schemas/AvatarOptions" - description: The avatar updates for the revision. - cta: - type: string - description: The call to action text at the end of the video. - logoUrl: - type: string - description: The logo to be used in the video. - scenes: - type: array - items: - $ref: "#/components/schemas/VideoScene" - minItems: 1 - description: Data for a presenter video type revision update. - required: - - avatarOptions - - scenes - RevisionUpdateDto.SocialMedia: - allOf: - - $ref: "#/components/schemas/RevisionUpdateDto" - - type: object - properties: - asset: - $ref: "#/components/schemas/StockAsset" - description: Stock asset to display in the video. - cta: - type: string - description: The call to action text at the end of the video. - heading: - type: string - description: Main heading of an article to use in the video. - logoUrl: - type: string - description: The logo of the news pr publishing company. - musicUrl: - type: string - description: The custom music cover to use in the video. - subheading: - type: string - description: Sub-heading of an article to use in the video. - description: Data for a social media video type revision update. - required: - - asset - - cta - - heading - - subheading - RevisionUpdateDto.Summary: - allOf: - - $ref: "#/components/schemas/RevisionUpdateDto" - - type: object - properties: - cta: - type: string - description: The call to action text at the end of the video. - logoUrl: - type: string - description: The logo to be used in the video. - scenes: - type: array - items: - $ref: "#/components/schemas/VideoScene" - minItems: 1 - voiceoverOptions: - $ref: "#/components/schemas/VoiceoverOptions" - description: The voiceover updates for the revision. - description: Data for a summary video type revision update. - required: - - scenes - - voiceoverOptions - Script: - type: object - description: Script to apply to the layer. - discriminator: - mapping: - COMPOSITION_SET_SIZE: "#/components/schemas/Script.CompositionActionSetSize" - CROP: "#/components/schemas/Script.TimeActionCrop" - EXTEND: "#/components/schemas/Script.TimeActionExtend" - IMAGE_SEQUENCE_LOADER: "#/components/schemas/Script.ImageSequenceLoader" - LAYER_MANAGEMENT: "#/components/schemas/Script.LayerManagement" - MEDIA_AUTO_SCALE: "#/components/schemas/Script.MediaAutoScale" - SCENE_MANAGEMENT: "#/components/schemas/Script.SceneManagement" - SET_DURATION: "#/components/schemas/Script.TimeActionSetDuration" - SHIFT_IN: "#/components/schemas/Script.TimeActionShiftIn" - SHIFT_OUT: "#/components/schemas/Script.TimeActionShiftOut" - SPREAD_LAYERS: "#/components/schemas/Script.TimeActionSpreadLayers" - STRETCH: "#/components/schemas/Script.TimeActionStretch" - TEXT_AUTO_SCALE: "#/components/schemas/TextAutoScaleScript" - TRIM_IN: "#/components/schemas/Script.TimeActionTrimIn" - TRIM_OUT: "#/components/schemas/Script.TimeActionTrimOut" - propertyName: scriptType - minLength: 1 - oneOf: - - $ref: "#/components/schemas/Script.ImageSequenceLoader" - - $ref: "#/components/schemas/Script.LayerManagement" - - $ref: "#/components/schemas/Script.MediaAutoScale" - - $ref: "#/components/schemas/TextAutoScaleScript" - - $ref: "#/components/schemas/Script.SceneManagement" - - $ref: "#/components/schemas/Script.TimeActionCrop" - - $ref: "#/components/schemas/Script.TimeActionExtend" - - $ref: "#/components/schemas/Script.TimeActionSetDuration" - - $ref: "#/components/schemas/Script.TimeActionShiftIn" - - $ref: "#/components/schemas/Script.TimeActionShiftOut" - - $ref: "#/components/schemas/Script.TimeActionSpreadLayers" - - $ref: "#/components/schemas/Script.TimeActionStretch" - - $ref: "#/components/schemas/Script.TimeActionTrimIn" - - $ref: "#/components/schemas/Script.TimeActionTrimOut" - - $ref: "#/components/schemas/Script.CompositionActionSetSize" - properties: - scriptType: - type: string - required: - - scriptType - Script.CompositionActionSetSize: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - height: - type: integer - format: int32 - description: Height of the composition. - example: 1080 - maximum: 30000 - width: - type: integer - format: int32 - description: Width of the composition. - example: 1920 - maximum: 30000 - description: Script for changing the size of the composition. - Script.ImageSequenceLoader: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - mandatory: - type: boolean - default: "false" - description: Whether there should be at least one image passed when rendering. - parameterName: - type: string - description: Name of the parameter that will be used to pass a list of - images. - pattern: "^[^.]+$" - description: "This script replaces existing audio, image, or video layers with\ - \ a video compiled from a list of images." - required: - - parameterName - Script.LayerManagement: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - parameterName: - type: string - description: Name of the parameter that will be used to pass data. - pattern: "^[^.]+$" - description: "This script replaces existing audio, image, or video layers with\ - \ a video compiled from a list of images." - required: - - parameterName - Script.MediaAutoScale: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - fill: - type: boolean - description: "If true, the media will be scaled to fill the original layer\ - \ size." - fixedRatio: - type: boolean - description: "If true, the media will be scaled to fit the original layer\ - \ size, but it will keep the original aspect ratio." - transform: - $ref: "#/components/schemas/Transform" - description: "Script for automatically scaling the media according to its layer\ - \ size. If you wish to use position property, make sure to wrap the media\ - \ layer into a composition before use. If not wrapped, the layer reposition\ - \ based on its nearest parent composition. Refer to the [manual](https://help.plainlyvideos.com/docs/user-guide/projects/templates/template-creation/scripting/media-auto-scale)\ - \ for more information." - Script.SceneManagement: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - headingLayerName: - type: string - default: heading - description: Name of the layer that contains the heading text. This layer - should exist in each composition that represents a heading. - headlineCompositionPrefix: - type: string - default: Headline - description: "Prefix for the headline composition names. If prefix equals\ - \ to `Headline`, it means that compositions that represent headlines\ - \ should be named `Headline 1-1`, `Headline 1-2`, `Headline 2-1`, etc.\ - \ The first number represents the scene, and the second number represents\ - \ the headline entry in the scene." - mainAssetLayerName: - type: string - default: asset - description: Name of the layer that contains the main asset. This layer - should exist in the composition where this script is applied. - maxHeadlines: - type: integer - format: int32 - default: "2" - description: Maximum number of headlines that exist in each scene. Note - that each headline can contain `heading` and `sub-heading`. - maxScenes: - type: integer - format: int32 - default: "10" - description: Maximum number of scenes that is contained in the container - composition. - mediaCompositionPrefix: - type: string - default: Media - description: "Prefix for the media composition names. If prefix equals\ - \ to `Media`, it means that compositions that contains the media asset\ - \ should be named `Media 1`, `Media 2`, `Media 3`, etc. The number represents\ - \ the scene where the composition is contained." - parameterName: - type: string - sceneAssetLayerName: - type: string - default: asset - description: Name of the layer that contains the scene asset. This layer - should exist in each composition that represents a scene. - sceneCompositionPrefix: - type: string - default: Scene - description: "Prefix for the scene composition names. If prefix equals\ - \ to `Scene`, it means that compositions that represent scenes should\ - \ be named `Scene 1`, `Scene 2`, etc." - sceneShiftOverlap: - type: integer - format: int32 - default: "0" - description: The overlap in frames to be applied in-between each scene. - This is useful if you want to have a better transition between scenes. - subHeadingLayerName: - type: string - default: sub-heading - description: Name of the layer that contains the sub-heading text. This - layer should exist in each composition that represents a sub-heading. - description: This is a special script that is applied on a composition that - represents a container of scenes. This script follows a naming convention - that is described in the documentation. - required: - - headingLayerName - - headlineCompositionPrefix - - mainAssetLayerName - - mediaCompositionPrefix - - sceneAssetLayerName - - sceneCompositionPrefix - Script.TimeActionCrop: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - compEndsAtOutPoint: - type: boolean - description: Crops the end of a parent composition to the out-point (end) - of this layer. - compStartsAtInPoint: - type: boolean - description: Crops the beginning of a parent composition to the in-point - (start) of this layer. - description: Script for cropping composition based on it's layer variable duration. - Script.TimeActionExtend: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - maxDuration: - type: number - format: double - description: Maximum duration for extended layer. - description: "Script for extending a layer out-point to match a full duration\ - \ of the source, regardless of parent composition duration." - Script.TimeActionSetDuration: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - duration: - type: number - format: double - description: New duration for a layer in seconds. - description: Script for changing the duration of a layer. - required: - - duration - Script.TimeActionShiftIn: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - shiftOverlap: - type: integer - format: int32 - description: The overlap of this layer and the target layer in frames. - shiftTarget: - type: string - description: Name of the layer that is a shift target. - shiftsTo: - type: string - description: |- - Where to shift this layer in-point (start). - * If the value is `in-point`, then it's shifted to the in-point (start) of the shift target. - * If the value is `out-point`, then it's shifted to the out-point (end) of the shift target. - pattern: in-point|out-point - description: Script for shifting the start of a layer based on the duration - of another layer in the same composition. - required: - - shiftTarget - - shiftsTo - Script.TimeActionShiftOut: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - shiftOverlap: - type: integer - format: int32 - description: The overlap of this layer and the target layer in frames. - shiftTarget: - type: string - description: Name of the layer that is a shift target. - shiftsTo: - type: string - description: |- - Where to shift this layer out-point (end). - * If the value is `in-point`, then it's shifted to the in-point (start) of the shift target. - * If the value is `out-point`, then it's shifted to the out-point (end) of the shift target. - pattern: in-point|out-point - description: Script for shifting the end of a layer based on the duration of - another layer in the same composition. - required: - - shiftTarget - - shiftsTo - Script.TimeActionSpreadLayers: - allOf: - - $ref: "#/components/schemas/Script" - description: Script for equally spreading replaced layers inside the same composition. - Script.TimeActionStretch: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - stretchOverlap: - type: integer - format: int32 - description: The overlap of this layer and the target layer in frames. - stretchTarget: - type: string - description: Name of the layer that is a stretch target. - stretchesTo: - type: string - description: |- - How long to stretch this layer. - * If the value is `in-point`, then it's stretched to the in-point (start) of the stretch target. - * If the value is `out-point`, then it's stretched to the out-point (end) of the stretch target. - * If the value is `end-of-comp`, then it's stretched to the end of the containing composition. - pattern: in-point|out-point|end-of-comp - description: Script for extending a layer duration based on the duration of - another layer in the same composition. - required: - - stretchesTo - Script.TimeActionTrimIn: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - trimOverlap: - type: integer - format: int32 - description: The overlap of this layer and the target layer in frames. - trimTarget: - type: string - description: Name of the layer that is a trim target. - trimsTo: - type: string - description: |- - How to trim this layer. - * If the value is `in-point`, then it's trimmed to the in-point (start) of the trim target. - * If the value is `out-point`, then it's trimmed to the out-point (end) of the trim target. - pattern: in-point|out-point - description: Script for decreasing a layer duration (trimming) based on the - duration of another layer in the same composition. - required: - - trimTarget - - trimsTo - Script.TimeActionTrimOut: - allOf: - - $ref: "#/components/schemas/Script" - - type: object - properties: - trimOverlap: - type: integer - format: int32 - description: The overlap of this layer and the target layer in frames. - trimTarget: - type: string - description: Name of the layer that is a trim target. - trimsTo: - type: string - description: |- - How to trim this layer. - * If the value is `in-point`, then it's trimmed to the in-point (start) of the trim target. - * If the value is `out-point`, then it's trimmed to the out-point (end) of the trim target. - pattern: in-point|out-point - description: Script for decreasing a layer duration (trimming) based on the - duration of another layer in the same composition. - required: - - trimTarget - - trimsTo - Scripting: - type: object - properties: - scripts: - type: array - description: List of scripts to apply to the layer. - items: - $ref: "#/components/schemas/Script" - minLength: 1 - required: - - scripts - SignedUrlFilePreview: - type: object - description: Signed URL file preview with expiration time. - properties: - expiresAt: - type: string - format: date-time - description: Expiration time of the signed URL. - example: 2025-10-01T12:00:00Z - link: - type: string - description: Link to the file preview. - example: https://example.com/media-preview.jpg - StockAsset: - type: object - description: Data for a the scene asset definition. - discriminator: - mapping: - manual: "#/components/schemas/StockAsset.Manual" - stock: "#/components/schemas/StockAsset.Stock" - propertyName: type - oneOf: - - $ref: "#/components/schemas/StockAsset.Manual" - - $ref: "#/components/schemas/StockAsset.Stock" - properties: - type: - type: string - required: - - type - StockAsset.Manual: - allOf: - - $ref: "#/components/schemas/StockAsset" - - type: object - properties: - assetType: - type: string - enum: - - IMAGE - - VIDEO - url: - type: string - description: Stock asset data containing custom stock asset provided by URL. - required: - - assetType - - url - StockAsset.Stock: - allOf: - - $ref: "#/components/schemas/StockAsset" - - type: object - properties: - out: - $ref: "#/components/schemas/StockAssetOut" - description: Stock asset data containing stock asset provided by a stock provider. - required: - - out - StockAssetIn: - type: object - description: The input for the stock asset search. - properties: - assetPreference: - type: string - description: The search preference. - enum: - - IMAGE - - VIDEO - - MIXED - automated: - type: boolean - description: If the asset was selected automatically using AI. - providers: - type: array - description: Limit the search to the explicit set of asset providers. If - `null` or empty all providers will be searched. - items: - type: string - enum: - - RF123 - - UNSPLASH - - PEXELS - query: - type: array - description: The query used to search for the asset. - items: - type: string - required: - - query - StockAssetOut: - type: object - description: The output of the stock asset search. - properties: - assetType: - type: string - description: The type of the asset. - enum: - - IMAGE - - VIDEO - duration: - type: number - format: double - description: "The duration of the asset in seconds, if it is a video. In\ - \ case of the image it is `null`." - height: - type: integer - format: int32 - description: The height of the asset in pixels. - id: - type: string - description: "The ID of the asset, given by the provider." - preview: - type: boolean - description: "If the asset is a preview, meaning that download of this asset\ - \ is needed to get the full resolution." - provider: - type: string - description: The provider of the asset. - enum: - - RF123 - - UNSPLASH - - PEXELS - query: - type: array - description: The query used to search for the asset. - items: - type: string - rank: - type: string - description: "The rank of the asset. The higher the rank, the better the\ - \ asset." - enum: - - LOW - - MEDIUM - - HIGH - - EXCEPTIONAL - thumb: - type: string - description: The thumbnail of the asset used for preview. Usually an image - in lower resolution or a video thumbnail. - url: - type: string - description: "The URL of the asset, usually a high resolution image or a\ - \ video. Can be `null` if asset is not free." - width: - type: integer - format: int32 - description: The width of the asset in pixels. - required: - - assetType - - id - - provider - - query - - rank - StockAssetSearch: - type: object - properties: - in: - $ref: "#/components/schemas/StockAssetIn" - outs: - type: array - description: List of found assets during the search. - items: - $ref: "#/components/schemas/StockAssetOut" - StockAssetSettings: - type: object - description: Defines preference for the types of assets used in the video - properties: - assetPreference: - type: string - description: "If videos should contain images, videos or both" - enum: - - IMAGE - - VIDEO - - MIXED - required: - - assetPreference - SummaryProviderSettings: - type: object - description: "Settings for the AI summary creation. This summary settings are\ - \ used to produce headlines, voice over and presenter scripts." - discriminator: - mapping: - CHAT_GPT: "#/components/schemas/SummaryProviderSettings.ChatGpt" - propertyName: type - oneOf: - - $ref: "#/components/schemas/SummaryProviderSettings.ChatGpt" - properties: - type: - type: string - required: - - type - SummaryProviderSettings.ChatGpt: - allOf: - - $ref: "#/components/schemas/SummaryProviderSettings" - - type: object - properties: - writingStyle: - type: string - description: |- - Optional, writing style to use when producing the summary. If not specified, a generic style will be used. For example: - > Please provide a comprehensive and well-sourced summary. Ensure the writing is in line with The New York Times' journalistic standards, tone, and clarity. - example: "Please provide a comprehensive and well-sourced summary. Ensure\ - \ the writing is in line with The New York Times' journalistic standards,\ - \ tone, and clarity." - description: Settings for the chat GPT summary provider. - TextAutoScaleScript: - allOf: - - $ref: "#/components/schemas/Script" - description: Script for automatically scaling the text layer based on its original - size. - Thumbnails: - type: object - description: "When specified, enables output of the video frames as PNG thumbnails.\ - \ Generated thumbnails would be available in addition to the video file. If\ - \ both frequencySeconds and atSeconds are specified, atSeconds takes precedence." - properties: - atSeconds: - type: array - description: Generated thumbnails would be PNG thumbnails based on specified - timestamps in seconds. - example: - - 1 - - 23 - - 5.55 - - 10 - items: - type: number - format: double - maxItems: 2147483647 - minItems: 1 - format: - type: string - default: PNG - description: Thumbnail format. - enum: - - PNG - - JPG - example: PNG - frequencySeconds: - type: integer - format: int32 - description: "Frequency in seconds to export a frame. For example, having\ - \ the value `frequencySeconds=5` and a rendered video that lasts `15 sec`,\ - \ would create 3 PNGs." - example: 5 - minimum: 1 - fromEncodedVideo: - type: boolean - description: "When set to true, the thumbnails will be generated from the\ - \ encoded video. If set to false, the thumbnails will be generated from\ - \ the video outputted by the After Effects rendering process." - Transform: - type: object - description: Transformation properties used to define custom size of the media - layer and/or its position inside of the based on the parent composition. - properties: - position: - $ref: "#/components/schemas/TransformPosition" - size: - $ref: "#/components/schemas/TransformSize" - TransformPosition: - type: object - description: "Specifies the position of the media layer, based on its parent\ - \ composition." - properties: - posX: - type: number - format: double - description: Position of the layer on the X axis. - example: 100 - posY: - type: number - format: double - description: Position of the layer on the Y axis. - example: 100 - TransformSize: - type: object - description: Specifies the dimensions of the media layer. - properties: - sizeX: - type: number - format: double - description: Width of the media layer. - example: 1920 - sizeY: - type: number - format: double - description: Height of the media layer. - example: 1080 - TwitterAppDto: - type: object - properties: - attributes: - type: object - $ref: "#/components/schemas/RenderAttributes" - additionalProperties: - type: object - colorPalette: - type: string - description: "The color palette identifier to use. If the provided palette\ - \ is not supported by the selected design, this parameter will be ignored." - enum: - - WHITE - - YELLOW - - GREEN - - GRAY - - BEIGE - - PINK - - CYAN - - ORANGE - - BLUE - - NAVY - - PURPLE - - RED - - BROWN - - BLACK - example: BLUE - designId: - type: string - $ref: "#/components/schemas/TwitterDesignIds" - description: |- - Id of the design to use. Only designs with category `TWITTER` can be used. If not provided a random design would be used. - - > NOTE: All available designs can be fetched using the [Designs](#tag/Designs) endpoint. - example: twitter-box@v1 - options: - $ref: "#/components/schemas/ExtraOptions" - outputFormat: - $ref: "#/components/schemas/OutputFormatDto" - parameters: - type: object - additionalProperties: - type: object - description: | - Optional map of additional parameters available in the app: - * `optionCommentsOff` (boolean) - Hides the amount of comments in a generated video. - * `optionLikesOff` (boolean) - Hides the amount of likes in a generated video. - * `optionRetweetsOff` (boolean) - Hides the amount of retweets in a generated video. - * `colorPrimary` (hex color as string) - Primary color, ignored if `colorPalette` is provided. - * `colorSecondary` (hex color as string) - Secondary color, ignored if `colorPalette` is provided. - * `colorTertiary` (hex color as string) - Tertiary color, ignored if `colorPalette` is provided. - example: - commentsOff: true - tweet: - type: string - description: The url of the tweet which data should be rendered in the video. - example: https://x.com/elonmusk/status/1593455727611215872 - twitterApiKey: - type: string - description: "The Twitter API key for a tweet data retrieval. Due to recent\ - \ changes in the Twitter API, we are unable to use our API keys. Rest\ - \ assured, your key will only be used for data retrieval purposes and\ - \ will not be stored." - example: AAAAAAAAAAAAAAAAAAAAAN9oigEAAAAApjmFTUMJ47korUsZKO9vjt2dEiE - variantId: - type: string - description: Variant id of the design to use. If not provided the default - variant would be used. - example: square - webhook: - $ref: "#/components/schemas/Webhook" - required: - - tweet - - twitterApiKey - TwitterDesignIds: - type: string - description: The ID of a design. - enum: - - twitter-bird@v1 - - twitter-box@v1 - - twitter-duotone@v1 - - twitter-dusty@v1 - - twitter-elegant@v1 - - twitter-industrial@v1 - UpdateBrandDto: - type: object - properties: - settings: - $ref: "#/components/schemas/BrandSettings" - required: - - settings - UpdateTemplateDto: - type: object - properties: - layers: - type: array - description: List of dynamically changed layers in this template. - items: - $ref: "#/components/schemas/ParametrizedLayer" - name: - type: string - description: The name of the template. - example: My template - renderingComposition: - type: string - description: The name of the composition to render in this template. - example: render-comp - renderingCompositionId: - type: integer - format: int64 - description: "The ID of the composition that will be rendered, as defined\ - \ by project metadata." - example: 123456 - required: - - layers - - name - - renderingComposition - - renderingCompositionId - VideoData.Presenter: - allOf: - - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject" - - type: object - properties: - revisions: - type: array - items: - $ref: "#/components/schemas/VideoRevision.Presenter" - minItems: 0 - settings: - $ref: "#/components/schemas/VideoSettings.Presenter" - description: Settings to be used for the video creation. - description: Data for a single presenter video type. - required: - - revisions - - settings - VideoData.SocialMedia: - allOf: - - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject" - - type: object - properties: - revisions: - type: array - items: - $ref: "#/components/schemas/VideoRevision.SocialMedia" - minItems: 0 - settings: - $ref: "#/components/schemas/VideoSettings.SocialMedia" - description: Settings to be used for the video creation. - description: Data for a single social media video type. - required: - - revisions - - settings - VideoData.Summary: - allOf: - - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject" - - type: object - properties: - revisions: - type: array - items: - $ref: "#/components/schemas/VideoRevision.Summary" - minItems: 0 - settings: - $ref: "#/components/schemas/VideoSettings.Summary" - description: Settings to be used for the video creation. - description: Data for a single summary video type. - required: - - revisions - - settings - VideoDataError: - type: object - description: The error that occurred while processing the video data. - properties: - code: - type: string - description: The error code. - enum: - - SUMMARY_FAILED - message: - type: string - description: The error message. - required: - - code - - message - VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject: - type: object - description: Data for a single article video. - discriminator: - mapping: - PRESENTER: "#/components/schemas/VideoData.Presenter" - SOCIAL_MEDIA: "#/components/schemas/VideoData.SocialMedia" - SUMMARY_SLIDESHOW: "#/components/schemas/VideoData.Summary" - propertyName: videoType - oneOf: - - $ref: "#/components/schemas/VideoData.Presenter" - - $ref: "#/components/schemas/VideoData.Summary" - - $ref: "#/components/schemas/VideoData.SocialMedia" - properties: - revisions: - type: array - items: - $ref: "#/components/schemas/VideoRevisionObject" - minItems: 0 - settings: - $ref: "#/components/schemas/VideoSettingsObject" - description: Settings to be used for the video creation. - videoDataError: - $ref: "#/components/schemas/VideoDataError" - description: The error that occurred while processing the video data. - videoType: - type: string - required: - - videoType - VideoRevision.Presenter: - type: object - description: A single revision of a presenter video type. - properties: - automated: - type: boolean - description: If the revision was created automatically from article and - brand inputs using AI. - avatar: - $ref: "#/components/schemas/Avatar" - description: The avatar for the presenter video. - clonedFrom: - type: string - description: The id of the revision that this revision was cloned from. - createdDate: - type: string - format: date-time - description: The date when revision was created. - cta: - type: string - description: The call to action text at the end of the video. - finalRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the final video render. - id: - type: string - description: The internal id of the revision. - lastModified: - type: string - format: date-time - description: The date when revision was last modified. - logoUrl: - type: string - description: The logo to be used in the video. - message: - type: string - description: "Human readable message about the state of the revision, usually\ - \ set only in error states." - previewRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the preview video render. - scenes: - type: array - items: - $ref: "#/components/schemas/VideoScene" - minItems: 1 - state: - type: string - description: | - The current state of the revision, where states represent: - * `DRAFT` - Editable revision data, video preview not yet available. - * `PREVIEW` - Revision with a preview video that contains assets with watermarks. - * `FINAL` - Final revision with a video that is ready for usage. - * `ERROR` - Denotes an error state for a revision. - * `PROCESSING` - Revision is in the process of preparing assets and rendering a video. - enum: - - DRAFT - - PREVIEW - - FINAL - - ERROR - - PROCESSING - required: - - avatar - - createdDate - - id - - lastModified - - scenes - - state - VideoRevision.SocialMedia: - type: object - description: A single revision of a social media video type. - properties: - asset: - $ref: "#/components/schemas/StockAsset" - description: Stock asset to display in the video. - automated: - type: boolean - description: If the revision was created automatically from article and - brand inputs using AI. - clonedFrom: - type: string - description: The id of the revision that this revision was cloned from. - createdDate: - type: string - format: date-time - description: The date when revision was created. - cta: - type: string - description: The call to action text at the end of the video. - finalRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the final video render. - heading: - type: string - description: Main heading of an article to use in the video. - id: - type: string - description: The internal id of the revision. - lastModified: - type: string - format: date-time - description: The date when revision was last modified. - logoUrl: - type: string - description: The logo of the news pr publishing company. - message: - type: string - description: "Human readable message about the state of the revision, usually\ - \ set only in error states." - musicUrl: - type: string - description: The custom music cover to use in the video. - previewRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the preview video render. - state: - type: string - description: | - The current state of the revision, where states represent: - * `DRAFT` - Editable revision data, video preview not yet available. - * `PREVIEW` - Revision with a preview video that contains assets with watermarks. - * `FINAL` - Final revision with a video that is ready for usage. - * `ERROR` - Denotes an error state for a revision. - * `PROCESSING` - Revision is in the process of preparing assets and rendering a video. - enum: - - DRAFT - - PREVIEW - - FINAL - - ERROR - - PROCESSING - subheading: - type: string - description: Sub-heading of an article to use in the video. - required: - - createdDate - - cta - - id - - lastModified - - state - VideoRevision.Summary: - type: object - description: A single revision of a summary video type. - properties: - automated: - type: boolean - description: If the revision was created automatically from article and - brand inputs using AI. - clonedFrom: - type: string - description: The id of the revision that this revision was cloned from. - createdDate: - type: string - format: date-time - description: The date when revision was created. - cta: - type: string - description: The call to action text at the end of the video. - finalRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the final video render. - id: - type: string - description: The internal id of the revision. - lastModified: - type: string - format: date-time - description: The date when revision was last modified. - logoUrl: - type: string - description: The logo to be used in the video. - message: - type: string - description: "Human readable message about the state of the revision, usually\ - \ set only in error states." - previewRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the preview video render. - scenes: - type: array - items: - $ref: "#/components/schemas/VideoScene" - minItems: 1 - state: - type: string - description: | - The current state of the revision, where states represent: - * `DRAFT` - Editable revision data, video preview not yet available. - * `PREVIEW` - Revision with a preview video that contains assets with watermarks. - * `FINAL` - Final revision with a video that is ready for usage. - * `ERROR` - Denotes an error state for a revision. - * `PROCESSING` - Revision is in the process of preparing assets and rendering a video. - enum: - - DRAFT - - PREVIEW - - FINAL - - ERROR - - PROCESSING - voiceover: - $ref: "#/components/schemas/Voiceover" - description: The voiceover for the summary slideshow. - required: - - createdDate - - id - - lastModified - - scenes - - state - - voiceover - VideoRevisionObject: - type: object - description: Revision of data for a single article video. - discriminator: - mapping: - PRESENTER: "#/components/schemas/VideoRevision.Presenter" - SOCIAL_MEDIA: "#/components/schemas/VideoRevision.SocialMedia" - SUMMARY_SLIDESHOW: "#/components/schemas/VideoRevision.Summary" - propertyName: videoType - oneOf: - - $ref: "#/components/schemas/VideoRevision.Presenter" - - $ref: "#/components/schemas/VideoRevision.Summary" - - $ref: "#/components/schemas/VideoRevision.SocialMedia" - properties: - automated: - type: boolean - description: If the revision was created automatically from article and - brand inputs using AI. - clonedFrom: - type: string - description: The id of the revision that this revision was cloned from. - createdDate: - type: string - format: date-time - description: The date when revision was created. - finalRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the final video render. - id: - type: string - description: The internal id of the revision. - lastModified: - type: string - format: date-time - description: The date when revision was last modified. - message: - type: string - description: "Human readable message about the state of the revision, usually\ - \ set only in error states." - previewRender: - $ref: "#/components/schemas/RenderInfo" - description: The information about the preview video render. - state: - type: string - description: | - The current state of the revision, where states represent: - * `DRAFT` - Editable revision data, video preview not yet available. - * `PREVIEW` - Revision with a preview video that contains assets with watermarks. - * `FINAL` - Final revision with a video that is ready for usage. - * `ERROR` - Denotes an error state for a revision. - * `PROCESSING` - Revision is in the process of preparing assets and rendering a video. - enum: - - DRAFT - - PREVIEW - - FINAL - - ERROR - - PROCESSING - videoType: - type: string - required: - - createdDate - - id - - lastModified - - state - - videoType - VideoScene: - type: object - properties: - asset: - $ref: "#/components/schemas/StockAsset" - description: The selected asset for the scene. - duration: - type: number - format: double - description: The duration of the scene in seconds. - headlines: - type: array - description: The headlines to be displayed in the scene. - items: - $ref: "#/components/schemas/ArticleVideoSceneHeadline" - manualAssetOverride: - type: boolean - description: If this scene has the manual asset override. - script: - type: string - description: "The script for the scene that will be used for the voiceover\ - \ or avatar creation. Pauses in the script are defined using pause markers.\ - \ For example, adding `[3s]` anywhere in the script will add a pause of\ - \ 3 seconds at that point." - suggestedAssets: - $ref: "#/components/schemas/StockAssetSearch" - description: The assets that are suggested for this scene by searching the - stock asset providers. - required: - - asset - - script - VideoSettings.Presenter: - allOf: - - $ref: "#/components/schemas/VideoSettingsObject" - - type: object - properties: - avatarProviderSettings: - $ref: "#/components/schemas/AvatarProviderSettings" - defaultCta: - type: string - description: Default call to action to use in the video. - example: READ MORE - defaultLogoUrl: - type: string - description: "Optional default logo URL to use in the video. If not specified,\ - \ the brand logo will be used by default." - example: https://www.nytimes.com/logo.png - stockAssetSettings: - $ref: "#/components/schemas/StockAssetSettings" - summaryProviderSettings: - $ref: "#/components/schemas/SummaryProviderSettings" - description: Settings for a presenter video type to be produced for each article. - required: - - avatarProviderSettings - - id - - projectId - - stockAssetSettings - - summaryProviderSettings - - targetLanguage - - templateId - VideoSettings.SocialMedia: - allOf: - - $ref: "#/components/schemas/VideoSettingsObject" - - type: object - properties: - defaultCta: - type: string - description: Default call to action to use in the video. - example: READ MORE - defaultLogoUrl: - type: string - description: "Optional default logo URL to use in the video. If not specified,\ - \ the brand logo will be used by default." - example: https://www.nytimes.com/logo.png - defaultMusic: - type: string - description: "Optional default audio URL to use in the video. If not specified,\ - \ the music is defined by the video template itself." - example: https://www.nytimes.com/music.mp3 - description: Settings for a social media video type to be produced for each - article. - required: - - defaultCta - - id - - projectId - - targetLanguage - - templateId - VideoSettings.Summary: - allOf: - - $ref: "#/components/schemas/VideoSettingsObject" - - type: object - properties: - defaultCta: - type: string - description: Default call to action to use in the video. - example: READ MORE - defaultLogoUrl: - type: string - description: "Optional default logo URL to use in the video. If not specified,\ - \ the brand logo will be used by default." - example: https://www.nytimes.com/logo.png - stockAssetSettings: - $ref: "#/components/schemas/StockAssetSettings" - summaryProviderSettings: - $ref: "#/components/schemas/SummaryProviderSettings" - voiceoverProviderSettings: - $ref: "#/components/schemas/VoiceoverProviderSettings" - description: Settings for a summary video type to be produced for each article. - required: - - id - - projectId - - stockAssetSettings - - summaryProviderSettings - - targetLanguage - - templateId - - voiceoverProviderSettings - VideoSettingsObject: - type: object - description: Settings for a video types to be produced for each article. - discriminator: - mapping: - PRESENTER: "#/components/schemas/VideoSettings.Presenter" - SOCIAL_MEDIA: "#/components/schemas/VideoSettings.SocialMedia" - SUMMARY_SLIDESHOW: "#/components/schemas/VideoSettings.Summary" - propertyName: videoType - oneOf: - - $ref: "#/components/schemas/VideoSettings.Presenter" - - $ref: "#/components/schemas/VideoSettings.Summary" - - $ref: "#/components/schemas/VideoSettings.SocialMedia" - properties: - design: - type: boolean - description: If the video uses design template or not. - enabled: - type: boolean - description: If the video creation is enabled. - id: - type: string - description: The internal id of the video type. - example: 1234567890 - projectId: - type: string - description: The id of the Plainly project to use for the video rendering. - targetLanguage: - type: string - description: The target language code in the produced video. Does not need - to be same as the default language of the brand. - example: en-US - templateId: - type: string - description: The id of the template of the Plainly project to use for the - video rendering. - videoType: - type: string - required: - - id - - projectId - - targetLanguage - - templateId - - videoType - Voiceover: - type: object - properties: - in: - $ref: "#/components/schemas/VoiceoverIn" - out: - $ref: "#/components/schemas/VoiceoverOut" - VoiceoverIn: - type: object - description: The input for the voiceover creation. - properties: - languageCode: - type: string - description: The language code for the voiceover. - paragraphs: - type: array - description: The paragraphs of the voiceover content. - items: - $ref: "#/components/schemas/VoiceoverInParagraph" - settings: - $ref: "#/components/schemas/VoiceoverProviderSettings" - description: The settings for the voiceover provider. - required: - - languageCode - - paragraphs - - settings - VoiceoverInParagraph: - type: object - description: A single paragraph of the voiceover content. - properties: - text: - type: string - description: The text to convert to voiceover. - required: - - text - VoiceoverOptions: - type: object - description: The options for the voiceover creation. - properties: - languageCode: - type: string - description: The language code for the voiceover. - settings: - $ref: "#/components/schemas/VoiceoverProviderSettings" - description: The settings for the voiceover provider. - required: - - languageCode - - settings - VoiceoverOut: - type: object - description: The output of the voiceover creation. - properties: - duration: - type: number - format: double - paragraphDurations: - type: array - description: The duration of each input paragraph in seconds. - items: - type: number - format: double - providerResponse: - type: object - additionalProperties: - type: object - description: The complete response from the voiceover service provider used. - url: - type: string - description: The URL of the voiceover audio. - required: - - paragraphDurations - - url - VoiceoverProviderSettings: - type: object - description: Settings for the AI voice over creation. The created voice will - be used as the audio in the video. - discriminator: - mapping: - GCP: "#/components/schemas/VoiceoverProviderSettings.Gcp" - propertyName: type - oneOf: - - $ref: "#/components/schemas/VoiceoverProviderSettings.Gcp" - properties: - type: - type: string - required: - - type - VoiceoverProviderSettings.Gcp: - allOf: - - $ref: "#/components/schemas/VoiceoverProviderSettings" - - type: object - properties: - audioConfigPitch: - type: number - format: double - description: "Optional speaking pitch, in the range [-20.0, 20.0]. 20\ - \ means increase 20 semitones from the original pitch. -20 means decrease\ - \ 20 semitones from the original pitch. See [AudioConfig](https://cloud.google.com/text-to-speech/docs/reference/rest/v1/AudioConfig)\ - \ for details." - maximum: 20 - minimum: -20 - audioConfigSpeakingRate: - type: number - format: double - description: "Optional, speaking rate/speed, in the range [0.25, 4.0].\ - \ 1.0 is the normal native speed supported by the specific voice. 2.0\ - \ is twice as fast, and 0.5 is half as fast. If unset, defaults to the\ - \ native 1.0 speed. See [AudioConfig](https://cloud.google.com/text-to-speech/docs/reference/rest/v1/AudioConfig)\ - \ for details." - maximum: 4 - minimum: 0 - voiceName: - type: string - description: "The name of the voice. If not set, the service will choose\ - \ a voice based on the other parameters such as video target language\ - \ and gender. See [available voices](https://cloud.google.com/text-to-speech/docs/voices)\ - \ for details." - example: ' en-US-News-K' - description: Settings for the GCP voiceover provider. - Watermark: - type: object - description: "When specified, creates an additional video with watermark." - properties: - encodingParamsLine: - type: string - description: "Additional ffmpeg command line parameters to change watermark\ - \ position, size, etc. If not specified, the watermark is placed at the\ - \ top left corner with opacity of 0.8." - example: "-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=10:10[out]\ - \ -map [out]" - url: - type: string - description: A public url to the watermark image or video. - example: https://example.com/watermark.png - required: - - url - Webhook: - type: object - description: |- - The webhook details passed when the rendering was initiated. When specified, the delivery on the provided webhook URL will be done automatically in the following fashion: - * A webhook HTTP(S) call expects a `2xx` status code in order to be marked as successful. - * In case of a failed delivery, Plainly will attempt to re-call your webhook for up to one day in space of 15 minutes. - * A webhook HTTP(S) request has a timeout of 30 seconds. - * A webhook HTTP(S) request does follow redirects. - properties: - onFailure: - type: boolean - default: "false" - description: Should webhook be called also on the failed renders. - onInvalid: - type: boolean - default: "null" - description: |- - Should webhook be called also on the invalid renders. - - > NOTE: If this parameter is `null` or unset, the value of the `onFailure` parameter will be used instead in order to decide if the webhook should be called on the invalid renders. - passthrough: - type: string - description: "Passthrough value for the webhook. Could be any string or\ - \ a render parameter reference in formats `{{parameterName}}` or `{{parameterName:defaultValue}}`,\ - \ including a reference to `{{integrationPassthrough}}` in the same manner." - url: - type: string - description: The HTTP(S) webhook URL to execute the `POST` call once the - rendering is finished. - example: https://hooks.zapier.com/hooks/catch/123456/abcdefg/ - required: - - url - WebhookDelivery: - type: object - properties: - deliveries: - type: array - description: List of all performed webhook deliveries for a specific render. - items: - $ref: "#/components/schemas/WebhookDelivery" - status: - type: string - description: Status of the webhook execution. - enum: - - PENDING - - RETRYING - - IGNORED - - FAILURE - - SUCCESS - WorkerAnalysisError: - description: "Optional, an error map in case project analysis fails." - oneOf: - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_UNABLE_TO_READ_PROJECT_FONTS - message: - description: Human-readable message that explains the error. - title: Reading fonts failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_UNABLE_TO_PARSE_PACKAGED_FONTS - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - fonts: - type: array - description: Font files that are not parsable. - example: "[\"font1.ttf\", \"font2.ttf\"]" - items: - type: string - title: Parsing fonts failed - - deprecated: true - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_DUPLICATED_FONTS_FOUND - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - fonts: - type: array - description: Fonts that have multiple font files.. - example: "[\"Roboto\", \"Roboto-Bold\"]" - items: - type: string - title: Duplicated fonts - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_FONTS_MISMATCH - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - extraFonts: - type: array - deprecated: true - description: Fonts that are not needed. - example: "[\"Serif\"]" - items: - type: string - missingFonts: - type: array - description: Fonts that are missing. - example: "[\"Roboto\", \"Roboto-Bold\"]" - items: - type: string - title: Missing fonts - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_UNSUPPORTED_AE_VERSION - message: - description: Human-readable message that explains the error. - title: Unsupported After Effects version - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_PROJECT_MISSING_FILES_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - missingFiles: - type: array - description: Files that are missing in the uploaded project. - example: "[\"image.png\", \"audio.mp3\"]" - items: - type: string - title: Missing project files - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_FATAL_ERROR - message: - description: Human-readable message that explains the error. - title: Script fatal error - - deprecated: false - properties: - code: - description: The error code. - enum: - - INFRASTRUCTURE_FAILURE - message: - description: Human-readable message that explains the error. - title: Infrastructure failure - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_AFTER_EFFECTS_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - log: - description: Log output of the After Effects process. - title: After Effects error - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_TIMEOUT - message: - description: Human-readable message that explains the error. - title: Timeout - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_DOWNLOAD_ASSET_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - urls: - type: array - description: URLs that failed to download. - example: "[\"https://example.com/image.png\"]" - items: - type: string - title: Download failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_IMPORT_ASSET_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - assets: - type: array - description: List of assets that failed to import. - example: "[{\"src\": \"https://example.com/image.jpg\", \"error\"\ - : \"After Effects error: The source compression type is not supported\"\ - , \"fileName\": \"jTiNVxWK2dwNDnztBcsQ.png\"}, {\"src\": \"https://example.com/video.mp4\"\ - , \"error\": \"After Effects error: The source file has bad header.\ - \ Please check that it is a valid file.\", \"fileName\": \"cDkAaWlndaMMsmuqmqbf\"\ - }]" - items: - type: object - properties: - error: - type: string - description: The error message for the asset. - fileName: - type: string - description: The asset file name on the local disk. - src: - type: string - description: The source URL of the asset. - title: Import failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FFMPEG_ENCODING_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - cmdArgs: - type: array - description: FFmpeg command arguments. - example: "[\"-i\", \"input.mp4\", \"-c:v\", \"libx264\", \"-crf\"\ - , \"23\", \"-c:a\", \"aac\", \"-b:a\", \"128k\", \"output.mp4\"]" - items: - type: string - log: - description: Log output of the FFmpeg process. - title: Encoding error - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FATAL_ERROR - message: - description: Human-readable message that explains the error. - title: Worker fatal error - - description: Generic error when the error is not covered by the specific error - codes. In versions prior to `0.14.0` all errors are reported in this format. - title: Generic error - WorkerRenderingError: - description: "Optional, an error map in case render state is `FAILED` or `INVALID`" - oneOf: - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_ACTION_WRONG_LAYER_TYPE - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - actionName: - description: The name of the script action. - correctLayerTypes: - type: array - description: The types of layers to which the script can be correctly - added. - items: - type: string - layerName: - description: The name of the layer to which the script is added. - title: Script incompatible layer - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_ROOT_COMP_NOT_ALLOWED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - actionName: - description: The name of the script action. - title: Script root unsupported - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_LAYER_NOT_FOUND - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - layerName: - description: The name of the layer to which the script is added. - parentComp: - description: The name of the parent composition where the layer should - exist. - title: Script non-existing layer - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_COMPOSITION_NOT_FOUND - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - compositionName: - description: The name of the composition to which the script is added. - title: Script non-existing composition - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_FONTS_INVALID - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - layers: - type: array - items: - type: object - description: List of layers with wrong fonts. - example: "[{\"compositionName\": \"Main\", \"layerName\": \"Text\ - \ 1\", \"layerId\": \"1\", \"text\": \"Hello\", \"font\": \"Arial\"\ - , \"fontLocation\": \"fonts/Arial.ttf\"}, {\"compositionName\"\ - : \"Main\", \"layerName\": \"Text 2\", \"layerId\": \"2\", \"\ - text\": \"World\", \"font\": \"AnotherFont\", \"fontLocation\"\ - : \"fonts/Another.otf\"}]" - properties: - compositionName: - type: string - description: The composition that contains the layer. - font: - type: string - description: The current font value of the layer. - fontLocation: - type: string - description: The location of the font file. - layerId: - type: string - description: The ID of the layer. - layerName: - type: string - description: The name of the layer. - text: - type: string - description: The text value of the layer. - title: Replace fonts failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_FATAL_ERROR - message: - description: Human-readable message that explains the error. - title: Script fatal error - - deprecated: false - properties: - code: - description: The error code. - enum: - - RENDER_INVALID - message: - description: Human-readable message that explains the error. - title: Invalid render - - deprecated: false - properties: - code: - description: The error code. - enum: - - INFRASTRUCTURE_FAILURE - message: - description: Human-readable message that explains the error. - title: Infrastructure failure - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_CONVERT_ASSETS_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - assets: - type: array - description: Assets that failed to be converted. - example: "[\"https://my.example.com/image1.heic\", \"https://my.example.com/image2.heic\"\ - ]" - items: - type: string - title: Failed to convert assets - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FONT_INSTALL_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - fonts: - type: array - description: Fonts that failed to be installed. - example: "[\"https://myserver/fonts/ArialMT.ttf\", \"https://myserver/fonts/another-one\"\ - ]" - items: - type: string - title: Failed to install fonts - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_AFTER_EFFECTS_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - log: - description: Log output of the After Effects process. - title: After Effects error - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_TIMEOUT - message: - description: Human-readable message that explains the error. - title: Timeout - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_DOWNLOAD_ASSET_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - urls: - type: array - description: URLs that failed to download. - example: "[\"https://example.com/image.png\"]" - items: - type: string - title: Download failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_IMPORT_ASSET_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - assets: - type: array - description: List of assets that failed to import. - example: "[{\"src\": \"https://example.com/image.jpg\", \"error\"\ - : \"After Effects error: The source compression type is not supported\"\ - , \"fileName\": \"jTiNVxWK2dwNDnztBcsQ.png\"}, {\"src\": \"https://example.com/video.mp4\"\ - , \"error\": \"After Effects error: The source file has bad header.\ - \ Please check that it is a valid file.\", \"fileName\": \"cDkAaWlndaMMsmuqmqbf\"\ - }]" - items: - type: object - properties: - error: - type: string - description: The error message for the asset. - fileName: - type: string - description: The asset file name on the local disk. - src: - type: string - description: The source URL of the asset. - title: Import failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FFMPEG_ENCODING_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - cmdArgs: - type: array - description: FFmpeg command arguments. - example: "[\"-i\", \"input.mp4\", \"-c:v\", \"libx264\", \"-crf\"\ - , \"23\", \"-c:a\", \"aac\", \"-b:a\", \"128k\", \"output.mp4\"]" - items: - type: string - log: - description: Log output of the FFmpeg process. - title: Encoding error - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FATAL_ERROR - message: - description: Human-readable message that explains the error. - title: Worker fatal error - - description: Generic error when the error is not covered by the specific error - codes. In versions prior to `0.14.0` all errors are reported in this format. - title: Generic error - WorkerUpgradeError: - description: "Optional, an error map in case project upgrade fails." - oneOf: - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_ANALYSIS_UNABLE_TO_UPGRADE_AE_VERSION - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - fromVersion: - description: The current project version. - toVersion: - description: The targeted project version. - title: Upgrade failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_SCRIPT_FATAL_ERROR - message: - description: Human-readable message that explains the error. - title: Script fatal error - - deprecated: false - properties: - code: - description: The error code. - enum: - - INFRASTRUCTURE_FAILURE - message: - description: Human-readable message that explains the error. - title: Infrastructure failure - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_AFTER_EFFECTS_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - log: - description: Log output of the After Effects process. - title: After Effects error - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_TIMEOUT - message: - description: Human-readable message that explains the error. - title: Timeout - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_DOWNLOAD_ASSET_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - urls: - type: array - description: URLs that failed to download. - example: "[\"https://example.com/image.png\"]" - items: - type: string - title: Download failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_IMPORT_ASSET_FAILED - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - assets: - type: array - description: List of assets that failed to import. - example: "[{\"src\": \"https://example.com/image.jpg\", \"error\"\ - : \"After Effects error: The source compression type is not supported\"\ - , \"fileName\": \"jTiNVxWK2dwNDnztBcsQ.png\"}, {\"src\": \"https://example.com/video.mp4\"\ - , \"error\": \"After Effects error: The source file has bad header.\ - \ Please check that it is a valid file.\", \"fileName\": \"cDkAaWlndaMMsmuqmqbf\"\ - }]" - items: - type: object - properties: - error: - type: string - description: The error message for the asset. - fileName: - type: string - description: The asset file name on the local disk. - src: - type: string - description: The source URL of the asset. - title: Import failed - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FFMPEG_ENCODING_ERROR - message: - description: Human-readable message that explains the error. - params: - description: Additional details. - properties: - cmdArgs: - type: array - description: FFmpeg command arguments. - example: "[\"-i\", \"input.mp4\", \"-c:v\", \"libx264\", \"-crf\"\ - , \"23\", \"-c:a\", \"aac\", \"-b:a\", \"128k\", \"output.mp4\"]" - items: - type: string - log: - description: Log output of the FFmpeg process. - title: Encoding error - - deprecated: false - properties: - code: - description: The error code. - enum: - - WORKER_FATAL_ERROR - message: - description: Human-readable message that explains the error. - title: Worker fatal error - - description: Generic error when the error is not covered by the specific error - codes. In versions prior to `0.14.0` all errors are reported in this format. - title: Generic error - securitySchemes: - ApiKey: - description: | - The API key is needed to authorize requests. You can get your API key in the [Settings](https://app.plainlyvideos.com/dashboard/user/settings) section of the Plainly Web App Dashboard. - To authorize use API key as username in the basic HTTP authentication, leaving the password empty. - For additional support you can contact us. - scheme: basic - type: http diff --git a/src/index.ts b/src/index.ts index c16af48..e30358a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,5 @@ +#!/usr/bin/env node + import { PlainlyMcpServer } from "./server"; import env from "./env"; diff --git a/tsconfig.json b/tsconfig.json index 168c65b..6390223 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,9 @@ "compilerOptions": { "target": "ES2022", "module": "ESNext", - "lib": ["ES2022"], + "lib": [ + "ES2022" + ], "moduleResolution": "node", "rootDir": "./src", "outDir": "./dist", @@ -20,8 +22,15 @@ "noFallthroughCasesInSwitch": true, "allowSyntheticDefaultImports": true, "isolatedModules": true, - "types": ["node"] + "types": [ + "node" + ] }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules", + "dist" + ] } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 65421d7..4cdbf7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -259,6 +259,21 @@ __metadata: languageName: node linkType: hard +"@plainly-videos/mcp-server@workspace:.": + version: 0.0.0-use.local + resolution: "@plainly-videos/mcp-server@workspace:." + dependencies: + "@modelcontextprotocol/sdk": "npm:^1.0.4" + "@types/node": "npm:^22.10.6" + axios: "npm:^1.12.2" + typescript: "npm:^5.7.3" + vite: "npm:^6.3.6" + zod: "npm:^3.25.76" + bin: + mcp-server: dist/index.js + languageName: unknown + linkType: soft + "@rollup/rollup-android-arm-eabi@npm:4.46.2": version: 4.46.2 resolution: "@rollup/rollup-android-arm-eabi@npm:4.46.2" @@ -1617,18 +1632,6 @@ __metadata: languageName: node linkType: hard -"plainly-mcp-server@workspace:.": - version: 0.0.0-use.local - resolution: "plainly-mcp-server@workspace:." - dependencies: - "@modelcontextprotocol/sdk": "npm:^1.0.4" - "@types/node": "npm:^22.10.6" - axios: "npm:^1.12.2" - typescript: "npm:^5.7.3" - vite: "npm:^6.3.6" - languageName: unknown - linkType: soft - "postcss@npm:^8.5.3": version: 8.5.6 resolution: "postcss@npm:8.5.6" @@ -2273,7 +2276,7 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.23.8": +"zod@npm:^3.23.8, zod@npm:^3.25.76": version: 3.25.76 resolution: "zod@npm:3.25.76" checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c