{ "openapi": "3.1", "info": { "title": "Firefly Lightroom API Reference", "description": "Programmatically apply Lightroom settings and image adjustments to photos using Adobe's cloud-based image processing services", "version": "1.0.0" }, "servers": [ { "url": "https://image.adobe.io", "description": "Adobe Image Service API endpoint" } ], "tags": [ { "name": "Lightroom Services", "description": "Core Lightroom image processing services" } ], "paths": { "/lrService/presets": { "post": { "summary": "Apply Lightroom preset", "description": "Apply a Lightroom preset to an image. This creates an asynchronous job that processes the image with the specified preset settings. Use the Get Status endpoint to monitor job progress and retrieve results.", "operationId": "presets", "tags": ["Lightroom Services"], "parameters": [ { "name": "Authorization", "description": "Bearer: ${Authorization Token}", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-api-key", "description": "API key/client id", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "Content-Type", "description": "application/json", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-gw-ims-org-id", "description": "IMS organization ID. This needs to be sent only if it is desirable to receive the job status through Adobe I/O Events.", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostPresetsSchema" } } }, "required": true }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseSuccessSchema" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse400ErrorSchema" } } } }, "402": { "description": "Trial Limit Exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse402ErrorSchema" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse403ErrorSchema" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse404ErrorSchema" } } } }, "409": { "description": "File Overwrite Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse409ErrorSchema" } } } }, "410": { "description": "Asset Link Invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse410ErrorSchema" } } } }, "500": { "description": "Internal Server Error" } } } }, "/lrService/xmp": { "post": { "summary": "Apply XMP settings", "description": "Apply XMP (Extensible Metadata Platform) settings to an image. XMP allows you to embed metadata and editing instructions directly into image files. This creates an asynchronous job for processing.", "operationId": "xmp", "tags": ["Lightroom Services"], "parameters": [ { "name": "Authorization", "description": "Bearer: ${Authorization Token}", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-api-key", "description": "API key/client id", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "Content-Type", "description": "application/json", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-gw-ims-org-id", "description": "IMS organization ID. This needs to be sent only if it is desirable to receive the job status through Adobe I/O Events.", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostXmpSchema" } } }, "required": true }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseSuccessSchema" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse400ErrorSchema" } } } }, "402": { "description": "Trial Limit Exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse402ErrorSchema" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse403ErrorSchema" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse404ErrorSchema" } } } }, "409": { "description": "File Overwrite Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse409ErrorSchema" } } } }, "410": { "description": "Asset Link Invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse410ErrorSchema" } } } }, "500": { "description": "Internal Server Error" } } } }, "/lrService/autoStraighten": { "post": { "summary": "Auto-straighten image", "description": "Automatically detect and correct image rotation/alignment issues. Uses Adobe's AI to analyze the image and apply the optimal straightening adjustment. Creates an asynchronous job for processing.", "operationId": "autoStraighten", "tags": ["Lightroom Services"], "parameters": [ { "name": "Authorization", "description": "Bearer: ${Authorization Token}", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-api-key", "description": "API key/client id", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "Content-Type", "description": "application/json", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-gw-ims-org-id", "description": "IMS organization ID. This needs to be sent only if it is desirable to receive the job status through Adobe I/O Events.", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostAutoStraightenSchema" } } }, "required": true }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseSuccessSchema" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse400ErrorSchema" } } } }, "402": { "description": "Trial Limit Exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse402ErrorSchema" } } } }, "403": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse403ErrorSchema" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse404ErrorSchema" } } } }, "409": { "description": "File Overwrite Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse409ErrorSchema" } } } }, "410": { "description": "Asset Link Invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse410ErrorSchema" } } } }, "500": { "description": "Internal Server Error" } } } }, "/lrService/autoTone": { "post": { "summary": "Auto-adjust image tone", "description": "Automatically adjust exposure, contrast, highlights, shadows, whites, and blacks in an image using Adobe's intelligent tone mapping. Creates an asynchronous job for processing.", "operationId": "autoTone", "tags": ["Lightroom Services"], "parameters": [ { "name": "Authorization", "description": "Bearer: ${Authorization Token}", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-api-key", "description": "API key/client id", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "Content-Type", "description": "application/json", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-gw-ims-org-id", "description": "IMS organization ID. This needs to be sent only if it is desirable to receive the job status through Adobe I/O Events.", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostAutoToneSchema" } } }, "required": true }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseSuccessSchema" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse400ErrorSchema" } } } }, "402": { "description": "Trial Limit Exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse402ErrorSchema" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse403ErrorSchema" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse404ErrorSchema" } } } }, "409": { "description": "File Overwrite Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse409ErrorSchema" } } } }, "410": { "description": "Asset Link Invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse410ErrorSchema" } } } }, "500": { "description": "Internal Server Error" } } } }, "/lrService/edit": { "post": { "summary": "Apply manual image edits", "description": "Apply custom image adjustments including exposure, contrast, color grading, and other Lightroom editing parameters. Provides precise control over image processing parameters. Creates an asynchronous job for processing.", "operationId": "edit", "tags": ["Lightroom Services"], "parameters": [ { "name": "Authorization", "description": "Bearer: ${Authorization Token}", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-api-key", "description": "API key/client id", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "Content-Type", "description": "application/json", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-gw-ims-org-id", "description": "IMS organization ID. This needs to be sent only if it is desirable to receive the job status through Adobe I/O Events.", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostImageEditSchema" } } }, "required": true }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseSuccessSchema" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse400ErrorSchema" } } } }, "402": { "description": "Trial Limit Exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse402ErrorSchema" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse403ErrorSchema" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse404ErrorSchema" } } } }, "409": { "description": "File Overwrite Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse409ErrorSchema" } } } }, "410": { "description": "Asset Link Invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse410ErrorSchema" } } } }, "500": { "description": "Internal Server Error" } } } }, "/lrService/status/{jobId}": { "get": { "summary": "Get job status", "description": "Retrieve the current status and results of an asynchronous image processing job. Returns job progress, completion status, output URLs, and any error information.", "operationId": "acrstatus", "tags": ["Lightroom Services"], "parameters": [ { "name": "Authorization", "description": "Bearer: ${Authorization Token}", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-api-key", "description": "API key/client id", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "Content-Type", "description": "application/json", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "x-gw-ims-org-id", "description": "IMS organization ID. This is only needed if you are trying to receive the job status through Adobe I/O Events.", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "jobId", "in": "path", "description": "The jobId to get status for.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetStatusSchema" } } } } } } } }, "components": { "schemas": { "PostPresetsSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "post_presets.schema.json", "title": "post_presets", "description": "Initiates an asynchronous job to apply a preset on an image", "type": "object", "required": [ "inputs", "outputs" ], "properties": { "inputs": { "type": "object", "minProperties": 2, "description": "The input assets for your call", "required": [ "source", "presets" ], "properties": { "source": { "$ref": "#/components/schemas/InputsSchema" }, "presets": { "type": "array", "minItems": 1, "items": { "$ref": "#/components/schemas/InputsSchema" } } } }, "outputs": { "$ref": "#/components/schemas/OutputsSchema" } } }, "PostXmpSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "post_xmp.schema.json", "title": "post_xmp", "description": "Initiates an asynchronous job to apply an XMP setting to an image", "type": "object", "required": [ "inputs", "outputs" ], "properties": { "inputs": { "type": "object", "minProperties": 2, "description": "The input assets for your call", "required": [ "source", "xmp" ], "properties": { "source": { "$ref": "#/components/schemas/InputsSchema" }, "xmp": { "$ref": "#/components/schemas/InputsSchema" } } }, "outputs": { "$ref": "#/components/schemas/OutputsSchema" } } }, "PostAutoStraightenSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "post_auto_straighten.schema.json", "title": "post_auto_straighten", "description": "Initiates an asynchronous job to auto straighten an image", "type": "object", "required": [ "inputs", "outputs" ], "properties": { "inputs": { "type": "object", "minProperties": 1, "description": "The input assets for your call", "required": [ "source" ], "properties": { "source": { "$ref": "#/components/schemas/InputsSchema" } } }, "outputs": { "$ref": "#/components/schemas/OutputsSchema" } } }, "PostAutoToneSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "post_auto_tone.schema.json", "title": "post_auto_tone", "description": "Initiates an asynchronous job to apply Auto Tone to an image", "type": "object", "required": [ "inputs", "outputs" ], "properties": { "inputs": { "type": "object", "minProperties": 1, "description": "The input assets for your call", "required": [ "source" ], "properties": { "source": { "$ref": "#/components/schemas/InputsSchema" } } }, "outputs": { "$ref": "#/components/schemas/OutputsSchema" } } }, "PostImageEditSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "post_image_edit.schema.json", "title": "post_image_edit", "description": "Enables programmatic adjustment of values within the Lightroom Edit Panel and apply them to an image", "type": "object", "required": [ "inputs", "outputs" ], "properties": { "inputs": { "type": "object", "minProperties": 2, "description": "The input assets for your call", "required": [ "source", "edits" ], "properties": { "source": { "$ref": "#/components/schemas/InputsSchema" }, "edits": { "$ref": "#/components/schemas/InputsSchema" } } }, "outputs": { "$ref": "#/components/schemas/OutputsSchema" } } }, "GetStatusSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "get_status.schema.json", "title": "get_status", "description": "Returns the status of a job", "type": "object", "properties": { "jobId": { "type": "string", "description": "The job identifier" }, "status": { "type": "string", "description": "The current status of the job", "enum": ["pending", "running", "succeeded", "failed"] }, "created": { "type": "string", "format": "date-time", "description": "When the job was created" }, "modified": { "type": "string", "format": "date-time", "description": "When the job was last modified" }, "outputs": { "type": "array", "description": "Output assets when job is completed", "items": { "$ref": "#/components/schemas/OutputsSchema" } }, "error": { "type": "object", "description": "Error details if job failed", "properties": { "code": { "type": "string", "description": "Error code" }, "message": { "type": "string", "description": "Error message" } } } } }, "ApiResponseSuccessSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response.schema.json", "title": "api_response", "description": "Provides API response", "type": "object", "properties": { "_links": { "type": "object", "description": "_links hrefs the client can use to get status of the asynchronous job.", "properties": { "self": { "type": "object", "properties": { "href": { "type": "string", "format": "string", "description": "The link that client can use to get status of the asynchronous job", "example": "https://image.adobe.io/lrService/status/<:jobId>" } } } } } } }, "ApiResponse400ErrorSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response_400.schema.json", "title": "api_response_400", "description": "Provides API response", "type": "object", "properties": { "title": { "type": "string", "format": "string", "description": "A summary of the error.", "example": "InputValidationError" }, "type": { "type": "string", "format": "string", "description": "The error type.", "example": "InputValidationError" }, "code": { "type": "string", "format": "string", "description": "The error code.", "example": "400" }, "details": { "type": "object", "description": "Further details of the error.", "properties": { "name": { "type": "string", "description": "The name for the detailed error.", "example": "adobe, external, dropbox, azure" }, "reason": { "type": "string", "description": "An explanation of the error." } } } } }, "ApiResponse402ErrorSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response_402.schema.json", "title": "api_response_402", "description": "Provides API response", "type": "object", "properties": { "title": { "type": "string", "format": "string", "description": "A summary of the error.", "example": "Trial Limit Exceeded Error" }, "type": { "type": "string", "format": "string", "description": "The error type.", "example": "TrialLimitExceededError" }, "code": { "type": "string", "format": "string", "description": "The error code." }, "details": { "type": "object", "description": "Further details of the error.", "properties": { "name": { "type": "string", "description": "The name for the detailed error.", "example": "adobe, external, dropbox, azure" }, "reason": { "type": "string", "description": "An explanation of the error." } } } } }, "ApiResponse403ErrorSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response_403.schema.json", "title": "api_response_403", "description": "Provides API response", "type": "object", "properties": { "title": { "type": "string", "format": "string", "description": "A summary of the error.", "example": "Unable to upload asset" }, "type": { "type": "string", "format": "string", "description": "The error type.", "example": "FileOverwriteError" }, "code": { "type": "string", "format": "string", "description": "The error code." }, "details": { "type": "object", "description": "Further details of the error.", "properties": { "name": { "type": "string", "description": "The name for the detailed error.", "example": "Asset Upload Error" }, "reason": { "type": "string", "description": "An explanation of the error." } } } } }, "ApiResponse404ErrorSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response_404.schema.json", "title": "api_response_404", "description": "Provides API response", "type": "object", "properties": { "title": { "type": "string", "format": "string", "description": "A summary of the error.", "example": "Unable to upload asset" }, "type": { "type": "string", "format": "string", "description": "The error type.", "example": "FileOverwriteError" }, "code": { "type": "string", "format": "string", "description": "The error code." }, "details": { "type": "object", "description": "Further details of the error.", "properties": { "name": { "type": "string", "description": "The name for the detailed error.", "example": "Asset Upload Error" }, "reason": { "type": "string", "description": "An explanation of the error." } } } } }, "ApiResponse409ErrorSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response_409.schema.json", "title": "api_response_409", "description": "Provides API response", "type": "object", "properties": { "title": { "type": "string", "format": "string", "description": "A summary of the error.", "example": "Unable to upload asset" }, "type": { "type": "string", "format": "string", "description": "The error type.", "example": "FileOverwriteError" }, "code": { "type": "string", "format": "string", "description": "The error code." }, "details": { "type": "object", "description": "Further details of the error.", "properties": { "name": { "type": "string", "description": "The name for the detailed error.", "example": "Asset Upload Error" }, "reason": { "type": "string", "description": "An explanation of the error." } } } } }, "ApiResponse410ErrorSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "api_response_410.schema.json", "title": "api_response_410", "description": "Provides API response", "type": "object", "properties": { "title": { "type": "string", "format": "string", "description": "A short, human-readable summary of the problem", "example": "Asset Link Invalid" }, "type": { "type": "string", "format": "string", "description": "A machine-readable error type", "example": "FileLinkInvalidError" }, "code": { "type": "string", "format": "string", "description": "A machine-readable error code", "example": 410 }, "details": { "type": "object", "description": "Further descriptions of the exact error where details is substituted for a specific issue.", "properties": { "name": { "type": "string", "description": "Name for the detailed error.", "example": "Asset Download Error" }, "reason": { "type": "string", "description": "Details of error reason.", "example": "Unable to download the input href. The link is either invalid or has expired." } } } } }, "InputsSchema": { "type": "object", "description": "Input asset definition" }, "OutputsSchema": { "type": "object", "description": "Output asset definition" } } }, "security": [] }