{ "openapi": "3.0.0", "info": { "title": "Illustrator API - Firefly Services", "description": "Illustrator API allows you to perform various operations with an Adobe Illustrator template. The API processes requests asynchronously.", "version": "1.0.0", "license": { "name": "Adobe Creative API License", "url": "https://www.adobe.com/content/dam/cc/en/legal/terms/enterprise/pdfs/PSLT-AdobeCreativeAPI-WW-2024v2.pdf" } }, "servers": [ { "url": "https://illustrator-api.adobe.io", "description": "Production endpoint." } ], "security": [ { "AccessToken": [], "X-Api-Key": [] } ], "tags": [ { "name": "Data Merge & Create Rendition", "description": "Data merge, create rendition, and shared job status for asynchronous Illustrator API jobs." }, { "name": "Custom Scripts", "description": "Submit and execute custom scripts for Illustrator automation. Supports comprehensive scripting capabilities for document manipulation and processing" } ], "paths": { "/v1/merge-data": { "post": { "tags": [ "Data Merge & Create Rendition" ], "operationId": "dataMerge", "summary": "Data merge", "description": "This endpoint allows you to merge variable data from a CSV file with an Adobe Illustrator template. The request is processed asynchronously and the status of the job can be checked using the status URL provided in the response. The output is provided as an array of individual files, one for each row in the CSV data. If some rows succeed and others fail or require rerun, the job completes with status `partially_succeeded` when you poll the status endpoint; that status applies only to Data Merge jobs.", "x-ffs-async-job": true, "x-ffs-job-status-fetcher": "facadeJobStatus", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataMergeRequest" }, "example": { "data": { "source": { "url": "https://your-bucket.s3.amazonaws.com/your-data.csv" } }, "template": { "source": { "url": "https://your-bucket.s3.amazonaws.com/your-template.ai" } }, "fontFiles": [ { "source": { "url": "https://your-bucket.s3.amazonaws.com/your-font.ttf" }, "mediaType": "font/ttf" } ], "settings": { "fontSettings": { "autoReduceFontSizeToFit": false, "minFontSize": 8, "fallBackFont": "Roboto-Thin" } }, "output": { "fileName": "your-output.pdf", "mediaType": "application/pdf" } } } } }, "responses": { "202": { "description": "Accepted", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "string" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "retry-after": { "description": "Indicates how long to wait before making a new request.", "schema": { "type": "string" } }, "link": { "description": "Provides a link to related resources.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobLinkResponse" }, "example": { "jobId": "f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4", "statusUrl": "https://illustrator-api-beta.adobe.io/v1/status/f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4" } } } }, "400": { "description": "Bad Request", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "string" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "invalid_json", "message": "Unexpected token 'a', ...\"ntSize\" : a\n }\n\"... is not valid JSON" } } } }, "401": { "description": "Unauthorized", "headers": { "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnauthorizedError" }, "example": { "title": "ErrInvalidOauthToken", "status": 401, "error_code": 401013, "message": "Oauth token is not valid" } } } }, "403": { "description": "Forbidden", "headers": { "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForbiddenError" }, "example": { "title": "ErrMissingAPIKey", "status": 403, "error_code": 403000, "message": "API key is missing" } } } }, "422": { "description": "Unprocessable Entity", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "string" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "validation_error", "validation_errors": [ "minFontSize must be a positive number", "minFontSize must be a number conforming to the specified constraints" ] } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } } } } }, "/v1/create-rendition": { "post": { "tags": [ "Data Merge & Create Rendition" ], "operationId": "createRendition", "summary": "Create rendition", "description": "This endpoint allows you to convert Adobe Illustrator files into various output formats. It supports conversion of .ai documents into multiple web- and print-ready formats. The request is processed asynchronously and the status of the job can be checked using the status URL provided in the response. The output is provided as a single converted file.", "x-ffs-async-job": true, "x-ffs-job-status-fetcher": "facadeJobStatus", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRenditionRequest" }, "example": { "input": { "source": { "url": "https://your-bucket.s3.amazonaws.com/your-document.ai" }, "mediaType": "application/illustrator" }, "output": { "mediaType": "application/pdf" }, "settings": { "documentLevel": 0, "artboardRange": "1-3", "resolution": 72 } } } } }, "responses": { "202": { "description": "Accepted", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "retry-after": { "description": "Indicates how long to wait before making a new request.", "schema": { "type": "integer" } }, "link": { "description": "Provides a link to related resources.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobLinkResponse" }, "example": { "jobId": "f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4", "statusUrl": "https://illustrator-api-beta.adobe.io/v1/status/f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4" } } } }, "400": { "description": "Bad Request", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "invalid_json", "message": "Expected ',' or '}' after property value in JSON at position 276" } } } }, "401": { "description": "Unauthorized", "headers": { "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LongJobError" }, "example": { "title": "ErrInvalidOauthToken", "status": 401, "error_code": 401013, "message": "Oauth token is not valid" } } } }, "403": { "description": "Forbidden", "headers": { "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "Indicates the software used by the origin server to handle the request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LongJobError" }, "example": { "title": "ErrMissingAPIKey", "status": 403, "error_code": 403000, "message": "API key is missing" } } } }, "422": { "description": "Unprocessable Entity", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "Indicates the software used by the origin server to handle the request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "validation_error", "validation_errors": [ "documentLevel must be one of the following values: 0, 1" ] } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "runtime_error", "message": "An unexpected error occurred while processing your request. Please retry or contact support if the issue persists." } } } } } } }, "/v1/status/{jobId}": { "get": { "tags": [ "Data Merge & Create Rendition" ], "operationId": "facadeJobStatus", "summary": "Retrieve job status", "description": "Retrieve the status of a job by providing the job ID. The job ID can be obtained from the response of other APIs. For all asynchronous jobs, polling this endpoint can return `running`, `succeeded`, or `failed`. The `partially_succeeded` status is returned only for Data Merge jobs when some CSV rows produce outputs while other rows fail or must be rerun after errors (for example, missing fonts). No other job types return the `partially_succeeded` status.
When `status` is `succeeded`, for Data Merge jobs each item in `outputs` includes a `row` field; For Create Rendition jobs, output items contain `destination` and `mediaType` only.", "x-ffs-status-fetcher": true, "x-ffs-job-name": "FacadeAsyncJob", "parameters": [ { "name": "jobId", "required": true, "in": "path", "description": "The job ID to retrieve the status of.", "schema": { "type": "string", "example": "f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4" } } ], "responses": { "200": { "description": "OK", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "string" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "retry-after": { "description": "Indicates how long to wait before making a new request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "Indicates the software used by the origin server to handle the request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/DataMergeJobApiResponse" }, { "$ref": "#/components/schemas/CreateRenditionJobApiResponse" }, { "$ref": "#/components/schemas/JobStatusPollPayload" }, { "$ref": "#/components/schemas/DataMergeJobFailedResponse" }, { "$ref": "#/components/schemas/DataMergeJobPartiallySucceededResponse" } ] }, "examples": { "succeeded_create_rendition": { "summary": "Status: Succeeded (Create Rendition)", "value": { "jobId": "6f35a027-c578-41e6-9e53-034424c69d14", "status": "succeeded", "outputs": [ { "destination": { "url": "https://example.com/output2.pdf" }, "mediaType": "application/pdf" } ] } }, "succeeded_data_merge": { "summary": "Status: Succeeded (Data Merge)", "value": { "jobId": "856745ce-816e-476b-b517-debd9fd91e3b", "status": "succeeded", "outputs": [ { "row": 1, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "image/png" }, { "row": 2, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "image/png" }, { "row": 3, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "image/png" } ] } }, "running": { "summary": "Status: Running", "value": { "jobId": "48db6300-1cc5-4a31-84f6-5092fbd67484", "status": "running", "Retry-After": "1" } }, "failed": { "summary": "Status: Failed", "value": { "jobId": "ef4f7daa-0d09-4dcf-9884-029bb7f374ac", "status": "failed", "error_code": "runtime_error", "message": "Missing fonts detected: Chabplan-Rg. Please provide font files." } }, "partially_succeeded": { "summary": "Status: Partially Succeeded (Data Merge only)", "value": { "jobId": "1dd551c5-6023-4ff9-b736-bc27b36cbb7f", "status": "partially_succeeded", "outputs": [ { "row": 135, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "application/pdf" }, { "row": 136, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "application/pdf" }, { "row": 137, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "application/pdf" }, { "row": 138, "destination": { "url": "{your_presigned_get_url}" }, "mediaType": "application/pdf" } ], "errors": [ { "row": 47, "error_code": "runtime_error", "message": "Missing fonts detected: Chabplan-Rg. Please provide font files." }, { "row": 113, "error_code": "runtime_error", "message": "Missing fonts detected: Chabplan-Rg. Please provide font files." }, { "row": 211, "error_code": "runtime_error", "message": "Missing fonts detected: Chabplan-Rg. Please provide font files." }, { "row": 427, "error_code": "runtime_error", "message": "Missing fonts detected: Chabplan-Rg. Please provide font files." } ], "needsRerun": [ { "rowRange": { "start": 1, "end": 67 } }, { "rowRange": { "start": 68, "end": 134 } }, { "rowRange": { "start": 202, "end": 268 } }, { "rowRange": { "start": 403, "end": 469 } } ] } } } } } }, "401": { "description": "Unauthorized", "headers": { "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "Indicates the software used by the origin server to handle the request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LongJobError" }, "example": { "title": "ErrInvalidOauthToken", "status": 401, "error_code": 401013, "message": "Oauth token is not valid" } } } }, "403": { "description": "Forbidden", "headers": { "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "integer" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "Indicates the software used by the origin server to handle the request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LongJobError" }, "example": { "title": "ErrMissingAPIKey", "status": 403, "error_code": 403000, "message": "API key is missing" } } } }, "404": { "description": "Not Found", "headers": { "access-control-allow-headers": { "description": "Indicates which headers can be used during the actual request.", "schema": { "type": "string" } }, "access-control-allow-methods": { "description": "Indicates which HTTP methods are allowed when accessing the resource.", "schema": { "type": "string" } }, "access-control-expose-headers": { "description": "Indicates which headers can be exposed as part of the response.", "schema": { "type": "string" } }, "access-control-allow-origin": { "description": "Indicates whether the response can be shared with requesting code from the given origin.", "schema": { "type": "string" } }, "access-control-max-age": { "description": "Indicates how long the results of a preflight request can be cached.", "schema": { "type": "string" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "content-type": { "description": "Indicates the media type of the resource.", "schema": { "type": "string" } }, "content-length": { "description": "Indicates the size of the response body in bytes.", "schema": { "type": "string" } }, "date": { "description": "Indicates the date and time at which the message was originated.", "schema": { "type": "string" } }, "server": { "description": "Indicates the software used by the origin server to handle the request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "unknown_job_id", "message": "Job ID does not exist." } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" }, "example": { "error_code": "runtime_error", "message": "An unexpected error occurred while processing your request. Please retry or contact support if the issue persists." } } } } } } }, "/run-scripts": { "post": { "tags": [ "Custom Scripts" ], "operationId": "registerCustomScriptCapability", "summary": "Submit a Custom Script", "x-ffs-cxp-ui-group": "customScriptRegisterAndExecute", "description": "Submits custom script bundles for registration. Returns a URL for posting execution requests for the registered script.", "servers": [ { "url": "https://illustrator.adobe.io/beta", "description": "Beta production" } ], "security": [ { "AccessToken": [], "X-Api-Key": [] } ], "requestBody": { "required": true, "description": "The custom script bundle, in `multipart/form-data`. The ZIP is required and must describe the script to the CXP app engine (see the `file` part schema).", "content": { "multipart/form-data": { "schema": { "type": "object", "description": "The custom script bundle, in ZIP format. This package describes the script to the app engine.", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary", "description": "The custom script bundle, in ZIP format. Required contents: `main.jsx` (ExtendScript with `main()` entry point) and `manifest.json` (capability metadata)." } } } } } }, "responses": { "202": { "description": "Accepted", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CapabilityRegistrationResponse" }, "example": { "url": "https://illustrator.adobe.io/beta/v3//", "capability": "", "version": "" } } } }, "400": { "description": "Bad Parameter", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "401": { "description": "Unauthorized", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "403": { "description": "Forbidden", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "404": { "description": "Not Found", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "500": { "description": "Internal Server Error", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } } } } }, "/v3/{orgId}/{capabilityName}": { "post": { "tags": [ "Custom Scripts" ], "operationId": "executeCustomScriptCapability", "summary": "Submit a custom script execution request", "x-ffs-cxp-ui-group": "customScriptRegisterAndExecute", "description": "Submits execution requests for custom scripts. Defines input assets and parameters that the custom script will use during execution.", "x-ffs-async-job": true, "x-ffs-job-status-fetcher": "customScriptsJobStatus", "servers": [ { "url": "https://illustrator.adobe.io/beta", "description": "Beta production" } ], "security": [ { "AccessToken": [], "X-Api-Key": [] } ], "parameters": [ { "name": "orgId", "in": "path", "required": true, "description": "Path segment for the org or scope, as in the `url` returned in the custom script **Submit a Custom Script** response (same role as a script scope identifier in other Custom Scripts products).", "schema": { "type": "string" } }, { "name": "capabilityName", "in": "path", "required": true, "description": "The name of the custom script, specified in the custom script `manifest.json` and registration response (same idea as a script name in custom script manifest-based APIs).", "schema": { "type": "string" } } ], "requestBody": { "required": true, "description": "This job request object specifies parameters for the execution of the custom script.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptExecuteRequest" }, "example": { "assets": [ { "source": { "url": "" }, "destination": "template.ai" } ], "params": { "targetDocument": "template.ai", "outputPath": "" } } } } }, "responses": { "202": { "description": "The job has been accepted for processing.", "headers": { "link": { "description": "The status URL for a retry.", "schema": { "type": "string" } }, "retry-after": { "description": "The number of seconds until the user should try again.", "schema": { "type": "integer" } }, "Content-Type": { "description": "The type of content that is returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptExecuteResponse" }, "example": { "jobId": "", "statusUrl": "https://illustrator.adobe.io/beta/v3/status/" } } } }, "400": { "description": "Bad Parameter", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "401": { "description": "Unauthorized", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "403": { "description": "Forbidden", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "404": { "description": "Not Found", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "500": { "description": "Internal Server Error", "headers": { "Content-Type": { "description": "The type of content returned (e.g., application/json).", "schema": { "type": "string" } }, "Content-Length": { "description": "The length of the response content.", "schema": { "type": "integer" } }, "Access-Control-Allow-Origin": { "description": "The Cross Origin Resource Sharing (CORS) header.", "schema": { "type": "string" } }, "Access-Control-Allow-Methods": { "description": "This header indicates what HTTP methods are allowed.", "schema": { "type": "string" } }, "Access-Control-Allow-Headers": { "description": "This indicates which HTTP headers can be used during the actual request.", "schema": { "type": "string" } }, "Access-Control-Allow-Credentials": { "description": "This header is used by servers to indicate that the client shall share HTTP responses.", "schema": { "type": "string" } }, "Access-Control-Max-Age": { "description": "This indicates how long the results of a preflight request can be cached.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } } } } }, "/v3/status/{jobId}": { "get": { "tags": [ "Custom Scripts" ], "operationId": "customScriptsJobStatus", "summary": "Retrieve job status", "description": "Poll execution status for a Custom Scripts job. On success, `outputs` contains presigned download URLs. This endpoint is separate from `/v1/status/{jobId}` (Data Merge and Create Rendition).", "x-ffs-status-fetcher": true, "x-ffs-job-name": "CxpCustomScriptAsyncJob", "servers": [ { "url": "https://illustrator.adobe.io/beta", "description": "Beta production" } ], "security": [ { "AccessToken": [], "X-Api-Key": [] } ], "parameters": [ { "name": "jobId", "in": "path", "required": true, "description": "Job ID returned from execute capability.", "schema": { "type": "string", "example": "ee45451e-3a84-4a81-aa21-7f00aa3302a4" } } ], "responses": { "200": { "description": "OK", "headers": { "Content-Type": { "description": "Media type of the response.", "schema": { "type": "string", "example": "application/json" } }, "x-request-id": { "description": "Unique identifier for the request.", "schema": { "type": "string" } }, "x-cxp-version": { "description": "CXP platform version.", "schema": { "type": "string" } }, "x-cxp-environment": { "description": "CXP environment", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CustomScriptJobSucceededResponse" }, { "$ref": "#/components/schemas/CustomScriptJobRunningResponse" }, { "$ref": "#/components/schemas/CustomScriptJobFailedResponse" } ] }, "examples": { "succeeded": { "summary": "Execution Success", "value": { "jobId": "", "timestamp": "", "status": "succeeded", "data": { "conversionDetails": { "inputFile": "", "outputFolder": "", "success": true } }, "outputs": [ { "destination": { "url": "" }, "source": "" } ] } }, "running": { "summary": "Execution Running", "value": { "jobId": "", "timestamp": "", "status": "running" } }, "failed": { "summary": "Execution Failed", "value": { "jobId": "", "timestamp": "", "status": "failed", "errors": [ { "message": "" } ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptJobNotFoundResponse" }, "example": { "message": "JobId ee45451e-3a84-4a81-aa21-7f00aa3302a4 not found", "errorCode": "not_found" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomScriptApiError" } } } } } } } }, "components": { "securitySchemes": { "AccessToken": { "type": "http", "scheme": "bearer", "description": "The Adobe-generated access token, S2S format." }, "X-Api-Key": { "type": "apiKey", "name": "x-api-key", "in": "header", "description": "The client ID for authentication." } }, "schemas": { "DataMergeSourceUrl": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL pointing to the resource. Only the following allow-listed domains can be used: amazonaws.com, windows.net, dropboxusercontent.com, assets.frame.io, storage.googleapis.com.", "example": "https://your-bucket.s3.amazonaws.com/your-file.csv" } }, "required": [ "url" ] }, "DataMergeData": { "type": "object", "properties": { "source": { "description": "The source containing the CSV file with variable data. The media type defaults to `text/csv`.", "allOf": [ { "$ref": "#/components/schemas/DataMergeSourceUrl" } ] } }, "required": [ "source" ] }, "DataMergeTemplate": { "type": "object", "properties": { "source": { "description": "The source containing the Adobe Illustrator template file.", "allOf": [ { "$ref": "#/components/schemas/DataMergeSourceUrl" } ] } }, "required": [ "source" ] }, "DataMergeFontFileMediaType": { "type": "string", "description": "The media type of the font file. Supports font/ttf and font/otf.", "enum": [ "font/ttf", "font/otf" ] }, "DataMergeFontFile": { "type": "object", "properties": { "source": { "description": "The source containing the font file.", "allOf": [ { "$ref": "#/components/schemas/DataMergeSourceUrl" } ] }, "mediaType": { "$ref": "#/components/schemas/DataMergeFontFileMediaType" } }, "required": [ "source", "mediaType" ] }, "DataMergeFontSettings": { "type": "object", "properties": { "autoReduceFontSizeToFit": { "type": "boolean", "description": "Automatically reduce font size to fit text within text boxes. Defaults to false if not specified.", "default": false }, "minFontSize": { "type": "number", "description": "Minimum font size (in points) when `autoReduceFontSizeToFit` is enabled. Must be a positive number.", "example": 8 }, "fallBackFont": { "type": "string", "description": "A case-sensitive PostScript font name (like Roboto-Thin, Oxygen, or SourceSansPro-Bold) to use as a fallback when the fonts are missing in the template file.", "example": "Roboto-Thin" } } }, "DataMergeSettings": { "type": "object", "properties": { "fontSettings": { "description": "Settings for font handling during the merge operation.", "allOf": [ { "$ref": "#/components/schemas/DataMergeFontSettings" } ] } } }, "DataMergeOutputMediaType": { "type": "string", "description": "The desired output media type for the merged documents.", "enum": [ "image/png", "image/jpeg", "application/pdf", "image/svg+xml", "application/illustrator", "application/eps" ] }, "DataMergeOutputSpec": { "type": "object", "properties": { "fileName": { "type": "string", "description": "The output file name. May or may not have an extension. It is recommended to provide with extension (e.g., 'result.png', 'output.pdf').", "example": "your-output.pdf" }, "mediaType": { "$ref": "#/components/schemas/DataMergeOutputMediaType" } }, "required": [ "fileName", "mediaType" ] }, "DataMergeRequest": { "type": "object", "properties": { "data": { "description": "The data source containing variable data. Must be a CSV file.", "allOf": [ { "$ref": "#/components/schemas/DataMergeData" } ] }, "template": { "description": "The template source (Adobe Illustrator file).", "allOf": [ { "$ref": "#/components/schemas/DataMergeTemplate" } ] }, "fontFiles": { "description": "Optional array of font files to be used in the template. Supports .ttf and .otf font formats.", "type": "array", "items": { "$ref": "#/components/schemas/DataMergeFontFile" } }, "settings": { "description": "Settings for the data merge operation.", "allOf": [ { "$ref": "#/components/schemas/DataMergeSettings" } ] }, "output": { "description": "Output specification for the merge operation with file name and media type.", "allOf": [ { "$ref": "#/components/schemas/DataMergeOutputSpec" } ] } }, "required": [ "data", "template", "output" ] }, "JobLinkResponse": { "type": "object", "properties": { "jobId": { "type": "string", "description": "The job ID.", "example": "f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4" }, "statusUrl": { "type": "string", "description": "The status URL.", "example": "https://illustrator-api-beta.adobe.io/v1/status/f246bc8a-45ef-4cdc-8217-6c1ab74c5dc4" } }, "required": [ "jobId", "statusUrl" ] }, "JobError": { "type": "object", "properties": { "error_code": { "type": "string", "description": "The error code.", "example": "validation_error" }, "message": { "type": "string", "description": "The error message.", "example": "Invalid request payload. Check validation_errors for details." }, "validation_errors": { "description": "An array of various validation errors.", "type": "array", "items": { "type": "string" } } }, "required": [ "error_code" ] }, "UnauthorizedError": { "type": "object", "properties": { "title": { "type": "string", "description": "The error title.", "example": "ErrInvalidOauthToken" }, "status": { "type": "integer", "description": "The HTTP status code." }, "error_code": { "type": "integer", "description": "The error code." }, "message": { "type": "string", "description": "The error message.", "example": "Oauth token is not valid" } }, "required": [ "status", "error_code" ] }, "ForbiddenError": { "type": "object", "properties": { "title": { "type": "string", "description": "The error title.", "example": "ErrMissingAPIKey" }, "status": { "type": "integer", "description": "The HTTP status code." }, "error_code": { "type": "integer", "description": "The error code." }, "message": { "type": "string", "description": "The error message.", "example": "API key is missing" } }, "required": [ "status", "error_code" ] }, "LongJobError": { "type": "object", "properties": { "title": { "type": "string", "description": "The error title.", "example": "ErrInvalidOauthToken" }, "status": { "type": "integer", "description": "The HTTP status code." }, "error_code": { "type": "integer", "description": "The error code." }, "message": { "type": "string", "description": "The error message.", "example": "Oauth token is not valid" } }, "required": [ "status", "error_code" ] }, "JobStatus": { "type": "string", "description": "The job status.", "enum": [ "running", "failed", "succeeded" ] }, "DataMergeOutputDestination": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL to the output file.", "example": "https://output-bucket.s3.amazonaws.com/merge-results/row-1.pdf" } }, "required": [ "url" ] }, "DataMergeJobApiResponse": { "type": "object", "title": "Succeeded (Data Merge)", "description": "Returned when a Data Merge job completes successfully. Each output includes the CSV row index.", "properties": { "status": { "type": "string", "description": "The job status.", "enum": [ "succeeded" ] }, "jobId": { "type": "string", "description": "The job ID.", "example": "ef4f7daa-0d09-4dcf-9884-029bb7f374ac" }, "outputs": { "description": "Array of output files from the data merge operation, one per CSV row.", "type": "array", "items": { "$ref": "#/components/schemas/DataMergeOutputWithRow" } } }, "required": [ "status", "jobId", "outputs" ] }, "JobStatusPollPayload": { "type": "object", "title": "Running", "description": "Returned while the job is still processing. Poll again after the interval indicated by `Retry-After`.", "properties": { "status": { "description": "The job status.", "allOf": [ { "$ref": "#/components/schemas/JobStatus" }, { "enum": [ "running" ] } ] }, "jobId": { "type": "string", "description": "The job ID.", "example": "48db6300-1cc5-4a31-84f6-5092fbd67484" }, "Retry-After": { "type": "string", "description": "Suggested number of seconds to wait before sending another request to this endpoint.", "example": "1" } }, "required": [ "status", "jobId", "Retry-After" ], "additionalProperties": false }, "DataMergeJobFailedResponse": { "type": "object", "title": "Failed", "properties": { "jobId": { "type": "string", "description": "The job ID.", "example": "ef4f7daa-0d09-4dcf-9884-029bb7f374ac" }, "status": { "type": "string", "enum": [ "failed" ], "description": "The job status." }, "error_code": { "type": "string", "description": "The error code.", "example": "runtime_error" }, "message": { "type": "string", "description": "The error message.", "example": "Missing fonts detected: Chabplan-Rg. Please provide font files." } }, "required": [ "jobId", "status", "error_code", "message" ] }, "DataMergeRowRange": { "type": "object", "description": "An inclusive range of CSV row indices.", "properties": { "start": { "type": "integer", "description": "The start row index for the range." }, "end": { "type": "integer", "description": "The end row index for the range." } }, "required": [ "start", "end" ] }, "DataMergeNeedsRerunItem": { "type": "object", "description": "A row range that must be rerun after errors are resolved.", "properties": { "rowRange": { "description": "The inclusive range of CSV rows to reprocess.", "allOf": [ { "$ref": "#/components/schemas/DataMergeRowRange" } ] } }, "required": [ "rowRange" ] }, "DataMergePartialSuccessError": { "type": "object", "description": "An error for a specific CSV row when the job completes with partial success.", "properties": { "row": { "type": "integer", "description": "The CSV row index where the error occurred." }, "error_code": { "type": "string", "description": "The error code for this row.", "example": "runtime_error" }, "message": { "type": "string", "description": "The error message for this row.", "example": "Missing fonts detected: Chabplan-Rg. Please provide font files." } }, "required": [ "row", "error_code", "message" ] }, "DataMergeOutputWithRow": { "type": "object", "description": "A merged output file for a specific CSV row.", "properties": { "row": { "type": "integer", "description": "The CSV row index for this output." }, "destination": { "description": "Details of the location where the output is located.", "allOf": [ { "$ref": "#/components/schemas/DataMergeOutputDestination" } ] }, "mediaType": { "type": "string", "description": "Media type of the output.", "example": "application/pdf" } }, "required": [ "row", "destination", "mediaType" ], "additionalProperties": false }, "DataMergeJobPartiallySucceededResponse": { "type": "object", "title": "Partially Succeeded", "description": "Returned ONLY FOR DATA MERGE jobs when some rows produced outputs while others failed or require rerun. Other job types do not use this status.", "properties": { "jobId": { "type": "string", "description": "The job ID.", "example": "1dd551c5-6023-4ff9-b736-bc27b36cbb7f" }, "status": { "type": "string", "enum": [ "partially_succeeded" ], "description": "The job status." }, "outputs": { "type": "array", "description": "Output files produced for successfully merged rows.", "items": { "$ref": "#/components/schemas/DataMergeOutputWithRow" } }, "errors": { "type": "array", "description": "Per-row errors for rows that did not produce outputs.", "items": { "$ref": "#/components/schemas/DataMergePartialSuccessError" } }, "needsRerun": { "type": "array", "description": "Row ranges that must be rerun after addressing errors (for example, missing fonts).", "items": { "$ref": "#/components/schemas/DataMergeNeedsRerunItem" } } }, "required": [ "jobId", "status", "outputs", "errors", "needsRerun" ] }, "CreateRenditionSourceUrl": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL pointing to the Adobe Illustrator file. Only the following allow-listed domains can be used: amazonaws.com, windows.net, dropboxusercontent.com, assets.frame.io, storage.googleapis.com.", "example": "https://your-bucket.s3.amazonaws.com/your-document.ai" } }, "required": [ "url" ] }, "CreateRenditionSourceMediaType": { "type": "string", "description": "The media type of the source file.", "enum": [ "application/illustrator" ] }, "CreateRenditionInput": { "type": "object", "properties": { "source": { "description": "The source containing the Adobe Illustrator file.", "allOf": [ { "$ref": "#/components/schemas/CreateRenditionSourceUrl" } ] }, "mediaType": { "description": "The media type of the source file. Optional, defaults to application/illustrator.", "allOf": [ { "$ref": "#/components/schemas/CreateRenditionSourceMediaType" } ] } }, "required": [ "source" ] }, "CreateRenditionOutputMediaType": { "type": "string", "description": "The desired output media type for the converted file.", "enum": [ "image/png", "image/jpeg", "image/webp", "image/svg+xml", "application/pdf", "application/eps" ] }, "CreateRenditionOutputSpec": { "type": "object", "properties": { "mediaType": { "$ref": "#/components/schemas/CreateRenditionOutputMediaType" } }, "required": [ "mediaType" ] }, "CreateRenditionSettings": { "type": "object", "properties": { "documentLevel": { "type": "number", "description": "Document level - 0 for artboard level, 1 for document level", "enum": [ 0, 1 ] }, "artboardRange": { "type": "string", "description": "Artboard range to export (e.g., '1-3', '1,2,5'). Required when documentLevel is 0.", "example": "1-3" }, "resolution": { "type": "number", "description": "Resolution in DPI (dots per inch) for the output. Must be an integer between 4 and 2400 for PNG and JPEG formats. Defaults to 72. Not applicable for other formats (PDF, EPS, SVG, or WEBP).", "minimum": 4, "maximum": 2400, "default": 72 } }, "required": [ "documentLevel" ] }, "CreateRenditionRequest": { "type": "object", "properties": { "input": { "description": "The input object containing source and media type.", "allOf": [ { "$ref": "#/components/schemas/CreateRenditionInput" } ] }, "output": { "description": "Output specification for the rendition operation with desired media type.", "allOf": [ { "$ref": "#/components/schemas/CreateRenditionOutputSpec" } ] }, "settings": { "description": "Settings for controlling the rendition process.", "allOf": [ { "$ref": "#/components/schemas/CreateRenditionSettings" } ] } }, "required": [ "input", "output", "settings" ] }, "CreateRenditionOutputDestination": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL to the output file.", "example": "https://output-bucket.s3.amazonaws.com/rendition-output.pdf" } }, "required": [ "url" ] }, "CreateRenditionOutput": { "type": "object", "properties": { "destination": { "description": "Details of the location where the output is located.", "allOf": [ { "$ref": "#/components/schemas/CreateRenditionOutputDestination" } ] }, "mediaType": { "type": "string", "description": "Media type of the output.", "example": "application/pdf" } }, "required": [ "destination", "mediaType" ], "additionalProperties": false }, "CreateRenditionJobApiResponse": { "type": "object", "title": "Succeeded (Create Rendition)", "description": "Returned when a Create Rendition job completes successfully. Output items do not include a CSV row index.", "properties": { "status": { "type": "string", "description": "The job status.", "enum": [ "succeeded" ] }, "jobId": { "type": "string", "description": "The job ID.", "example": "6f35a027-c578-41e6-9e53-034424c69d14" }, "outputs": { "type": "array", "description": "Array of converted output files (one for each artboard).", "items": { "$ref": "#/components/schemas/CreateRenditionOutput" } } }, "required": [ "status", "jobId", "outputs" ] }, "CapabilityRegistrationResponse": { "type": "object", "description": "Response after a successful custom script submit. The `url` is the base URL to use for **Submit a custom script execution request** (append path segments or use it as the execute endpoint, depending on the value returned).", "properties": { "url": { "type": "string", "description": "Base URL for posting custom script execution requests.", "example": "https://illustrator.adobe.io/beta/v3//" }, "capability": { "type": "string", "description": "Registered custom script or capability name (from `manifest.json`).", "example": "string" }, "version": { "type": "string", "description": "Registered capability version string.", "example": "string" } }, "required": [ "url", "capability", "version" ] }, "CustomScriptAssetSource": { "type": "object", "properties": { "url": { "type": "string", "description": "Presigned URL pointing to the asset.", "example": "" } }, "required": [ "url" ] }, "CustomScriptAssetItem": { "type": "object", "title": "InputAsset", "description": "Information about an input asset the job will use (file reference and local destination name in the job workspace).", "properties": { "source": { "$ref": "#/components/schemas/CustomScriptAssetSource" }, "destination": { "type": "string", "description": "Local filename for the asset in the job workspace (referenced by `targetDocument` and other params)." } }, "required": [ "source", "destination" ] }, "CustomScriptParams": { "type": "object", "description": "`targetDocument` and `outputPath` are required. Optional: `zip` (when assets are a ZIP), `fontFolderPath`. Keys ending with `Path` specify directory paths relative to the job working directory; the service resolves them to absolute paths for the script.", "properties": { "targetDocument": { "type": "string", "description": "Filename of the Illustrator document to process (must match an asset `destination`)." }, "outputPath": { "type": "string", "description": "Output folder name for generated files." }, "zip": { "type": "string", "description": "Optional. Destination filename of a zipped asset when inputs are packaged as a ZIP." }, "fontFolderPath": { "type": "string", "description": "Optional. Relative path to a font folder when required by the script." } }, "required": [ "targetDocument", "outputPath" ], "additionalProperties": true }, "CustomScriptExecuteRequest": { "type": "object", "description": "This job request object specifies parameters for the execution of the custom script.", "properties": { "assets": { "type": "array", "items": { "$ref": "#/components/schemas/CustomScriptAssetItem" }, "description": "Array of **Input assets**. Information about the assets, which will be used to process the job (for example AI documents, font archives, linked or packaged assets, and so on)." }, "params": { "$ref": "#/components/schemas/CustomScriptParams" } }, "required": [ "assets", "params" ] }, "CustomScriptExecuteResponse": { "type": "object", "description": "Returned when the execution request is accepted (HTTP 202).", "properties": { "jobId": { "type": "string", "description": "Job identifier. Use with **Retrieve custom script job status** on `GET /v3/status/{jobId}`.", "example": "string" }, "statusUrl": { "type": "string", "description": "URL to poll for custom script job status.", "example": "string" } }, "required": [ "jobId", "statusUrl" ] }, "CustomScriptJobConversionDetails": { "type": "object", "description": "Details of the conversion performed during execution.", "properties": { "inputFile": { "type": "string", "description": "Name of the input Illustrator file.", "example": "" }, "outputFolder": { "type": "string", "description": "Name of the output folder.", "example": "" }, "success": { "type": "boolean", "description": "Whether conversion succeeded.", "example": true } } }, "CustomScriptOutputItem": { "type": "object", "properties": { "destination": { "type": "object", "description": "Presigned URL to download the output file.", "properties": { "url": { "type": "string", "description": "Presigned download URL.", "example": "" } }, "required": [ "url" ] }, "source": { "type": "string", "description": "Relative path of the output file within the output folder.", "example": "" } }, "required": [ "destination", "source" ] }, "CustomScriptJobSucceededResponse": { "type": "object", "title": "Execution Success", "description": "Returned when the Custom Scripts job completes successfully.", "properties": { "jobId": { "type": "string", "description": "The job ID.", "example": "" }, "timestamp": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp of when the status was recorded.", "example": "" }, "status": { "type": "string", "enum": [ "succeeded" ] }, "data": { "type": "object", "properties": { "conversionDetails": { "$ref": "#/components/schemas/CustomScriptJobConversionDetails" } } }, "outputs": { "type": "array", "description": "Presigned download URLs for each output file.", "items": { "$ref": "#/components/schemas/CustomScriptOutputItem" } } }, "required": [ "jobId", "timestamp", "status", "outputs" ] }, "CustomScriptJobRunningResponse": { "type": "object", "title": "Execution Running", "description": "Returned while the Custom Scripts job is still executing. Poll again after a short interval.", "properties": { "jobId": { "type": "string", "description": "The job ID.", "example": "" }, "timestamp": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp.", "example": "" }, "status": { "type": "string", "enum": [ "running" ] } }, "required": [ "jobId", "timestamp", "status" ] }, "CustomScriptJobFailedResponse": { "type": "object", "title": "Execution Failed", "description": "Returned when the Custom Scripts job has failed.", "properties": { "jobId": { "type": "string", "description": "The job ID.", "example": "" }, "timestamp": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp.", "example": "" }, "status": { "type": "string", "enum": [ "failed" ] }, "errors": { "type": "array", "description": "List of errors describing what went wrong.", "items": { "type": "object", "properties": { "message": { "type": "string", "example": "" } } } } }, "required": [ "jobId", "timestamp", "status", "errors" ] }, "CustomScriptJobNotFoundResponse": { "type": "object", "description": "Returned when the job ID does not exist.", "properties": { "message": { "type": "string", "example": "JobId not found" }, "errorCode": { "type": "string", "example": "" } } }, "CustomScriptApiError": { "type": "object", "properties": { "message": { "type": "string" }, "error_code": { "type": "string" } }, "required": [ "message", "error_code" ] } } } }