UNPKG

@adobe/lightroom-apis

Version:

Adobe Firefly Services library for consuming Lightroom Service APIs.

1,145 lines (1,144 loc) 46.7 kB
{ "openapi": "3.0.3", "info": { "title": "Adobe Lightroom and Imaging APIs", "description": "Your interface to Adobe Lightroom and Imaging APIs", "contact": { "name": "Adobe Lightroom API Support", "url": "https://developer.adobe.com/photoshop/photoshop-api-docs/api/#tag/Lightroom", "email": "mantis@adobe.com" }, "version": "1.0" }, "servers": [ { "url": "https://image.adobe.io", "description": "Adobe Lightroom Production", "variables": {} } ], "tags": [ { "name": "Lightroom", "description": "Adobe Lightroom and Imaging APIs" } ], "paths": { "/lrService/status/{jobId}": { "get": { "tags": ["Lightroom"], "summary": "Get Status API", "description": "Get job status of a Lightroom job", "operationId": "lrJobStatus", "x-ffs-status-fetcher": "true", "x-ffs-job-name": "LrAsyncJob", "parameters": [ { "name": "jobId", "in": "path", "description": "The job to get status for", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "description": "Job status", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LrJobApiResponse" } } } } }, "deprecated": false } }, "/lrService/autoStraighten": { "post": { "tags": ["Lightroom"], "summary": "Auto Straighten API", "description": "Auto Straighten an image. Applies the Auto Upright transformation on an image ", "operationId": "autoStraightenImage", "x-ffs-async-job": "true", "x-ffs-job-status-fetcher": "lrJobStatus", "requestBody": { "description": "Request body for auto straighten api", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AutoStraightenImageRequest" } } }, "required": true }, "responses": { "202": { "description": "response", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusLinkResponse" } } } }, "400": { "description": "InputValidationError", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InputValidationError" } } } }, "402": { "description": "Trial Limit Exceeded Error", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrialLimitExceededError" } } } }, "403": { "description": "Unauthorized", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "404": { "description": "Requested resource was not found", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "409": { "description": "Unable to upload asset", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "410": { "description": "Asset Link Invalid", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } } }, "deprecated": false } }, "/lrService/autoTone": { "post": { "tags": ["Lightroom"], "summary": "Auto Tone API", "description": "Automatically correct exposure, contrast, sharpness, saturation on an image ", "operationId": "applyAutoTone", "x-ffs-async-job": "true", "x-ffs-job-status-fetcher": "lrJobStatus", "requestBody": { "description": "Request body for applyAutoTone api", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplyAutoToneRequest" } } }, "required": true }, "responses": { "202": { "description": "response", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusLinkResponse" } } } }, "400": { "description": "InputValidationError", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InputValidationError" } } } }, "402": { "description": "Trial Limit Exceeded Error", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrialLimitExceededError" } } } }, "403": { "description": "Unauthorized", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "404": { "description": "Requested resource was not found", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "409": { "description": "Unable to upload asset", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "410": { "description": "Asset Link Invalid", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } } }, "deprecated": false } }, "/lrService/edit": { "post": { "tags": ["Lightroom"], "summary": "Apply Lightroom Edits API", "description": "Apply one or more Lightroom edits ( exposure, contrast, sharpness, saturation ) to an image. ", "operationId": "applyEdits", "x-ffs-async-job": "true", "x-ffs-job-status-fetcher": "lrJobStatus", "requestBody": { "description": "Request body for edit api", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplyEditsRequest" } } }, "required": true }, "responses": { "202": { "description": "response", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusLinkResponse" } } } }, "400": { "description": "InputValidationError", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InputValidationError" } } } }, "402": { "description": "Trial Limit Exceeded Error", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrialLimitExceededError" } } } }, "403": { "description": "Unauthorized", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "404": { "description": "Requested resource was not found", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "409": { "description": "Unable to upload asset", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "410": { "description": "Asset Link Invalid", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } } }, "deprecated": false } }, "/lrService/presets": { "post": { "tags": ["Lightroom"], "summary": "Apply Lightroom Presets API", "description": "Apply one or more XMP Lightroom presets to the given image, by using the given preset XMP file(s).", "operationId": "applyPreset", "x-ffs-async-job": "true", "x-ffs-job-status-fetcher": "lrJobStatus", "requestBody": { "description": "Request body for presets api", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplyPresetRequest" } } }, "required": true }, "responses": { "202": { "description": "response", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusLinkResponse" } } } }, "400": { "description": "InputValidationError", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InputValidationError" } } } }, "402": { "description": "Trial Limit Exceeded Error", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrialLimitExceededError" } } } }, "403": { "description": "Unauthorized", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "404": { "description": "Requested resource was not found", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "409": { "description": "Unable to upload asset", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "410": { "description": "Asset Link Invalid", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } } }, "deprecated": false } }, "/lrService/xmp": { "post": { "tags": ["Lightroom"], "summary": "Add XMP to Image API", "description": "Apply XMP based Lightroom preset to an image. XMP content is passed inline to the api.", "operationId": "applyPresetFromXmpContent", "x-ffs-async-job": "true", "x-ffs-job-status-fetcher": "lrJobStatus", "requestBody": { "description": "Request body for xmp api", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplyPresetFromXmpContentRequest" } } }, "required": true }, "responses": { "202": { "description": "response", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusLinkResponse" } } } }, "400": { "description": "InputValidationError", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InputValidationError" } } } }, "402": { "description": "Trial Limit Exceeded Error", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrialLimitExceededError" } } } }, "403": { "description": "Unauthorized", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "404": { "description": "Requested resource was not found", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "409": { "description": "Unable to upload asset", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } }, "410": { "description": "Asset Link Invalid", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobError" } } } } }, "deprecated": false } } }, "components": { "schemas": { "JobError": { "title": "JobError", "type": "object", "properties": { "type": { "type": "string", "description": "error type" }, "code": { "type": "string", "description": "error code" }, "title": { "type": "string", "description": "error description" }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/ErrorDetails" }, "description": "Details of the error returned" } }, "description": "any errors reported requested output" }, "InputValidationError": { "title": "InputValidationError", "type": "object", "properties": { "type": { "type": "string", "description": "error type" }, "code": { "type": "string", "description": "error code" }, "title": { "type": "string", "description": "error description" }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/InputValidationErrorDetails" }, "description": "Details of the error returned" } }, "description": "any errors reported requested output" }, "TrialLimitExceededError": { "title": "TrialLimitExceededError", "type": "object", "properties": { "type": { "type": "string", "description": "error type" }, "code": { "type": "string", "description": "error code" }, "title": { "type": "string", "description": "error description" }, "details": { "type": "string", "description": "Details of the error returned", "default": "You have exceeded the limit for the free trial. To subscribe and get more API calls, check out our pricing page at https://developer.adobe.com/photoshop/api/pricing/" } }, "description": "any errors reported requested output" }, "InputValidationErrorDetails": { "title": "InputValidationErrorDetails", "type": "object", "properties": { "allowedValues": { "type": "string", "description": "Name of the input parameter", "default": "adobe, external, dropbox, azure" }, "reason": { "type": "string", "description": "Reason for the error" } }, "description": "Details of the input validation error returned" }, "StorageDetails": { "title": "StorageDetails", "type": "object", "required": ["href", "storage"], "properties": { "href": { "type": "string", "description": "Presigned GET URL" }, "storage": { "$ref": "#/components/schemas/StorageType" } }, "description": "File on Adobe's cloud or an external service (like AWS S3, Azure, Dropbox)" }, "JobStatusLink": { "title": "Job Status Link", "type": "object", "properties": { "self": { "$ref": "#/components/schemas/SelfLink" } } }, "JobStatusLinkResponse": { "title": "JobStatusLinkResponse", "type": "object", "properties": { "_links": { "$ref": "#/components/schemas/JobStatusLink" } } }, "LrOutputDetails": { "title": "LrOutputDetails", "type": "object", "required": ["href", "storage", "type"], "properties": { "href": { "type": "string", "description": "Presigned POST URL to the output file" }, "storage": { "$ref": "#/components/schemas/StorageType" }, "type": { "$ref": "#/components/schemas/ImageFormatType" }, "overwrite": { "type": "boolean", "default": true, "description": "If the output file already exists should it be overwritten.overwrite flag is used only when storage = 'adobe'" }, "quality": { "maximum": 12, "minimum": 1, "type": "integer", "default": 12, "description": "Quality of the JPEG outputs (will be ignored for other output types). Ranges from 0 to 12, with 12 as the highest quality." } } }, "ImageFormatType": { "title": "ImageFormatType", "enum": ["image/jpeg", "image/png", "image/x-adobe-dng", "application/rdf+xml"], "type": "string", "description": "Desired output image format" }, "LrJobApiResponse": { "title": "Lightroom Job Status Response", "type": "object", "properties": { "jobId": { "type": "string", "description": "the job's id requested (tbd. different case from Sensei?)" }, "created": { "type": "string", "description": "Created timestamp of the job (YYYY-DD-MMThh:mm:ss.mmmmmZ) (epoch?)" }, "modified": { "type": "string", "description": "Modified timestamp of the job (YYYY-DD-MMThh:mm:ss.mmmmmZ) (epoch?)" }, "outputs": { "type": "array", "items": { "$ref": "#/components/schemas/JobOutputDetails" }, "description": "output parameters for the job" }, "_links": { "$ref": "#/components/schemas/JobStatusLink" } } }, "AutoStraightenImageRequest": { "title": "AutoStraightenImageRequest", "type": "object", "required": ["inputs", "outputs"], "properties": { "inputs": { "$ref": "#/components/schemas/StorageDetails" }, "options": { "$ref": "#/components/schemas/AutoStraightOptions" }, "outputs": { "type": "array", "items": { "$ref": "#/components/schemas/LrOutputDetails" }, "description": "Only a single output is supported currently" } } }, "ApplyAutoToneRequest": { "title": "ApplyAutoToneRequest", "type": "object", "required": ["inputs", "outputs"], "properties": { "inputs": { "$ref": "#/components/schemas/StorageDetails" }, "outputs": { "type": "array", "items": { "$ref": "#/components/schemas/LrOutputDetails" }, "description": "Only a single output is supported currently" } } }, "ApplyEditsRequest": { "title": "ApplyEditsRequest", "type": "object", "required": ["inputs", "options", "outputs"], "properties": { "inputs": { "type": "object", "description": "A hash describing an input image to edit. The input object will be one of 'external', 'adobe', 'azure' or 'dropbox'", "required": ["source"], "properties": { "source": { "$ref": "#/components/schemas/StorageDetails" } } }, "options": { "$ref": "#/components/schemas/EditOptions" }, "outputs": { "type": "array", "items": { "$ref": "#/components/schemas/LrOutputDetails" }, "description": "Edit photo output paramaters" } } }, "ApplyPresetRequest": { "title": "ApplyPresetRequest", "type": "object", "required": ["inputs", "outputs"], "properties": { "inputs": { "$ref": "#/components/schemas/ApplyPresetInput" }, "outputs": { "type": "array", "items": { "$ref": "#/components/schemas/LrOutputDetails" }, "description": "Apply preset output paramaters" } } }, "ApplyPresetFromXmpContentRequest": { "title": "ApplyPresetFromXmpContentRequest", "type": "object", "required": ["inputs", "options", "outputs"], "properties": { "inputs": { "$ref": "#/components/schemas/ApplyPresetXmpInput" }, "options": { "$ref": "#/components/schemas/ApplyPresetXmpOptions" }, "outputs": { "type": "array", "items": { "$ref": "#/components/schemas/LrOutputDetails" }, "description": "Apply preset xmp output paramaters" } } }, "ApplyPresetXmpInput": { "title": "ApplyPresetXmpInput", "type": "object", "required": ["source"], "properties": { "source": { "$ref": "#/components/schemas/StorageDetails" } } }, "ErrorDetails": { "title": "ErrorDetails", "type": "object", "properties": { "name": { "type": "string", "description": "param name" }, "reason": { "type": "string", "description": "error" } }, "description": "Details of the error returned" }, "ApplyPresetInput": { "title": "ApplyPresetInput", "type": "object", "required": ["source", "presets"], "properties": { "source": { "$ref": "#/components/schemas/StorageDetails" }, "presets": { "type": "array", "items": { "$ref": "#/components/schemas/StorageDetails" }, "description": "An array describing the list of presets to apply. The preset objects will either be one of 'external', 'adobe', 'azure' or 'dropbox'" } } }, "Links": { "title": "Links", "type": "object", "properties": { "self": { "$ref": "#/components/schemas/StorageDetails" } } }, "AutoStraightOptions": { "title": "AutoStraightOptions", "required": ["uprightMode"], "type": "object", "properties": { "uprightMode": { "$ref": "#/components/schemas/UprightMode" }, "constrainCrop": { "type": "boolean", "description": "If the straightened image should be constrain cropped, to remove all blank edges around an image.", "default": true } } }, "EditOptions": { "title": "EditOptions", "type": "object", "properties": { "Contrast": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Saturation": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "VignetteAmount": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Vibrance": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Highlights": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Shadows": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Whites": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Blacks": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Clarity": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Dehaze": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Texture": { "maximum": 100.0, "minimum": -100.0, "type": "integer", "format": "int32" }, "Sharpness": { "maximum": 150.0, "minimum": 0.0, "type": "integer", "format": "int32" }, "ColorNoiseReduction": { "maximum": 100.0, "minimum": 0.0, "type": "integer", "format": "int32" }, "NoiseReduction": { "maximum": 100.0, "minimum": 0.0, "type": "integer", "format": "int32" }, "SharpenDetail": { "maximum": 100.0, "minimum": 0.0, "type": "integer", "format": "int32" }, "SharpenEdgeMasking": { "maximum": 10.0, "minimum": 0.0, "type": "integer", "format": "int32" }, "Exposure": { "maximum": 5.0, "minimum": -5.0, "type": "number" }, "SharpenRadius": { "maximum": 3.0, "minimum": 0.5, "type": "number" }, "WhiteBalance": { "$ref": "#/components/schemas/WhiteBalance" } } }, "ApplyPresetXmpOptions": { "title": "ApplyPresetXmpOptions", "description": "Options for applying a preset xmp to an image", "type": "object", "required": ["xmp"], "properties": { "xmp": { "type": "string", "description": "The XMP to apply" }, "orientation": { "maximum": 8.0, "minimum": 1.0, "type": "number", "description": "The combination of flip and/or rotate to apply" } } }, "JobOutputDetails": { "title": "JobOutputDetails", "type": "object", "properties": { "input": { "type": "string", "description": "the original input file path" }, "status": { "$ref": "#/components/schemas/JobStatus" }, "_links": { "$ref": "#/components/schemas/Links" }, "details": { "type": "string", "description": "Description of the exact error that is reported by the requested job. Will appear in the response only if there is an error." } } }, "SelfLink": { "title": "SelfLink", "type": "object", "description": "Self link for the job status", "properties": { "href": { "type": "string", "description": "Job Status Url" } } }, "JobStatus": { "title": "JobStatus", "enum": ["pending", "running", "succeeded", "failed"], "type": "string", "description": "Status of the job" }, "StorageType": { "title": "StorageType", "enum": ["external", "azure", "dropbox"], "type": "string", "description": "Storage location" }, "UprightMode": { "title": "UprightMode", "enum": ["auto", "full", "level", "vertical"], "type": "string", "description": "The upright mode to use. If you have the options block, then this is a required field. If options block is not specified, then the appropriate upright mode will automatically be selected." }, "WhiteBalance": { "title": "WhiteBalance", "description": "White balance settings", "enum": [ "As Shot", "Auto", "Cloudy", "Custom", "Daylight", "Flash", "Fluorescent", "Shade", "Tungsten" ], "type": "string" } }, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer" }, "ApiKeyAuth": { "type": "apiKey", "name": "x-api-key", "in": "header" } } }, "security": [ { "ApiKeyAuth": [] }, { "BearerAuth": [] } ] }