{ "openapi": "3.0.1", "info": { "description": "Photoshop v2 API Server for Adobe Firefly Services.", "license": { "name": "Adobe Creative API License", "url": "https://www.adobe.com/content/dam/cc/en/legal/terms/enterprise/pdfs/PSLT-AdobeCreativeAPI-WW-2024v2.pdf" }, "title": "Photoshop v2 API endpoints", "version": "2.0" }, "servers": [ { "url": "https://photoshop-api.adobe.io", "description": "Prod server." } ], "security": [{ "Authorization": [], "X-Api-Key": [] }], "tags": [ { "description": "Photoshop APIs for image processing operations", "name": "Photoshop APIs" }, { "description": "APIs for retrieving job status information", "name": "Job Status" } ], "paths": { "/v2/create-artboard": { "post": { "operationId": "createArtboard", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateArtboardRequest" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobAcceptedResponse" } } }, "description": "Job accepted for processing" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad request - Invalid request payload" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized - Invalid or missing access token" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Forbidden - User not authorized or quota exhausted" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Validation error - Invalid input data" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying." }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "summary": "Create an artboard", "tags": [ "Photoshop APIs" ] } }, "/v2/create-composite": { "post": { "operationId": "createComposite", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCompositeRequest" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobAcceptedResponse" } } }, "description": "Job accepted for processing" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad request - Invalid request payload" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized - Invalid or missing access token" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Forbidden - User not authorized or quota exhausted" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Validation error - Invalid input data" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying." }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "summary": "Create or edit a composite", "tags": [ "Photoshop APIs" ] } }, "/v2/edit": { "post": { "operationId": "edit", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditRequest" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobAcceptedResponse" } } }, "description": "Job accepted for processing" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad request - Invalid request payload" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized - Invalid or missing access token" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Forbidden - User not authorized or quota exhausted" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Validation error - Invalid input data" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying." }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "summary": "Edit an image with various adjustments", "tags": [ "Photoshop APIs" ] } }, "/v2/execute-actions": { "post": { "operationId": "executeActions", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionsRequest" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobAcceptedResponse" } } }, "description": "Job accepted for processing" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad request - Invalid request payload" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized - Invalid or missing access token" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Forbidden - User not authorized or quota exhausted" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Validation error - Invalid input data" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying." }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "summary": "Execute Photoshop actions, scripts, and transformations", "tags": [ "Photoshop APIs" ] } }, "/v2/generate-manifest": { "post": { "operationId": "generateManifest", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateManifestRequest" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobAcceptedResponse" } } }, "description": "Job accepted for processing" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad request - Invalid request payload" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized - Invalid or missing access token" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Forbidden - User not authorized or quota exhausted" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Validation error - Invalid input data" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying." }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "summary": "Generate a manifest for given input image", "tags": [ "Photoshop APIs" ] } }, "/v2/status/{jobId}": { "get": { "description": "Retrieves the current status and details of a specific job including metadata, outputs, and processing information", "operationId": "getJobStatus", "parameters": [ { "description": "Unique identifier for the job to retrieve status information", "example": "550e8400-e29b-41d4-a716-446655440000", "in": "path", "name": "jobId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusResponse" } } }, "description": "Job status retrieved successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad request - Invalid job ID format or missing required parameters" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized - Invalid or missing access token" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Not found - Job with the specified ID does not exist" } }, "summary": "Get Job Status", "tags": [ "Job Status" ] } } }, "components": { "schemas": { "ActionResource": { "required": [ "source" ], "type": "object", "properties": { "source": { "oneOf": [ { "$ref": "#/components/schemas/CreativeCloudFileIdResourceInput" }, { "$ref": "#/components/schemas/CreativeCloudResourceInput" }, { "$ref": "#/components/schemas/InlineContentResourceInput" }, { "$ref": "#/components/schemas/LightroomResourceInput" }, { "$ref": "#/components/schemas/UrlResourceInput" } ] } }, "description": "Single Photoshop action resource (.atn or inline actionJSON). When present, the 'source' field is required." }, "ActionsOptions": { "type": "object", "properties": { "actions": { "maxItems": 10, "minItems": 0, "type": "array", "description": "List of Photoshop actions. Can be .atn files or inline actionJSON. Optional.", "items": { "$ref": "#/components/schemas/ActionResource" } }, "additionalContents": { "maxItems": 25, "minItems": 0, "type": "array", "description": "List of additional resources. Optional. These images, js, brushes can be referenced in inline actionJSON or in UXPusing placeholders `__ADDITIONAL_CONTENTS_PATH_0__`, `__ADDITIONAL_CONTENTS_PATH_1__`, etc. based on their array index.", "items": { "$ref": "#/components/schemas/AdditionalContentResource" } }, "brushes": { "maxItems": 10, "minItems": 0, "type": "array", "description": "List of brush resources. External references only. Optional.", "items": { "$ref": "#/components/schemas/BrushResource" } }, "fontOptions": { "$ref": "#/components/schemas/FontOptions" }, "patterns": { "maxItems": 10, "minItems": 0, "type": "array", "description": "List of pattern resources. External references only. Optional.", "items": { "$ref": "#/components/schemas/PatternResource" } }, "uxp": { "$ref": "#/components/schemas/UxpResource" } }, "description": "Options configuration for the actions execution. At least one of actions or uxp is required." }, "ActionsRequest": { "required": [ "image", "options", "outputs" ], "type": "object", "properties": { "image": { "oneOf": [ { "$ref": "#/components/schemas/ImageParameters" }, { "$ref": "#/components/schemas/ImageSource" } ] }, "options": { "$ref": "#/components/schemas/ActionsOptions" }, "outputs": { "maxItems": 25, "minItems": 1, "type": "array", "description": "List of output asset details. Required. Maximum of 25 outputs allowed.", "items": { "oneOf": [ { "$ref": "#/components/schemas/JpegOutput" }, { "$ref": "#/components/schemas/JsonOutput" }, { "$ref": "#/components/schemas/PngOutput" }, { "$ref": "#/components/schemas/PsdOutput" }, { "$ref": "#/components/schemas/PsdcOutput" }, { "$ref": "#/components/schemas/TiffOutput" } ] } } } }, "AddAdjustmentLayer": { "required": [ "adjustments", "operation" ], "type": "object", "description": "Adjustment layer for applying image adjustments like brightness, contrast, hue/saturation, etc.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "adjustments": { "oneOf": [ { "$ref": "#/components/schemas/BrightnessContrastAdjustments" }, { "$ref": "#/components/schemas/ColorBalanceAdjustments" }, { "$ref": "#/components/schemas/ExposureAdjustments" }, { "$ref": "#/components/schemas/HueSaturationAdjustments" } ] }, "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Defaults to false when adding layers." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AddBackgroundLayer": { "required": [ "operation" ], "type": "object", "description": "Background layer for adding a background to the document.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "image": { "$ref": "#/components/schemas/ImageSource" }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AddGroupLayer": { "required": [ "operation" ], "type": "object", "description": "Group layer for organizing layers hierarchically.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "children": { "type": "array", "description": "Child layers in this group. Optional.", "items": { "oneOf": [ { "$ref": "#/components/schemas/AddAdjustmentLayer" }, { "$ref": "#/components/schemas/AddBackgroundLayer" }, { "$ref": "#/components/schemas/AddGroupLayer" }, { "$ref": "#/components/schemas/AddLayer" }, { "$ref": "#/components/schemas/AddSmartObjectLayer" }, { "$ref": "#/components/schemas/AddSolidColorLayer" }, { "$ref": "#/components/schemas/AddTextLayer" }, { "$ref": "#/components/schemas/DeleteLayer" }, { "$ref": "#/components/schemas/EditAdjustmentLayer" }, { "$ref": "#/components/schemas/EditBackgroundLayer" }, { "$ref": "#/components/schemas/EditGroupLayer" }, { "$ref": "#/components/schemas/EditLayer" }, { "$ref": "#/components/schemas/EditSmartObjectLayer" }, { "$ref": "#/components/schemas/EditSolidColorLayer" }, { "$ref": "#/components/schemas/EditTextLayer" }, { "$ref": "#/components/schemas/MoveLayer" } ] } }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AddLayer": { "required": [ "image", "operation" ], "type": "object", "description": "Image layer for adding raster images to the document.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "image": { "$ref": "#/components/schemas/ImageSource" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Defaults to false when adding layers." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AddOperation": { "required": [ "placement", "type" ], "type": "object", "description": "Add operation for adding layers.", "allOf": [ { "$ref": "#/components/schemas/Operation" }, { "type": "object", "properties": { "placement": { "$ref": "#/components/schemas/Placement" } } } ] }, "AddSmartObjectLayer": { "required": [ "operation", "smartObject" ], "type": "object", "description": "Smart object layer for embedding external files or vector graphics.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Defaults to false when adding layers." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "smartObject": { "$ref": "#/components/schemas/SmartObject" }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AddSolidColorLayer": { "required": [ "fill", "operation" ], "type": "object", "description": "Fill layer for adding solid color layer.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "fill": { "$ref": "#/components/schemas/Fill" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Defaults to false when adding layers." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AddTextLayer": { "required": [ "operation", "text" ], "type": "object", "description": "Text layer for adding text content in the document.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Defaults to false when adding layers." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/PixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "text": { "$ref": "#/components/schemas/Text" }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "AdditionalContentResource": { "required": [ "source" ], "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "Single additional resource (images, js, brushes, etc.). When present, the 'source' field is required." }, "AdditionalFont": { "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "Array of custom fonts needed in this document. Optional." }, "Anchor": { "required": [ "horizontal", "vertical" ], "type": "object", "properties": { "horizontal": { "type": "number", "description": "Horizontal anchor position. Required.", "format": "double" }, "vertical": { "type": "number", "description": "Vertical anchor position. Required.", "format": "double" } }, "description": "Anchor point coordinates for transformations and positioning." }, "Apply": { "required": [ "from", "to" ], "type": "object", "properties": { "from": { "minimum": 0, "type": "integer", "description": "From value. Required.", "format": "int32" }, "to": { "minimum": 0, "type": "integer", "description": "To value. Required.", "format": "int32" } }, "description": "Inclusive range (from/to) for character or paragraph styling. When present, both 'from' and 'to' are required." }, "AreaFrame": { "required": [ "type" ], "type": "object", "description": "Area text frame defining a bounded rectangular region for text content. Text will wrap within the specified bounds", "allOf": [ { "$ref": "#/components/schemas/TextFrame" }, { "type": "object", "properties": { "bounds": { "$ref": "#/components/schemas/Bounds" } } } ] }, "ArtboardImageInput": { "required": [ "source" ], "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "List of input images for the artboard. Each image must have a source with an external file reference (URL, Creative Cloud file ID, or Creative Cloud path). Required." }, "AutoStraighten": { "required": [ "enabled" ], "type": "object", "properties": { "constrainCrop": { "type": "boolean", "description": "Whether to constrain crop the straightened image to remove blank edges", "default": true }, "enabled": { "type": "boolean", "description": "Whether auto straighten is enabled. Defaults to false when omitted. Explicit null is invalid.", "default": false }, "uprightMode": { "type": "string", "description": "Upright mode options for auto straighten", "enum": [ "auto", "full", "level", "vertical" ] } }, "description": "Auto straighten configuration with options" }, "BaseAdjustment": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "Adjustment type. Allowed values: hue_saturation, brightness_contrast, exposure, color_balance", "enum": [ "hue_saturation", "brightness_contrast", "exposure", "color_balance" ] } }, "description": "Adjustment settings to apply. Must specify exactly one adjustment type (brightness_contrast, hue_saturation, exposure, or color_balance).", "discriminator": { "propertyName": "type" } }, "BlendOptions": { "type": "object", "properties": { "blendMode": { "type": "string", "description": "Blend mode of a layer", "enum": [ "normal", "dissolve", "darken", "multiply", "color_burn", "linear_burn", "darker_color", "lighten", "screen", "color_dodge", "linear_dodge", "lighter_color", "overlay", "soft_light", "hard_light", "vivid_light", "pin_light", "hard_mix", "difference", "exclusion", "subtract", "divide", "hue", "saturation", "color", "luminosity" ] }, "opacity": { "maximum": 100, "minimum": 0, "type": "integer", "description": "Opacity percentage for the blend effect. Range: 0-100. Defaults to 100 when adding new layers. Optional for edits.", "format": "int32" } }, "description": "Blend options for layer effects, including opacity settings." }, "Bounds": { "type": "object", "properties": { "bottom": { "type": "integer", "description": "Bottom coordinate in pixels. Optional.", "format": "int32" }, "left": { "type": "integer", "description": "Left coordinate in pixels. Optional.", "format": "int32" }, "right": { "type": "integer", "description": "Right coordinate in pixels. Optional.", "format": "int32" }, "top": { "type": "integer", "description": "Top coordinate in pixels. Optional.", "format": "int32" } }, "description": "Area boundaries" }, "BrightnessContrast": { "type": "object", "properties": { "brightness": { "maximum": 150, "minimum": -150, "type": "integer", "description": "The adjustment layer's brightness. Range: -150 to 150. Defaults to 0 when adding new layers. Optional for edits", "format": "int32" }, "contrast": { "maximum": 150, "minimum": -150, "type": "integer", "description": "The adjustment layer's contrast. Range: -150 to 150. Defaults to 0 when adding new layers. Optional for edits", "format": "int32" } }, "description": "Brightness and contrast adjustment settings" }, "BrightnessContrastAdjustments": { "required": [ "brightnessContrast", "type" ], "type": "object", "description": "Brightness and contrast adjustment", "allOf": [ { "$ref": "#/components/schemas/BaseAdjustment" }, { "type": "object", "properties": { "brightnessContrast": { "$ref": "#/components/schemas/BrightnessContrast" } } } ] }, "BrushResource": { "required": [ "source" ], "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "Single brush resource (.abr, etc.). When present, the 'source' field is required." }, "CharacterStyle": { "type": "object", "properties": { "capsOption": { "type": "string", "description": "Text capitalization option", "enum": [ "normal_caps", "small_caps", "all_caps", "all_small_caps" ] }, "font": { "$ref": "#/components/schemas/Font" }, "fontAlpha": { "maximum": 1, "minimum": 0, "type": "number", "description": "Font alpha/transparency value. Optional. Default is 1.0.", "format": "double" }, "fontColor": { "oneOf": [ { "$ref": "#/components/schemas/FontCmyk" }, { "$ref": "#/components/schemas/FontGray" }, { "$ref": "#/components/schemas/FontLab" }, { "$ref": "#/components/schemas/FontRgb" } ] }, "fontSize": { "type": "number", "description": "Font size in pixels. Optional. Default is 30.", "format": "double" }, "letterSpacing": { "type": "number", "description": "Letter spacing in pixels. Optional. Default is 0.", "format": "double" }, "lineHeight": { "type": "number", "description": "Line height in pixels. Optional. Default is 36.", "format": "double" }, "syntheticBold": { "type": "boolean", "description": "Whether to apply synthetic bold. Optional. Default is false." }, "syntheticItalic": { "type": "boolean", "description": "Whether to apply synthetic italic. Optional. Default is false." }, "underline": { "type": "boolean", "description": "Whether to apply underline. Optional. Default is false." } }, "description": "Character-level styling properties for text." }, "CharacterStyleRange": { "type": "object", "properties": { "apply": { "$ref": "#/components/schemas/Apply" }, "characterStyle": { "$ref": "#/components/schemas/CharacterStyle" } }, "description": "Character style range defining styling for specific text ranges." }, "ColorAdjustments": { "type": "object", "properties": { "saturation": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Saturation adjustment. Range: -100 to +100", "format": "int32", "example": 20 }, "vibrance": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Vibrance adjustment. Range: -100 to +100", "format": "int32", "example": 15 }, "whiteBalance": { "type": "string", "description": "White balance", "example": "As Shot", "enum": [ "As Shot", "Auto", "Cloudy", "Custom", "Daylight", "Flash", "Fluorescent", "Shade", "Tungsten" ] } }, "description": "Color adjustments for image editing." }, "ColorBalance": { "type": "object", "properties": { "highlightLevels": { "maxItems": 3, "minItems": 3, "type": "array", "description": "Array of 3 integers for highlight levels. Each value must be between -100 and 100. Defaults to [0, 0, 0] when adding new layers. Optional for edits", "items": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Array of 3 integers for highlight levels. Each value must be between -100 and 100. Defaults to [0, 0, 0] when adding new layers. Optional for edits", "format": "int32" } }, "midtoneLevels": { "maxItems": 3, "minItems": 3, "type": "array", "description": "Array of 3 integers for midtone levels. Each value must be between -100 and 100. Defaults to [0, 0, 0] when adding new layers. Optional for edits", "items": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Array of 3 integers for midtone levels. Each value must be between -100 and 100. Defaults to [0, 0, 0] when adding new layers. Optional for edits", "format": "int32" } }, "preserveLuminosity": { "type": "boolean", "description": "Whether to preserve luminosity. Defaults to true when adding new layers. Optional for edits" }, "shadowLevels": { "maxItems": 3, "minItems": 3, "type": "array", "description": "Array of 3 integers for shadow levels. Each value must be between -100 and 100. Defaults to [0, 0, 0] when adding new layers. Optional for edits", "items": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Array of 3 integers for shadow levels. Each value must be between -100 and 100. Defaults to [0, 0, 0] when adding new layers. Optional for edits", "format": "int32" } } }, "description": "Color balance adjustment settings" }, "ColorBalanceAdjustments": { "required": [ "colorBalance", "type" ], "type": "object", "description": "Color balance adjustment", "allOf": [ { "$ref": "#/components/schemas/BaseAdjustment" }, { "type": "object", "properties": { "colorBalance": { "$ref": "#/components/schemas/ColorBalance" } } } ] }, "CreateArtboardRequest": { "required": [ "images", "outputs" ], "type": "object", "properties": { "artboardSpacing": { "type": "integer", "description": "Horizontal spacing in pixels between each artboard. Defaults to 50. Optional.", "format": "int32" }, "images": { "maxItems": 25, "minItems": 1, "type": "array", "description": "List of input images for the artboard. Each image must have a source with an external file reference (URL, Creative Cloud file ID, or Creative Cloud path). Required.", "items": { "$ref": "#/components/schemas/ArtboardImageInput" } }, "outputs": { "maxItems": 25, "minItems": 1, "type": "array", "description": "List of output asset details. Each output specifies destination and output options. Maximum of 25 outputs allowed.", "items": { "oneOf": [ { "$ref": "#/components/schemas/JpegOutput" }, { "$ref": "#/components/schemas/JsonOutput" }, { "$ref": "#/components/schemas/PngOutput" }, { "$ref": "#/components/schemas/PsdOutput" }, { "$ref": "#/components/schemas/PsdcOutput" }, { "$ref": "#/components/schemas/TiffOutput" } ] } } } }, "CreateCompositeRequest": { "required": [ "image", "outputs" ], "type": "object", "properties": { "edits": { "$ref": "#/components/schemas/Edits" }, "fontOptions": { "$ref": "#/components/schemas/FontOptions" }, "image": { "oneOf": [ { "$ref": "#/components/schemas/ImageParameters" }, { "$ref": "#/components/schemas/ImageSource" } ] }, "outputs": { "maxItems": 25, "minItems": 1, "type": "array", "description": "List of output asset details. Required. Maximum of 25 outputs allowed.", "items": { "oneOf": [ { "$ref": "#/components/schemas/JpegOutput" }, { "$ref": "#/components/schemas/JsonOutput" }, { "$ref": "#/components/schemas/PngOutput" }, { "$ref": "#/components/schemas/PsdOutput" }, { "$ref": "#/components/schemas/PsdcOutput" }, { "$ref": "#/components/schemas/TiffOutput" } ] } } } }, "CreativeCloudDestination": { "required": [ "creativeCloudPath" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/Destination" }, { "type": "object", "properties": { "creativeCloudPath": { "type": "string", "description": "Path to Creative Cloud storage. Required." }, "creativeCloudProjectId": { "pattern": "^urn:aaid:.*", "type": "string", "description": "The Creative Cloud project ID. Optional. Must be a valid URN starting with 'urn:aaid:sc:'. Example: urn:aaid:sc:US:a21c8629-413f-55d9-..." } } } ] }, "CreativeCloudFileIdResourceInput": { "required": [ "creativeCloudFileId" ], "type": "object", "description": "Creative Cloud file ID resource input. References a resource via Creative Cloud file ID (URN).", "allOf": [ { "$ref": "#/components/schemas/ResourceInput" }, { "type": "object", "properties": { "creativeCloudFileId": { "pattern": "^urn:aaid:.*", "type": "string", "description": "The file ID of the asset in Creative Cloud. Required. Must start with 'urn:aaid' (case-insensitive)." } } } ] }, "CreativeCloudResourceInput": { "required": [ "creativeCloudPath" ], "type": "object", "description": "Creative Cloud resource input. References a resource via Creative Cloud path.", "allOf": [ { "$ref": "#/components/schemas/ResourceInput" }, { "type": "object", "properties": { "creativeCloudPath": { "type": "string", "description": "The path to the asset in Creative Cloud. Required." }, "creativeCloudProjectId": { "pattern": "^urn:aaid:.*", "type": "string", "description": "The Creative Cloud project ID. Optional. Must be a valid URN starting with 'urn:aaid:sc:'. Example: urn:aaid:sc:US:a21c8629-413f-55d9-..." } } } ] }, "Crop": { "required": [ "bounds" ], "type": "object", "properties": { "bounds": { "$ref": "#/components/schemas/Bounds" }, "hide": { "type": "boolean", "description": "When true, hides pixels outside the crop bounds (non-destructive). When false, permanently deletes pixels outside the crop bounds (destructive). Defaults to false." } }, "description": "Options for cropping a document, specifying the bounds to crop to." }, "CustomIccProfile": { "required": [ "name", "source", "type" ], "type": "object", "description": "Custom ICC profile with user-provided profile file", "allOf": [ { "$ref": "#/components/schemas/IccProfile" }, { "type": "object", "properties": { "imageMode": { "type": "string", "description": "Image mode for custom ICC profiles. Allowed values: rgb, grayscale, cmyk. Optional", "example": "rgb", "enum": [ "rgb", "grayscale", "cmyk" ] }, "name": { "maxLength": 255, "minLength": 0, "type": "string", "description": "Custom ICC profile name. Provide a descriptive name (max 255 characters). Required.", "example": "U.S. Web Coated (SWOP) v2" }, "source": { "$ref": "#/components/schemas/FileResourceInput" } } } ] }, "DeleteLayer": { "required": [ "operation" ], "type": "object", "description": "Layer for delete operations", "allOf": [ { "$ref": "#/components/schemas/OperationBase" } ] }, "DeleteOperation": { "required": [ "type" ], "type": "object", "description": "Delete operation for removing layers.", "allOf": [ { "$ref": "#/components/schemas/Operation" }, { "type": "object", "properties": { "shouldIncludeChildren": { "type": "boolean", "description": "Whether to include child layers in the deletion. Optional. Default - true" } } } ] }, "Destination": { "type": "object", "description": "Destination for output files. Can be either a URL with optional storage type or a Creative Cloud path." }, "Dimension": { "type": "object", "properties": { "height": { "maximum": 32000, "minimum": 0, "type": "integer", "description": "Height after transformation. Optional.", "format": "int32" }, "width": { "maximum": 32000, "minimum": 0, "type": "integer", "description": "Width after transformation. Optional.", "format": "int32" } }, "description": "Offset coordinates for positioning elements." }, "DimensionMeasurement": { "required": [ "unit" ], "type": "object", "properties": { "unit": { "type": "string", "description": "The unit of measurement for the dimension. 'pixels_unit' for absolute pixel measurements, 'percent_unit' for percentage-based scaling, 'distance_unit' for physical measurements using formula: Physical Size (points) = Pixels × (72 ÷ DPI). Defaults to pixels_unit when omitted.", "default": "pixels_unit", "enum": [ "pixels_unit", "percent_unit", "distance_unit" ] }, "value": { "minimum": 0, "type": "integer", "description": "The value of the dimension. Must be greater than or equal to 0.", "format": "int32" } }, "description": "Represents a dimension measurement for width or height with appropriate units." }, "Document": { "type": "object", "properties": { "crop": { "$ref": "#/components/schemas/Crop" }, "resize": { "$ref": "#/components/schemas/Resize" }, "trim": { "$ref": "#/components/schemas/Trim" } }, "description": "Represents the editable document structure, including resize, crop and trim options. Each field corresponds to a specific type of document edit operation." }, "EditAdjustmentLayer": { "required": [ "operation" ], "type": "object", "description": "Adjustment layer for applying image adjustments like brightness, contrast, hue/saturation, etc.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "adjustments": { "oneOf": [ { "$ref": "#/components/schemas/BrightnessContrastAdjustments" }, { "$ref": "#/components/schemas/ColorBalanceAdjustments" }, { "$ref": "#/components/schemas/ExposureAdjustments" }, { "$ref": "#/components/schemas/HueSaturationAdjustments" } ] }, "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Optional for edits." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "EditBackgroundLayer": { "required": [ "operation" ], "type": "object", "description": "Background layer for editing an existing background layer.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "convertToLayer": { "type": "boolean", "description": "When true, promotes the background layer to a regular layer. Mutually exclusive with image." }, "convertedLayerName": { "type": "string", "description": "Name to set on the layer after conversion. Only applicable when convertToLayer is true. Optional." }, "image": { "$ref": "#/components/schemas/ImageSource" }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "EditGroupLayer": { "required": [ "operation" ], "type": "object", "description": "Group layer for organizing layers hierarchically.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "EditImageInput": { "required": [ "source" ], "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "The image input for the edit operation. Supported input source mime types: image/jpeg, image/png, image/x-adobe-dng, image/webp, image/tiff, image/vnd.adobe.photoshop, image/x-sony-arw, and other supported raw/camera formats. Required." }, "EditLayer": { "required": [ "operation" ], "type": "object", "description": "Image layer for editing existing image layers.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "image": { "$ref": "#/components/schemas/ImageSource" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Optional for edits." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "EditOperation": { "required": [ "type" ], "type": "object", "description": "Edit operation for modifying existing layer properties", "allOf": [ { "$ref": "#/components/schemas/Operation" } ] }, "EditPixelMask": { "required": [ "delete" ], "type": "object", "properties": { "delete": { "type": "boolean", "description": "When true, removes the pixel mask from the layer. Takes precedence over all other options. Defaults to false." }, "isEnabled": { "type": "boolean", "description": "Whether the pixel mask is enabled. Optional. Defaults to true when adding new layers. Optional for edits" }, "isLinked": { "type": "boolean", "description": "Whether the pixel mask is linked to the layer. Optional. Defaults to true when adding new layers. Optional for edits" }, "offset": { "$ref": "#/components/schemas/Offset" }, "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "Pixel mask settings for edit operations. Extends PixelMask with the ability to delete the mask." }, "EditRequest": { "required": [ "image", "outputs" ], "type": "object", "properties": { "edits": { "$ref": "#/components/schemas/LightroomEdits" }, "image": { "$ref": "#/components/schemas/EditImageInput" }, "outputs": { "maxItems": 25, "minItems": 1, "type": "array", "description": "List of output asset details. Required. Maximum of 25 outputs allowed.", "items": { "oneOf": [ { "$ref": "#/components/schemas/LrDngOutput" }, { "$ref": "#/components/schemas/LrJpegOutput" }, { "$ref": "#/components/schemas/LrPngOutput" }, { "$ref": "#/components/schemas/XmpOutput" } ] } } } }, "EditSmartObjectLayer": { "required": [ "operation" ], "type": "object", "description": "Smart object layer for embedding external files or vector graphics.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Optional for edits." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "smartObject": { "$ref": "#/components/schemas/SmartObject" }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "EditSolidColorLayer": { "required": [ "operation" ], "type": "object", "description": "Fill layer for editing solid color layer.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "fill": { "$ref": "#/components/schemas/Fill" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Optional for edits." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "EditTextLayer": { "required": [ "operation" ], "type": "object", "description": "Text layer for adding text content in the document.", "allOf": [ { "$ref": "#/components/schemas/OperationBase" }, { "type": "object", "properties": { "blendOptions": { "$ref": "#/components/schemas/BlendOptions" }, "isClipped": { "type": "boolean", "description": "Whether the layer is clipped. Optional for edits." }, "isVisible": { "type": "boolean", "description": "Whether the layer is visible. Defaults to true when adding layers. Optional for edits." }, "pixelMask": { "$ref": "#/components/schemas/EditPixelMask" }, "protection": { "type": "array", "description": "Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.", "items": { "type": "string", "description": "Protection flag for layer. Used in protection array.", "enum": [ "none", "all", "transparency", "composite", "position", "artboard_autonest" ] } }, "text": { "$ref": "#/components/schemas/Text" }, "transform": { "$ref": "#/components/schemas/Transform" }, "transformMode": { "type": "string", "description": "Transform Mode applied to the layer. Defaults to none when adding layers. Optional for edits.", "enum": [ "fit", "fill", "custom", "none" ] }, "type": { "type": "string", "description": "Layer type enum", "enum": [ "layer", "solid_color_layer", "text_layer", "smart_object_layer", "adjustment_layer", "group_layer", "background_layer" ] } } } ] }, "Edits": { "type": "object", "properties": { "document": { "$ref": "#/components/schemas/Document" }, "layers": { "type": "array", "description": "Array of layer edits to be applied. Optional.", "items": { "oneOf": [ { "$ref": "#/components/schemas/AddAdjustmentLayer" }, { "$ref": "#/components/schemas/AddBackgroundLayer" }, { "$ref": "#/components/schemas/AddGroupLayer" }, { "$ref": "#/components/schemas/AddLayer" }, { "$ref": "#/components/schemas/AddSmartObjectLayer" }, { "$ref": "#/components/schemas/AddSolidColorLayer" }, { "$ref": "#/components/schemas/AddTextLayer" }, { "$ref": "#/components/schemas/DeleteLayer" }, { "$ref": "#/components/schemas/EditAdjustmentLayer" }, { "$ref": "#/components/schemas/EditBackgroundLayer" }, { "$ref": "#/components/schemas/EditGroupLayer" }, { "$ref": "#/components/schemas/EditLayer" }, { "$ref": "#/components/schemas/EditSmartObjectLayer" }, { "$ref": "#/components/schemas/EditSolidColorLayer" }, { "$ref": "#/components/schemas/EditTextLayer" }, { "$ref": "#/components/schemas/MoveLayer" } ] } } }, "description": "Edits to be applied to the input asset. Optional." }, "EffectsAdjustments": { "type": "object", "properties": { "clarity": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Clarity adjustment. Range: -100 to +100", "format": "int32", "example": 5 }, "dehaze": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Dehaze adjustment. Range: -100 to +100", "format": "int32", "example": 2 }, "texture": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Texture adjustment. Range: -100 to +100", "format": "int32", "example": 10 }, "vignette": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Vignette amount. Range: -100 to +100", "format": "int32", "example": -10 } }, "description": "Effects adjustments for image editing." }, "EmbeddedDestination": { "required": [ "embedded" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/Destination" }, { "type": "object", "properties": { "embedded": { "type": "string", "description": "Embedded format (string, base64, or json). Defaults to string when omitted.", "default": "string", "enum": [ "string", "base64", "json" ] } } } ] }, "ErrorDetails": { "type": "object", "properties": { "errorCode": { "type": "string" }, "message": { "type": "string" } } }, "ErrorResponse": { "type": "object", "properties": { "error_code": { "type": "string", "description": "The error code for this specific validation error" }, "errors": { "type": "array", "description": "List of detailed validation errors when multiple errors occur. This field is optional and only populated when there are multiple validation errors.", "items": { "$ref": "#/components/schemas/ValidationError" } }, "message": { "type": "string", "description": "Human-readable string describing this specific validation error" } }, "description": "Error response containing error code, message, and optional list of validation errors.\n\nError Code Reference:\n| Error Code | Message |\n| ----------------------------- | ------------------------------------|\n| | |\n| 401013 | Oauth token is not valid |\n| validation_error | Validation failed |\n| unsupported_method | Method not allowed |\n| invalid_content_type | Unsupported media type |\n| unknown_job_id | Job not found |\n| unauthorized_forbidden | The quota for the calling user has exhausted OR\n| | The Service is experiencing high traffic. please retry after a brief wait OR\n| | The user is not entitled to call this service OR\n| | The user is currently blocked by the admin OR\n| | The user is having an invalid subscription OR\n| | The user is blocked due to a violation OR\n| | The user is having an invalid scope |\n| unauthorized_legal_reasons | The user is unauthorised due to geo ip blocking failure OR\n| | The user is unauthorised due to user profile region failure from floodgate |\n| unauthorized_rate_limited | The user is unauthorised due to rate limit. When present, Retry-After header (seconds) indicates delay before retrying. |\n| runtime_error | There was a problem while attempting to perform the operation. Please try again. |\n| invalid_json | The request payload is having invalid JSON (fallback) |\n" }, "ExportOptions": { "required": [ "mediaType" ], "type": "object", "properties": { "mediaType": { "type": "string", "description": "Supported media types for output", "enum": [ "image/jpeg", "image/png", "image/tiff", "image/vnd.adobe.photoshop", "document/vnd.adobe.cpsd+dcxucf", "document/vnd.adobe.cpsd+dcx", "application/json" ] } }, "description": "Export options for the image.", "discriminator": { "propertyName": "mediaType" } }, "Exposure": { "type": "object", "properties": { "exposureValue": { "maximum": 20, "exclusiveMaximum": false, "minimum": -20, "exclusiveMinimum": false, "type": "number", "description": "The layer's exposure value. Range: -20 to 20. Defaults to 0.0 when adding new layers. Optional for edits", "format": "double" }, "gammaCorrection": { "maximum": 9.99, "exclusiveMaximum": false, "minimum": 0.01, "exclusiveMinimum": false, "type": "number", "description": "The layer's gamma correction value. Range: 0.01 to 9.99. Defaults to 1.0 when adding new layers. Optional for edits", "format": "double" }, "offset": { "maximum": 0.5, "exclusiveMaximum": false, "minimum": -0.5, "exclusiveMinimum": false, "type": "number", "description": "The layer's offset value. Range: -0.5 to 0.5. Defaults to 0.0 when adding new layers. Optional for edits", "format": "double" } }, "description": "Exposure adjustment settings" }, "ExposureAdjustments": { "required": [ "exposure", "type" ], "type": "object", "description": "Exposure adjustment", "allOf": [ { "$ref": "#/components/schemas/BaseAdjustment" }, { "type": "object", "properties": { "exposure": { "$ref": "#/components/schemas/Exposure" } } } ] }, "FileResourceInput": { "type": "object", "description": "The resource input for the image. Required. Must be a valid FileResourceInput subtype: UrlResourceInput, CreativeCloudResourceInput, CreativeCloudFileIdResourceInput, or LightroomResourceInput.", "oneOf": [ { "$ref": "#/components/schemas/UrlResourceInput" }, { "$ref": "#/components/schemas/CreativeCloudResourceInput" }, { "$ref": "#/components/schemas/CreativeCloudFileIdResourceInput" }, { "$ref": "#/components/schemas/LightroomResourceInput" } ] }, "Fill": { "type": "object", "properties": { "solidColor": { "$ref": "#/components/schemas/SolidColor" } }, "description": "Fill settings for layers." }, "Font": { "type": "object", "properties": { "postScriptName": { "type": "string", "description": "PostScript name of the font for precise identification. Optional." } }, "description": "Font definition with PostScript name." }, "FontCmyk": { "required": [ "black", "cyan", "magenta", "yellow" ], "type": "object", "description": "CMYK color values for fonts with 16-bit depth (cyan, magenta, yellow, black components).", "allOf": [ { "$ref": "#/components/schemas/FontColor" }, { "type": "object", "properties": { "black": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Black component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "cyan": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Cyan component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "magenta": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Magenta component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "yellow": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Yellow component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 } } } ] }, "FontColor": { "type": "object", "description": "Font color definition supporting RGB, CMYK, LAB, and Grayscale color models in 16-bit depth." }, "FontGray": { "required": [ "gray" ], "type": "object", "description": "Grayscale color value for fonts with 16-bit depth.", "allOf": [ { "$ref": "#/components/schemas/FontColor" }, { "type": "object", "properties": { "gray": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Gray component value (0-32768). 16-bit unsigned. 0 is black, 32768 is white. Defaults to 0 when omitted.", "format": "int32", "default": 0 } } } ] }, "FontLab": { "required": [ "a", "b", "l" ], "type": "object", "description": "LAB color values for fonts with 16-bit depth (lightness and color channels).", "allOf": [ { "$ref": "#/components/schemas/FontColor" }, { "type": "object", "properties": { "a": { "maximum": 16384, "minimum": -16384, "type": "integer", "description": "A component value (-16384 to 16384). 16-bit signed. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "b": { "maximum": 16384, "minimum": -16384, "type": "integer", "description": "B component value (-16384 to 16384). 16-bit signed. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "l": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Lightness component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 } } } ] }, "FontOptions": { "type": "object", "properties": { "additionalFonts": { "type": "array", "description": "Array of custom fonts needed in this document. Optional.", "items": { "$ref": "#/components/schemas/AdditionalFont" } }, "defaultFontPostScriptName": { "type": "string", "description": "The full postscript name of the font to be used as the global default for the document. Optional." }, "missingFontStrategy": { "type": "string", "description": "Action to take if there are missing fonts. Optional.", "enum": [ "fail", "use_default" ] } }, "description": "Font options configuration. Optional." }, "FontRgb": { "required": [ "blue", "green", "red" ], "type": "object", "description": "RGB color values for fonts with 16-bit depth (red, green, blue components).", "allOf": [ { "$ref": "#/components/schemas/FontColor" }, { "type": "object", "properties": { "blue": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Blue component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "green": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Green component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "red": { "maximum": 32768, "minimum": 0, "type": "integer", "description": "Red component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.", "format": "int32", "default": 0 } } } ] }, "GenerateManifestRequest": { "required": [ "image", "outputs" ], "type": "object", "properties": { "exportOptions": { "oneOf": [ { "$ref": "#/components/schemas/JpegExportOptions" }, { "$ref": "#/components/schemas/PngExportOptions" } ] }, "extractSmartObjectData": { "type": "boolean", "description": "Optional. Extract embedded smart objects and include presigned URLs in the manifest. Only applies to embedded (non-linked) smart objects. Default is false.", "example": false, "default": false }, "image": { "$ref": "#/components/schemas/Image" }, "includeLayerThumbnails": { "type": "boolean", "description": "Optional. Indicates whether to generate renditions. Default is false.", "example": false, "default": false }, "includeXmp": { "type": "boolean", "description": "Optional. Include the XMP metadata in the response.", "example": false, "default": false }, "maximumThumbnailDepth": { "minimum": 0, "type": "integer", "description": "Optional. Depth for layer renditions. If provided, must be greater than or equal to 0. 0 signifies no limit.", "format": "int32" }, "outputs": { "maxItems": 25, "minItems": 1, "type": "array", "description": "List of output destinations for the manifest. Required. Maximum of 25 outputs allowed.", "items": { "oneOf": [ { "$ref": "#/components/schemas/ManifestJsonOutput" } ] } }, "trimToTransparency": { "type": "boolean", "description": "Optional. Trim the layer to remove the transparent pixels.", "example": false, "default": false } } }, "HostedDestination": { "required": [ "validityPeriod" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/Destination" }, { "type": "object", "properties": { "validityPeriod": { "maximum": 86400, "minimum": 60, "type": "integer", "description": "Validity period in seconds. Minimum: 60 seconds (1 minute). Maximum: 86400 seconds (1 day). Defaults to 3600 seconds (1 hour) when omitted.", "format": "int32", "default": 3600 } } } ] }, "HueSaturation": { "type": "object", "properties": { "colorize": { "type": "boolean", "description": "Whether to colorize the layer. When true, LocalRange cannot be used in any adjustment. Defaults to false when adding new layers. Optional for edits" }, "hueSaturationAdjustments": { "maxItems": 2147483647, "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/HueSaturationAdjustment" } } }, "description": "Hue/Saturation adjustment settings. When colorize is true, LocalRange cannot be used. When colorize is false, LocalRange can only be used for non-master channels (reds, yellows, greens, cyans, blues, magentas)." }, "HueSaturationAdjustment": { "type": "object", "properties": { "hue": { "type": "integer", "description": "The hue adjustment value. When colorize=false: -180 to 180. When colorize=true: 0 to 360. Defaults to 0 when adding new layers. Optional for edits", "format": "int32" }, "lightness": { "type": "integer", "description": "The lightness adjustment value. When colorize=false: -100 to 100. When colorize=true: 0 to 100. Defaults to 0 when adding new layers. Optional for edits", "format": "int32" }, "localRange": { "$ref": "#/components/schemas/LocalRange" }, "saturation": { "type": "integer", "description": "The saturation adjustment value. When colorize=false: -100 to 100. When colorize=true: 0 to 100. Defaults to 0 when adding new layers. Optional for edits", "format": "int32" } }, "description": "Array of hue/saturation adjustments. For master channel, LocalRange is not applicable." }, "HueSaturationAdjustments": { "required": [ "hueSaturation", "type" ], "type": "object", "description": "Hue and saturation adjustment", "allOf": [ { "$ref": "#/components/schemas/BaseAdjustment" }, { "type": "object", "properties": { "hueSaturation": { "$ref": "#/components/schemas/HueSaturation" } } } ] }, "IccProfile": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "Type of ICC profile. 'standard' for predefined profiles, 'custom' for user-provided profiles. Defaults to standard when omitted; explicit null is invalid.", "example": "standard", "default": "standard", "enum": [ "standard", "custom" ] } }, "description": "ICC profile configuration for color management", "discriminator": { "propertyName": "type" } }, "Image": { "required": [ "source" ], "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "The image input, which contains a source field of type ResourceInput. Required." }, "ImageInput": { "type": "object", "description": "Image input configuration. Can be either a source image or parameters to create a new image." }, "ImageParameters": { "required": [ "height", "width" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/ImageInput" }, { "type": "object", "properties": { "depth": { "type": "string", "description": "Bit depth options for image processing", "enum": [ "1", "8", "16", "32" ] }, "fill": { "type": "string", "description": "Type of fill for the background layer", "enum": [ "white", "background_color", "transparent" ] }, "height": { "maximum": 32000, "minimum": 1, "type": "integer", "description": "Height in pixels. Defaults to 100 when omitted.", "format": "int32", "default": 100 }, "iccProfile": { "$ref": "#/components/schemas/IccProfile" }, "mode": { "type": "string", "description": "Color mode for document creation. Supported depths vary by mode: bitmap(1), grayscale(8,16,32), indexed(8), rgb(8,16,32), cmyk(8,16), lab(8,16), hsb(8,16,32), multichannel(8,16), duotone(8).", "enum": [ "rgb", "bitmap", "grayscale", "indexed", "hsb", "cmyk", "lab", "duotone", "multichannel" ] }, "name": { "maxLength": 255, "minLength": 0, "type": "string", "description": "Name/title of the document. Optional. Maximum 255 characters." }, "pixelScaleFactor": { "minimum": 0.1, "exclusiveMinimum": false, "type": "number", "description": "Pixel scale factor. Optional. Must be positive (minimum 0.1).", "format": "double", "default": 1 }, "resolution": { "$ref": "#/components/schemas/ResolutionMeasurement" }, "width": { "maximum": 32000, "minimum": 1, "type": "integer", "description": "Width in pixels. Defaults to 100 when omitted.", "format": "int32", "default": 100 } } } ] }, "ImageSource": { "required": [ "source" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/ImageInput" }, { "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } } } ] }, "InlineContentResourceInput": { "required": [ "content" ], "type": "object", "description": "Inline content resource input. Allows embedding content directly in the request.", "allOf": [ { "$ref": "#/components/schemas/ResourceInput" }, { "type": "object", "properties": { "content": { "maxLength": 51200, "minLength": 0, "type": "string", "description": "Inline content as string (for scripts, JSON, or other text-based content). Required. Maximum size: 50KB (51,200 characters)." }, "contentType": { "type": "string", "description": "MIME type of the content. Optional but recommended for proper processing." } } } ] }, "JobAcceptedResponse": { "type": "object", "properties": { "jobId": { "type": "string" }, "statusUrl": { "type": "string" } } }, "JobStatusResponse": { "type": "object", "properties": { "createdTime": { "type": "string", "format": "date-time" }, "errorDetails": { "type": "array", "items": { "$ref": "#/components/schemas/ErrorDetails" } }, "jobId": { "type": "string" }, "modifiedTime": { "type": "string", "format": "date-time" }, "result": { "$ref": "#/components/schemas/Result" }, "status": { "type": "string" } } }, "JpegExportOptions": { "required": [ "mediaType" ], "type": "object", "description": "Jpeg Export options for the image.", "allOf": [ { "$ref": "#/components/schemas/ExportOptions" }, { "type": "object", "properties": { "quality": { "type": "string", "description": "JPEG quality levels", "enum": [ "very_poor", "poor", "low", "medium", "high", "maximum", "photoshop_max" ] } } } ] }, "JpegOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/PhotoshopOutput" }, { "type": "object", "properties": { "quality": { "type": "string", "description": "JPEG quality levels", "enum": [ "very_poor", "poor", "low", "medium", "high", "maximum", "photoshop_max" ] } } } ] }, "JsonOutput": { "required": [ "destination", "mediaType" ], "type": "object", "description": "JSON output configuration", "allOf": [ { "$ref": "#/components/schemas/PhotoshopOutput" } ] }, "LightAdjustments": { "type": "object", "properties": { "blacks": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Blacks adjustment. Range: -100 to +100", "format": "int32", "example": -10 }, "contrast": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Contrast adjustment. Range: -100 to +100", "format": "int32", "example": 10 }, "exposure": { "maximum": 5, "minimum": -5, "type": "number", "description": "Exposure adjustment. Range: -5.0 to +5.0", "format": "double", "example": 1.2 }, "highlights": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Highlights adjustment. Range: -100 to +100", "format": "int32", "example": -20 }, "shadows": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Shadows adjustment. Range: -100 to +100", "format": "int32", "example": 15 }, "whites": { "maximum": 100, "minimum": -100, "type": "integer", "description": "Whites adjustment. Range: -100 to +100", "format": "int32", "example": 5 } }, "description": "Light adjustments for image editing." }, "LightroomEdits": { "type": "object", "properties": { "autoStraighten": { "$ref": "#/components/schemas/AutoStraighten" }, "autoTone": { "type": "boolean", "description": "Auto tone adjustment. Optional." }, "color": { "$ref": "#/components/schemas/ColorAdjustments" }, "effects": { "$ref": "#/components/schemas/EffectsAdjustments" }, "light": { "$ref": "#/components/schemas/LightAdjustments" }, "noiseReduction": { "$ref": "#/components/schemas/NoiseReduction" }, "presets": { "maxItems": 10, "minItems": 0, "type": "array", "description": "List of preset inputs to apply. Optional.", "items": { "$ref": "#/components/schemas/FileResourceInput" } }, "sharpen": { "$ref": "#/components/schemas/SharpenAdjustments" }, "sharpness": { "maximum": 150, "minimum": 0, "type": "integer", "description": "Sharpness value. Optional. Range: 0 to 150", "format": "int32" }, "xmp": { "$ref": "#/components/schemas/XmpInput" } }, "description": "Lightroom edit adjustments including XMP, presets, and all adjustment parameters. Optional." }, "LightroomOutput": { "required": [ "destination", "mediaType" ], "type": "object", "properties": { "destination": { "oneOf": [ { "$ref": "#/components/schemas/CreativeCloudDestination" }, { "$ref": "#/components/schemas/EmbeddedDestination" }, { "$ref": "#/components/schemas/HostedDestination" }, { "$ref": "#/components/schemas/UrlDestination" } ] }, "mediaType": { "type": "string", "description": "Supported media types for edit output", "enum": [ "image/jpeg", "image/png", "image/x-adobe-dng", "application/rdf+xml" ] } }, "description": "Export options for a single output.", "discriminator": { "propertyName": "mediaType" } }, "LightroomResourceInput": { "required": [ "lightroomPath" ], "type": "object", "description": "Lightroom resource input. References a resource via Lightroom path.", "allOf": [ { "$ref": "#/components/schemas/ResourceInput" }, { "type": "object", "properties": { "lightroomPath": { "type": "string", "description": "The path to the asset in Lightroom. Required." } } } ] }, "LocalRange": { "required": [ "channelId" ], "type": "object", "properties": { "beginRamp": { "maximum": 360, "minimum": 0, "type": "integer", "description": "The beginning of the ramp (feather start). Range: 0-360 degrees.", "format": "int32" }, "beginSustain": { "maximum": 360, "minimum": 0, "type": "integer", "description": "The beginning of the sustain (full effect start). Range: 0-360 degrees.", "format": "int32" }, "channelId": { "type": "string", "description": "Channel for local range color adjustments. Allowed values: REDS, YELLOWS, GREENS, CYANS, BLUES, MAGENTAS", "default": "REDS", "enum": [ "REDS", "YELLOWS", "GREENS", "CYANS", "BLUES", "MAGENTAS" ] }, "endRamp": { "maximum": 360, "minimum": 0, "type": "integer", "description": "The end of the ramp (feather end). Range: 0-360 degrees.", "format": "int32" }, "endSustain": { "maximum": 360, "minimum": 0, "type": "integer", "description": "The end of the sustain (full effect end). Range: 0-360 degrees.", "format": "int32" } }, "description": "Local range settings for targeted color adjustments. Defines the hue range boundaries for the adjustment." }, "LrDngOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/LightroomOutput" } ] }, "LrJpegOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/LightroomOutput" }, { "type": "object", "properties": { "quality": { "type": "string", "description": "JPEG quality levels", "enum": [ "very_poor", "poor", "low", "medium", "high", "maximum", "photoshop_max" ] } } } ] }, "LrPngOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/LightroomOutput" }, { "type": "object", "properties": { "compression": { "type": "string", "description": "PNG compression levels, from no compression to maximum compression. Values follow zlib/libpng standards.", "enum": [ "none", "very_low", "low", "medium_low", "medium", "medium_high", "default", "high", "very_high", "maximum" ] } } } ] }, "ManifestJsonOutput": { "required": [ "destination", "mediaType" ], "type": "object", "description": "JSON manifest output configuration", "allOf": [ { "$ref": "#/components/schemas/ManifestOutput" } ] }, "ManifestOutput": { "required": [ "destination", "mediaType" ], "type": "object", "properties": { "destination": { "oneOf": [ { "$ref": "#/components/schemas/CreativeCloudDestination" }, { "$ref": "#/components/schemas/EmbeddedDestination" }, { "$ref": "#/components/schemas/HostedDestination" }, { "$ref": "#/components/schemas/UrlDestination" } ] }, "mediaType": { "type": "string", "description": "Supported media types for manifest output", "default": "application/json", "enum": [ "application/json" ] } }, "description": "Export options for manifest output.", "discriminator": { "propertyName": "mediaType" } }, "Mask": { "required": [ "digest", "source" ], "type": "object", "properties": { "digest": { "type": "string", "description": "Fingerprint/digest of the mask for dictionary lookup. Required." }, "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "Mask input for XMP operations. Contains source file reference and digest for dictionary lookup." }, "MoveLayer": { "required": [ "operation" ], "type": "object", "description": "Layer for move operations", "allOf": [ { "$ref": "#/components/schemas/OperationBase" } ] }, "MoveOperation": { "required": [ "placement", "type" ], "type": "object", "description": "Move operation for moving layers.", "allOf": [ { "$ref": "#/components/schemas/Operation" }, { "type": "object", "properties": { "placement": { "$ref": "#/components/schemas/Placement" }, "shouldIncludeChildren": { "type": "boolean", "description": "Whether to include child layers in the move. Optional." } } } ] }, "NoiseReduction": { "type": "object", "properties": { "color": { "maximum": 100, "minimum": 0, "type": "integer", "description": "Color noise reduction. Range: 0 to 100", "format": "int32", "example": 10 }, "luminance": { "maximum": 100, "minimum": 0, "type": "integer", "description": "Luminance noise reduction. Range: 0 to 100", "format": "int32", "example": 25 } }, "description": "Noise reduction settings for image editing." }, "Offset": { "type": "object", "properties": { "horizontal": { "type": "integer", "description": "Horizontal offset in pixels. Defaults to 0 when adding new layers. Optional for edits.", "format": "int32" }, "vertical": { "type": "integer", "description": "Vertical offset in pixels. Defaults to 0 when adding new layers. Optional for edits.", "format": "int32" } }, "description": "Offset coordinates for positioning elements." }, "Operation": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "Operation type enum", "enum": [ "add", "edit", "delete", "move" ] } }, "description": "Layer operation settings including placement, delete, move and edit operations.", "discriminator": { "propertyName": "type" } }, "OperationBase": { "required": [ "operation" ], "type": "object", "properties": { "id": { "type": "integer", "description": "Layer ID", "format": "int32" }, "name": { "type": "string", "description": "Layer name" }, "operation": { "oneOf": [ { "$ref": "#/components/schemas/AddOperation" }, { "$ref": "#/components/schemas/DeleteOperation" }, { "$ref": "#/components/schemas/EditOperation" }, { "$ref": "#/components/schemas/MoveOperation" } ] } }, "description": "Base for a single layer edit. When present, the 'operation' field is required." }, "Origin": { "type": "object", "properties": { "x": { "type": "integer", "description": "X coordinate", "format": "int32" }, "y": { "type": "integer", "description": "Y coordinate", "format": "int32" } }, "description": "2D point coordinates" }, "ParagraphStyle": { "type": "object", "properties": { "alignment": { "type": "string", "description": "Text alignment options", "enum": [ "left", "center", "right", "justify", "justify_left", "justify_right", "justify_center" ] }, "endIndent": { "type": "number", "description": "End indent in pixels. Optional. Default is 0.", "format": "double" }, "firstLineIndent": { "type": "number", "description": "First line indent in pixels. Optional. Default is 0.", "format": "double" }, "spaceAfter": { "type": "number", "description": "Space after paragraph in pixels. Optional. Default is 0.", "format": "double" }, "spaceBefore": { "type": "number", "description": "Space before paragraph in pixels. Optional. Default is 0.", "format": "double" }, "startIndent": { "type": "number", "description": "Start indent in pixels. Optional. Default is 0.", "format": "double" }, "writingDirection": { "type": "string", "description": "Text writing direction", "enum": [ "left_to_right", "right_to_left" ] } }, "description": "Paragraph style properties." }, "ParagraphStyleRange": { "type": "object", "properties": { "apply": { "$ref": "#/components/schemas/Apply" }, "paragraphStyle": { "$ref": "#/components/schemas/ParagraphStyle" } }, "description": "Paragraph style range defining paragraph formatting for specific text ranges." }, "PatternResource": { "required": [ "source" ], "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "External pattern file reference. Requires source (URL, Creative Cloud path, or Creative Cloud file ID). Inline content is not supported." }, "PhotoshopOutput": { "required": [ "destination", "mediaType" ], "type": "object", "properties": { "cropMode": { "type": "string", "description": "Crop mode for export output", "enum": [ "trim_to_transparency", "document_bounds", "layer_bounds" ] }, "destination": { "oneOf": [ { "$ref": "#/components/schemas/CreativeCloudDestination" }, { "$ref": "#/components/schemas/EmbeddedDestination" }, { "$ref": "#/components/schemas/HostedDestination" }, { "$ref": "#/components/schemas/UrlDestination" } ] }, "height": { "minimum": 0, "type": "integer", "description": "Height in pixels. Must be >= 0. Optional.", "format": "int32" }, "iccProfile": { "oneOf": [ { "$ref": "#/components/schemas/CustomIccProfile" }, { "$ref": "#/components/schemas/StandardIccProfile" } ] }, "layers": { "maxItems": 100, "minItems": 0, "type": "array", "description": "Layers to export. Specify layers by id, name, or both. Optional.", "items": { "$ref": "#/components/schemas/ReferenceLayer" } }, "maxWidth": { "minimum": 0, "type": "integer", "description": "Maximum width constraint in pixels. Must be >= 0. If specified and (width > maxWidth OR documentWidth > maxWidth), the output will be constrained to maxWidth. Optional.", "format": "int32" }, "mediaType": { "type": "string", "description": "Supported media types for output", "default": "image/jpeg", "enum": [ "image/jpeg", "image/png", "image/tiff", "image/vnd.adobe.photoshop", "document/vnd.adobe.cpsd+dcxucf", "document/vnd.adobe.cpsd+dcx", "application/json" ] }, "resample": { "type": "string", "description": "Resampling algorithm used when resizing output to a target width. Valid values: nearest_neighbor, bilinear, bicubic, bicubic_smoother, bicubic_sharper. Defaults to bicubic_sharper when width or maxWidth is specified and this field is omitted. Optional.", "enum": [ "nearest_neighbor", "bilinear", "bicubic", "bicubic_smoother", "bicubic_sharper" ] }, "scriptOutputPattern": { "maxLength": 255, "minLength": 0, "type": "string", "description": "Pattern for matching script output files in the UXP output directory. Supports both exact filenames and glob patterns. Examples: 'output.json' (matches single specific file), '*.json' (matches all JSON files), 'result-*.png' (matches result-1.png, result-2.png, etc.). Files are filtered based on the mediaType of this output definition. Only files with extensions matching the mediaType will be included. When a pattern matches multiple files, one output entry is created per file. When present, skips normal rendering/export and uses matched files instead. Output parameters like quality, compression, width, and height are ignored when this field is present. Only applicable for /v2/execute-actions endpoint. Optional, nullable." }, "shouldOverwrite": { "type": "boolean", "description": "Whether to overwrite existing files. Optional." }, "width": { "minimum": 0, "type": "integer", "description": "Width in pixels. Must be >= 0. Optional.", "format": "int32" } }, "description": "Export options for a single output.", "discriminator": { "propertyName": "mediaType" } }, "PixelMask": { "type": "object", "properties": { "isEnabled": { "type": "boolean", "description": "Whether the pixel mask is enabled. Optional. Defaults to true when adding new layers. Optional for edits" }, "isLinked": { "type": "boolean", "description": "Whether the pixel mask is linked to the layer. Optional. Defaults to true when adding new layers. Optional for edits" }, "offset": { "$ref": "#/components/schemas/Offset" }, "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "Pixel mask settings for layer operations, including source input and pixel mask properties." }, "Placement": { "required": [ "type" ], "type": "object", "properties": { "referenceLayer": { "$ref": "#/components/schemas/ReferenceLayer" }, "type": { "type": "string", "description": "Type of placement operation (below, into, top, bottom, above). Defaults to top when omitted.", "default": "top", "enum": [ "below", "into", "top", "bottom", "above" ] } }, "description": "Placement settings for positioning elements with alignment and insertion point." }, "PngExportOptions": { "required": [ "mediaType" ], "type": "object", "description": "Png Export options for the image.", "allOf": [ { "$ref": "#/components/schemas/ExportOptions" }, { "type": "object", "properties": { "compression": { "type": "string", "description": "PNG compression levels, from no compression to maximum compression. Values follow zlib/libpng standards.", "enum": [ "none", "very_low", "low", "medium_low", "medium", "medium_high", "default", "high", "very_high", "maximum" ] } } } ] }, "PngOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/PhotoshopOutput" }, { "type": "object", "properties": { "compression": { "type": "string", "description": "PNG compression levels, from no compression to maximum compression. Values follow zlib/libpng standards.", "enum": [ "none", "very_low", "low", "medium_low", "medium", "medium_high", "default", "high", "very_high", "maximum" ] } } } ] }, "PointFrame": { "required": [ "type" ], "type": "object", "description": "Point frame for text starting at a single point", "allOf": [ { "$ref": "#/components/schemas/TextFrame" }, { "type": "object", "properties": { "origin": { "$ref": "#/components/schemas/Origin" } } } ] }, "PsdOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/PhotoshopOutput" } ] }, "PsdcOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/PhotoshopOutput" } ] }, "ReferenceLayer": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } }, "description": "Layers to export. Specify layers by id, name, or both. Optional." }, "Resize": { "type": "object", "properties": { "constrainProportions": { "type": "boolean", "description": "Whether to constrain proportions during resizing.", "default": true }, "height": { "$ref": "#/components/schemas/DimensionMeasurement" }, "rasterize": { "type": "boolean", "description": "Whether to rasterize the image during resizing. Optional." }, "resample": { "type": "string", "description": "The resampling method to use when resizing.", "default": "bilinear", "enum": [ "nearest_neighbor", "bilinear", "bicubic", "bicubic_smoother", "bicubic_sharper" ] }, "resolution": { "$ref": "#/components/schemas/ResolutionMeasurement" }, "scaleStyles": { "type": "boolean", "description": "Whether to scale styles during resizing.", "default": true }, "width": { "$ref": "#/components/schemas/DimensionMeasurement" } }, "description": "Options for resizing a document, including width, height, resolution, resample type, and additional flags." }, "ResolutionMeasurement": { "required": [ "unit" ], "type": "object", "properties": { "unit": { "type": "string", "description": "The unit of measurement for resolution. 'density_unit' represents pixel density measurements like DPI (dots per inch) or PPI (pixels per inch). Defaults to density_unit when omitted.", "default": "density_unit", "enum": [ "density_unit" ] }, "value": { "minimum": 1, "type": "integer", "description": "The value of the resolution. Must be greater than or equal to 1.", "format": "int32" } }, "description": "Represents a resolution measurement with density unit.", "default": { "value": 72, "unit": "density_unit" } }, "ResourceInput": { "type": "object", "description": "Source for the UXP script. Can be external file reference or inline script content. UXP scripts can use the placeholder `__UXP_OUTPUT_PATH__` which will be replaced at runtime with the directory path for script output files. Example usage: `const outputPath = '__UXP_OUTPUT_PATH__'; const outputFile = path.join(outputPath, 'uxpOutput.json');`" }, "Result": { "type": "object", "properties": { "additionalFields": { "type": "object", "additionalProperties": { "type": "object" } }, "outputs": { "type": "object" } } }, "Rgb": { "required": [ "blue", "green", "red" ], "type": "object", "properties": { "blue": { "maximum": 255, "minimum": 0, "type": "integer", "description": "Blue component value (0-255). Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "green": { "maximum": 255, "minimum": 0, "type": "integer", "description": "Green component value (0-255). Defaults to 0 when omitted.", "format": "int32", "default": 0 }, "red": { "maximum": 255, "minimum": 0, "type": "integer", "description": "Red component value (0-255). Defaults to 0 when omitted.", "format": "int32", "default": 0 } }, "description": "RGB color values with red, green, and blue components." }, "SharpenAdjustments": { "type": "object", "properties": { "detail": { "maximum": 100, "minimum": 0, "type": "integer", "description": "Sharpen detail. Range: 0 to 100", "format": "int32", "example": 50 }, "edgeMasking": { "maximum": 100, "minimum": 0, "type": "integer", "description": "Sharpen edge masking. Range: 0 to 100", "format": "int32", "example": 25 }, "radius": { "maximum": 3, "exclusiveMaximum": false, "minimum": 0.5, "exclusiveMinimum": false, "type": "number", "description": "Sharpen radius. Range: 0.5 to 3.0", "format": "double", "example": 1 } }, "description": "Sharpen adjustments for image editing." }, "Skew": { "required": [ "horizontal", "vertical" ], "type": "object", "properties": { "horizontal": { "type": "integer", "description": "Horizontal skew. Required.", "format": "int32" }, "vertical": { "type": "integer", "description": "Vertical skew. Required.", "format": "int32" } }, "description": "Skew transformation settings for horizontal and vertical distortion." }, "SmartObject": { "type": "object", "properties": { "isLinked": { "type": "boolean", "description": "Whether the smart object is linked to the layer.", "default": false }, "smartObjectFile": { "$ref": "#/components/schemas/SmartObjectFile" } }, "description": "Smart object settings and file reference." }, "SmartObjectFile": { "type": "object", "properties": { "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "File reference for the smart object. Supported file formats: PSD, PNG, JPEG, TIFF, SVG, PDF, AI. Optional." }, "SolidColor": { "required": [ "rgb" ], "type": "object", "properties": { "rgb": { "$ref": "#/components/schemas/Rgb" } }, "description": "Solid color definition using RGB values." }, "StandardIccProfile": { "required": [ "name", "type" ], "type": "object", "description": "Standard ICC profile with predefined profile names", "allOf": [ { "$ref": "#/components/schemas/IccProfile" }, { "type": "object", "properties": { "imageMode": { "type": "string", "description": "Image mode for standard ICC profiles. Allowed values: rgb, grayscale. Optional", "example": "rgb", "enum": [ "rgb", "grayscale" ] }, "name": { "type": "string", "description": "Standard ICC profile names for color management", "example": "sRGB IEC61966-2.1", "default": "sRGB IEC61966-2.1", "enum": [ "Adobe RGB (1998)", "Apple RGB", "ColorMatch RGB", "sRGB IEC61966-2.1", "Dot Gain 10%", "Dot Gain 15%", "Dot Gain 20%", "Dot Gain 25%", "Dot Gain 30%", "Gray Gamma 1.8", "Gray Gamma 2.2" ] } } } ] }, "Text": { "type": "object", "properties": { "antiAliasing": { "type": "string", "description": "Anti-aliasing mode for text rendering", "enum": [ "none", "sharp", "crisp", "strong", "smooth" ] }, "characterStyles": { "type": "array", "description": "Character styles applied to text ranges. Optional.", "items": { "$ref": "#/components/schemas/CharacterStyleRange" } }, "content": { "type": "string", "description": "The text content. Optional." }, "frame": { "oneOf": [ { "$ref": "#/components/schemas/AreaFrame" }, { "$ref": "#/components/schemas/PointFrame" } ] }, "paragraphStyles": { "type": "array", "description": "Paragraph styles applied to text ranges. Optional.", "items": { "$ref": "#/components/schemas/ParagraphStyleRange" } }, "textOrientation": { "type": "string", "description": "Text orientation", "enum": [ "horizontal", "vertical" ] } }, "description": "Text content and formatting settings for text layers." }, "TextFrame": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "Text frame type", "enum": [ "point", "area" ] } }, "description": "Frame configuration for text layers", "discriminator": { "propertyName": "type" } }, "TiffOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/PhotoshopOutput" } ] }, "Transform": { "type": "object", "properties": { "anchor": { "$ref": "#/components/schemas/Anchor" }, "angle": { "type": "number", "description": "Rotation angle in degrees", "format": "double" }, "dimension": { "$ref": "#/components/schemas/Dimension" }, "horizontalAlign": { "type": "string", "description": "Horizontal alignment options", "enum": [ "left", "center", "right" ] }, "offset": { "$ref": "#/components/schemas/Offset" }, "skew": { "$ref": "#/components/schemas/Skew" }, "verticalAlign": { "type": "string", "description": "Vertical alignment options", "enum": [ "top", "center", "bottom" ] } }, "description": "Transformation applied to the smart object or layer, optional" }, "Trim": { "type": "object", "properties": { "trimUpon": { "type": "string", "description": "The basis for the trim operation (background or transparent). Optional.", "enum": [ "transparent_pixels" ] } }, "description": "Options for trimming a document, specifying the basis for the trim operation." }, "UrlDestination": { "required": [ "url" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/Destination" }, { "type": "object", "properties": { "storageType": { "type": "string", "description": "Storage type for the destination. Optional.", "enum": [ "azure", "dropbox" ] }, "url": { "type": "string", "description": "Pre-signed URL for external storage. Must be HTTPS. Required." } } } ] }, "UrlResourceInput": { "required": [ "url" ], "type": "object", "description": "URL resource input. References a resource via a pre-signed URL.", "allOf": [ { "$ref": "#/components/schemas/ResourceInput" }, { "type": "object", "properties": { "url": { "type": "string", "description": "The pre-signed URL of the resource. Required." } } } ] }, "UxpResource": { "required": [ "source" ], "type": "object", "properties": { "source": { "oneOf": [ { "$ref": "#/components/schemas/CreativeCloudFileIdResourceInput" }, { "$ref": "#/components/schemas/CreativeCloudResourceInput" }, { "$ref": "#/components/schemas/InlineContentResourceInput" }, { "$ref": "#/components/schemas/LightroomResourceInput" }, { "$ref": "#/components/schemas/UrlResourceInput" } ] } }, "description": "UXP plugin script resource. Requires source (external file reference or inline script content)." }, "ValidationError": { "type": "object", "properties": { "error_code": { "type": "string", "description": "The error code for this specific validation error" }, "message": { "type": "string", "description": "Human-readable string describing this specific validation error" } }, "description": "Represents a single validation error with error code and message" }, "XmpInput": { "required": [ "source" ], "type": "object", "properties": { "masks": { "type": "array", "description": "List of mask inputs. Optional. Each mask contains a source file reference and digest for dictionary lookup.", "items": { "$ref": "#/components/schemas/Mask" } }, "orientation": { "type": "string", "description": "XMP orientation values following EXIF/TIFF specification", "enum": [ "top_left", "top_right", "bottom_right", "bottom_left", "left_top", "right_top", "right_bottom", "left_bottom" ] }, "source": { "$ref": "#/components/schemas/FileResourceInput" } }, "description": "XMP metadata input. Requires source (external file reference). Inline content is not supported." }, "XmpOutput": { "required": [ "destination", "mediaType" ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/LightroomOutput" } ] } }, "securitySchemes": { "Authorization": { "description": "User access token (Bearer xxx)", "scheme": "Bearer", "type": "http" }, "X-Api-Key": { "description": "Api key (adobe.io)", "in": "header", "name": "X-Api-Key", "type": "apiKey" } } } }