From 0aae62421003e2629348a4a9e52ee5d8d179123e Mon Sep 17 00:00:00 2001 From: John Tran Date: Thu, 7 Nov 2019 14:42:57 -0800 Subject: [PATCH 1/2] update docs for photoshopBuild being returned in manifest --- docs/api_data.js | 2 +- docs/api_data.json | 2 +- docs/api_project.js | 2 +- docs/api_project.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api_data.js b/docs/api_data.js index 8b06330..9bec317 100644 --- a/docs/api_data.js +++ b/docs/api_data.js @@ -1 +1 @@ -define({ "api": [ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H 'content-type: multipart/form-data' \\\n-H 'x-api-key: $api_key' \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F 'contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}'", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] }); +define({ "api": [ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.photoshopBuild", "description": "

the name of the application that created the PSD

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\",\n \"photoshopBuild\": \"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H \"content-type: multipart/form-data\" \\\n-H \"x-api-key: $api_key\" \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F \"contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}\"", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] }); diff --git a/docs/api_data.json b/docs/api_data.json index e0d1a05..b8f1f8c 100644 --- a/docs/api_data.json +++ b/docs/api_data.json @@ -1 +1 @@ -[ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H 'content-type: multipart/form-data' \\\n-H 'x-api-key: $api_key' \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F 'contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}'", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] +[ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.photoshopBuild", "description": "

the name of the application that created the PSD

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\",\n \"photoshopBuild\": \"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H \"content-type: multipart/form-data\" \\\n-H \"x-api-key: $api_key\" \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F \"contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}\"", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] diff --git a/docs/api_project.js b/docs/api_project.js index b87611b..bc6c184 100644 --- a/docs/api_project.js +++ b/docs/api_project.js @@ -1 +1 @@ -define({ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-10-17T21:10:34.551Z", "url": "http://apidocjs.com", "version": "0.17.7" } }); +define({ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-11-07T01:42:21.253Z", "url": "http://apidocjs.com", "version": "0.17.7" } }); diff --git a/docs/api_project.json b/docs/api_project.json index daa8575..8f31d7c 100644 --- a/docs/api_project.json +++ b/docs/api_project.json @@ -1 +1 @@ -{ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-10-17T21:10:34.551Z", "url": "http://apidocjs.com", "version": "0.17.7" } } +{ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-11-07T01:42:21.253Z", "url": "http://apidocjs.com", "version": "0.17.7" } } From 68f7f217370e76a1c1f6f188b2d8f5c42282fa3c Mon Sep 17 00:00:00 2001 From: John Tran Date: Thu, 7 Nov 2019 15:18:15 -0800 Subject: [PATCH 2/2] correct type for photoshopBuild --- docs/api_data.js | 2 +- docs/api_data.json | 2 +- docs/api_project.js | 2 +- docs/api_project.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api_data.js b/docs/api_data.js index 9bec317..3d4146d 100644 --- a/docs/api_data.js +++ b/docs/api_data.js @@ -1 +1 @@ -define({ "api": [ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.photoshopBuild", "description": "

the name of the application that created the PSD

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\",\n \"photoshopBuild\": \"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H \"content-type: multipart/form-data\" \\\n-H \"x-api-key: $api_key\" \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F \"contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}\"", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] }); +define({ "api": [ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.photoshopBuild", "description": "

the name of the application that created the PSD

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\",\n \"photoshopBuild\": \"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H \"content-type: multipart/form-data\" \\\n-H \"x-api-key: $api_key\" \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F \"contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}\"", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] }); diff --git a/docs/api_data.json b/docs/api_data.json index b8f1f8c..d75d563 100644 --- a/docs/api_data.json +++ b/docs/api_data.json @@ -1 +1 @@ -[ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.photoshopBuild", "description": "

the name of the application that created the PSD

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\",\n \"photoshopBuild\": \"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H \"content-type: multipart/form-data\" \\\n-H \"x-api-key: $api_key\" \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F \"contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}\"", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] +[ { "type": "post", "url": "https://image.adobe.io/pie/psdService/artboardCreate", "title": "artboard create", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "artboard_create", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard", "description": "

Represents an array of input objects

" }, { "group": "Request", "type": "input[]", "optional": false, "field": "options.artboard.inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.artboard.inputs.input", "description": "

An object describing the input PSD to add to the artboard. Each input object will be either 'external' OR 'adobe'.Current support is for files less than 1000MB

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.artboard.inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.artboard.inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": false, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\": {\n \"artboard\": [\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n },\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/artboardCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"options\":{\n \"artboard\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"options\":{\"artboard\":[{\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}, {\"href\":\"\",\"storage\":\"\"}],\"outputs\":[{\"href\":\"\",\"storage\":\"\"}]}' https://image.adobe.io/pie/psdService/artboardCreate", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "artboard create status", "description": "

Returns the status of a artboard create job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "artboard_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":[\"\"],\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"type\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":[\n \"/files/project/input_1.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":[\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\"\n ],\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":[\n \"/files/project/input_with_errors.psd\"\n ],\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":[\n \"/files/project/input_with_errors.psd\",\n \"/files/project/input_2.psd\",\n \"/files/project/input_3.psd\"\n ],\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-artboard-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/renditionCreate", "title": "rendition create", "description": "

Initiates an asynchronous job to create renditions

", "version": "0.1.0", "name": "create_renditions", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input file. Currently supported filetypes include:

  • jpeg
  • png
  • psd
  • tiff
Current support is for files less than 1000MB." }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"outputs\": [\n {\n \"href\": \"\",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":,\n \"quality\": \"\"\n \"compression\": \"\",\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"\",\n \"storage\": \"external\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\":\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.jpeg\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.png\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\",\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"image/jpeg\",\n \"width\":512,\n \"overwrite\":true,\n \"quality\":2\n },\n {\n \"href\":\"/files/some_project/renders/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "HTTP Single File Example for Dropbox", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWWtE3MVXgWLkUgcw\",\n \"storage\":\"dropbox\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":1\n },\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitl/1/AH9p5Nn-fv4wvpezACpj4U0tALP8uqqOSxqcfUbCYZSNNrlfNkX0Ni-cUq8RqrRj-zBsYDMLqn-AZNmfxjVioY1Tfp5WTrqpnia3UpAgljk3UfWgDm8bW2Il144UDl7jzKFqFs1EHECZYpQb0yeqQywlTgtdSbfSdhocCaLrBWoy_ARVtmsw_bOUu7OyUPv_wgoGKa3b0YBdzKf2zvhWDcNgeV_sC8StpFWJobuZ5cMF8wL3pWtZwdbe2ukzXH2gWg-aeqNwA2h4uAbhwvoy2QqRdk1A5TxKUdSbCtRGOX1Y3YccPW5cnYmIOdeaCLU6EmAEaOGugG25vq5CX3LKZGqxky5OeXT4BGZGhSecdo9j2LBVR78Kl57nd_4NA4cwcaKUQFseu9eqsQjpDTvSOQzT7ODmisWFDWghtWAjxs12ew\",\n \"storage\":\"dropbox\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"small\"\n }\n ]\n}", "type": "http" }, { "title": "HTTP Batch Example", "content": "POST https://image.adobe.io/pie/psdService/renditionCreate HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"files/project_files\",\n \"storage\":\"adobe\"\n }\n ],\n \"outputs\":[\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":0,\n \"overwrite\":true,\n \"quality\":3\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"image/png\",\n \"width\":0,\n \"overwrite\":true,\n \"compression\":\"medium\"\n },\n {\n \"href\":\"/files/outputs\",\n \"storage\":\"adobe\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":true\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"outputs\": [{\"href\":\"\",\"storage\":\"\",\"type\": \"\",\"width\": ,\"overwrite\":, \"quality\": \"\", \"compression\": \"\"}]}' https://image.adobe.io/pie/psdService/renditionCreate", "type": "curl" } ] }, "filename": "docs-src/post-rendition-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentManifest", "title": "document manifest", "description": "

Initiates an asynchronous job to extract and return a psd file's layer information

", "version": "0.1.0", "name": "document_manifest", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.thumbnails", "description": "

Include presigned GET URLs to small preview thumbnails for any renderable layer.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"" ], "optional": false, "field": "options.thumbnails.type", "description": "

desired image format.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\":\"\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"\"\n }\n }\n}", "type": "http" }, { "title": "HTTP External Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Dropbox Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://dl.dropboxusercontent.com/apitul/1/KYTECIO6d2EDlg\",\n \"storage\":\"dropbox\"\n }\n ],\n \"options\":{\n \"thumbnails\":{\n \"type\":\"image/jpeg\"\n }\n }\n}", "type": "http" }, { "title": "HTTP Adobe Example", "content": "POST https://image.adobe.io/pie/psdService/layers HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \"/files/some_project/design.psd\",\n \"storage\": \"adobe\"\n }\n ],\n \"options\": {\n \"thumbnails\": {\n \"type\":\"image/png\"\n }\n }\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\":\"\",\"storage\":\"\"}],\"options\":{}}' https://image.adobe.io/pie/psdService/documentManifest", "type": "curl" } ] }, "filename": "docs-src/post-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document manifest status", "description": "

Returns status and layer info for a psd file created by POST /psdService/status. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "document_manifest_status", "group": "Photoshop", "success": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The layers to get.

" } ], "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.document", "description": "

information about the psd file

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.name", "description": "

name of the input file

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.document.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.document.photoshopBuild", "description": "

the name of the application that created the PSD

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"bitmap\"", "\"greyscale\"", "\"indexed\"", "\"rgb\"", "\"cmyk\"", "\"hsl\"", "\"hsb\"", "\"multichannel\"", "\"duotone\"", "\"lab\"", "\"xyz\"" ], "optional": false, "field": "outputs.output.document.imageMode", "description": "

the document's image mode.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "8", "16", "32" ], "optional": false, "field": "outputs.output.document.bitDepth", "description": "

the document's bit/channel depth.

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers", "description": "

a tree of layer objects representing the PSD layer structure extracted from the psd document

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer", "description": "

a layer object

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.id", "description": "

the layer id. Note an id of -1 is valid and indicates a PSD that only contains a background image and no layers

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.index", "description": "

the layer index

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.thumbnail", "description": "

If thumbnails were requested, a presigned GET URL to the thumbnail

" }, { "group": "Success 202", "type": "layer[]", "optional": false, "field": "outputs.output.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "outputs.output.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.locked", "description": "

is the layer locked

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.visible", "description": "

is the layer visible

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.brightness", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-150...150" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.brightnessContrast.contrast", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-20.0...20.0" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.exposure", "description": "

the layer's exposure. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-0.5...0.5" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.offset", "description": "

the layer's offset. Defaults to 0.0

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0.01...9.99" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.exposure.gammaCorrection", "description": "

the layer's gammaCorrection. Defaults to 1.0

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.colorize", "description": "

colorize

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"master\"" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-180...180" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.hue", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.saturation", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.hueSaturation.channels.lightness", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.preserveLuminosity", "description": "

preserveLuminosity

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.shadowLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.midtoneLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "array", "allowedValues": [ "-100...100" ], "optional": false, "field": "outputs.output.layers.layer.adjustments.colorBalance.highlightLevels", "description": "

array of 3 ints

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following layer types

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask", "description": "

An object describing the input mask added or replaced to the layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.enabled", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.mask.linked", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.x", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Success 202", "type": "integer", "optional": false, "field": "outputs.output.layers.layer.mask.offset.y", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject layer.

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.type", "description": "

Desired image format for the smart object.

" }, { "group": "Success 202", "type": "bool", "optional": false, "field": "outputs.output.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.smartObject.path", "description": "

Attribute for only Linked Smart Object. Indicates the relative path for the Linked Smart Object.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color type for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.red", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.green", "description": "" }, { "group": "Success 202", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.color.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text", "description": "

text settings

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.content", "description": "

the text string

" }, { "group": "Success 202", "type": "characterStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "float", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontAvailable", "description": "

is the font missing.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.orientation", "description": "

the text orientation

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Success 202", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "outputs.output.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Success 202", "type": "paragraphStyle[]", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Success 202", "type": "object", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "int", "optional": true, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": false, "field": "outputs.output.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "description": "

the paragraph alignment

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: {xsd:nonNegativeInteger}\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"document\":{\n \"name\":\"\",\n \"height\":,\n \"width\":,\n \"imageMode\":\"\",\n \"photoshopBuild\": \"\"\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"name\":\"\",\n \"type\":\"\",\n \"locked\":,\n \"visible\":,\n \"thumbnail\":\"\",\n \"mask\":{\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"type\":,\n \"linked\":,\n \"path\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"children\":[\n\n ],\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"text\":\"\",\n \"fontSize\":,\n \"fontName\":\"\",\n \"fontAvailable\":,\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"\",\n \"from\":,\n \"to\":\n }\n ]\n },\n \"adjustements\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n }\n }\n ]\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\":\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 2509\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n{\n\t\"jobId\": \"5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\",\n\t\"outputs\": [{\n\t\t\"input\": \"/files/some_project/design.psd\",\n\t\t\"status\": \"succeeded\",\n\t\t\"created\": \"2018-01-04T12:57:15.12345Z\",\n\t\t\"modified\": \"2018-01-04T12:58:36.12345Z\",\n\t\t\"document\": {\n\t\t\t\"name\": \"design.psd\",\n\t\t\t\"height\": 2100,\n\t\t\t\"width\": 1500,\n\t\t\t\"imageMode\": \"rgb\"\n\t\t},\n\t\t\"layers\": [{\n\t\t\t\t\"id\": 44,\n\t\t\t\t\"index\": 12,\n\t\t\t\t\"type\": \"adjustmentLayer\",\n\t\t\t\t\"name\": \"AdjustmentLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 38,\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"name\": \"SO Layer\",\n\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"add\": {\n\t\t\t\t\t\"insertTop\": true\n\t\t\t\t},\n\t\t\t\t\"smartObject\": {\n\t\t\t\t\t\"type\": \"image/jpeg\",\n\t\t\t\t\t\"linked\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 34,\n\t\t\t\t\"index\": 11,\n\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\"name\": \"TopLayer\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"140\",\n\t\t\t\t\t\"left\": \"1330\",\n\t\t\t\t\t\"width\": \"677\",\n\t\t\t\t\t\"height\": \"632\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 32,\n\t\t\t\t\"index\": 10,\n\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\"name\": \"GroupLayer\",\n\t\t\t\t\"locked\": true,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t},\n\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\"id\": 64,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"fillLayer\",\n\t\t\t\t\t\t\"name\": \"FillLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"fill\": {\n\t\t\t\t\t\t\t\"solidColor\": {\n\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\"red\": 0,\n\t\t\t\t\t\t\t\t\t\"green\": 255,\n\t\t\t\t\t\t\t\t\t\"blue\": 255\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blendOptions\": {\n\t\t\t\t\t\t\t\"opacity\": 90,\n\t\t\t\t\t\t\t\"blendMode\": \"normal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 44,\n\t\t\t\t\t\t\"index\": 9,\n\t\t\t\t\t\t\"type\": \"smartObject\",\n\t\t\t\t\t\t\"name\": \"SDK_PSD\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"1169\",\n\t\t\t\t\t\t\t\"left\": \"1757\",\n\t\t\t\t\t\t\t\"width\": \"343\",\n\t\t\t\t\t\t\t\"height\": \"331\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 60,\n\t\t\t\t\t\t\"index\": 8,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"HiddenLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 66,\n\t\t\t\t\t\t\"index\": 7,\n\t\t\t\t\t\t\"type\": \"layerSection\",\n\t\t\t\t\t\t\"name\": \"NestedGroup\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"mask\": {\n\t\t\t\t\t\t\t\"enabled\": false,\n\t\t\t\t\t\t\t\"linked\": true,\n\t\t\t\t\t\t\t\"offset\": {\n\t\t\t\t\t\t\t\t\"x\": 70,\n\t\t\t\t\t\t\t\t\"y\": 50\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"clip\": true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\t\t\"width\": \"0\",\n\t\t\t\t\t\t\t\"height\": \"0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"children\": [{\n\t\t\t\t\t\t\t\t\"id\": 53,\n\t\t\t\t\t\t\t\t\"index\": 6,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"AreaTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"265\",\n\t\t\t\t\t\t\t\t\t\"left\": \"155\",\n\t\t\t\t\t\t\t\t\t\"width\": \"470\",\n\t\t\t\t\t\t\t\t\t\"height\": \"317\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"fontSize\": 12.5,\n\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Arial\",\n\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\",\n\t\t\t\t\t\t\t\t\t\t\"fontColor\": {\n\t\t\t\t\t\t\t\t\t\t\t\"rgb\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"red\": 26086,\n\t\t\t\t\t\t\t\t\t\t\t\t\"green\": 23002,\n\t\t\t\t\t\t\t\t\t\t\t\t\"blue\": 8224\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\"alignment\": \"justify\"\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"id\": 6,\n\t\t\t\t\t\t\t\t\"index\": 5,\n\t\t\t\t\t\t\t\t\"type\": \"textLayer\",\n\t\t\t\t\t\t\t\t\"name\": \"PointTextLayer\",\n\t\t\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\t\t\"top\": \"55\",\n\t\t\t\t\t\t\t\t\t\"left\": \"158\",\n\t\t\t\t\t\t\t\t\t\"width\": \"154\",\n\t\t\t\t\t\t\t\t\t\"height\": \"50\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"text\": {\n\t\t\t\t\t\t\t\t\t\"content\": \"My Text String\",\n\t\t\t\t\t\t\t\t\t\"characterStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 8,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"fontSize\": 10,\n\t\t\t\t\t\t\t\t\t\t\t\"fontName\": \"Helvetica-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\"fontAvailable\": true,\n\t\t\t\t\t\t\t\t\t\t\t\"orientation\": \"horizontal\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"paragraphStyles\": [{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 5,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"right\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"from\": 6,\n\t\t\t\t\t\t\t\t\t\t\t\"to\": 13,\n\t\t\t\t\t\t\t\t\t\t\t\"alignment\": \"center\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 39,\n\t\t\t\t\t\t\"index\": 3,\n\t\t\t\t\t\t\"type\": \"contentLayer\",\n\t\t\t\t\t\t\"name\": \"ShapeLayer\",\n\t\t\t\t\t\t\"locked\": false,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"727\",\n\t\t\t\t\t\t\t\"left\": \"91\",\n\t\t\t\t\t\t\t\"width\": \"473\",\n\t\t\t\t\t\t\t\"height\": \"380\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"index\": 2,\n\t\t\t\t\t\t\"type\": \"layer\",\n\t\t\t\t\t\t\"name\": \"ImageLayer\",\n\t\t\t\t\t\t\"locked\": true,\n\t\t\t\t\t\t\"visible\": true,\n\t\t\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\t\t\"bounds\": {\n\t\t\t\t\t\t\t\"top\": \"316\",\n\t\t\t\t\t\t\t\"left\": \"702\",\n\t\t\t\t\t\t\t\"width\": \"639\",\n\t\t\t\t\t\t\t\"height\": \"791\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": 1,\n\t\t\t\t\"index\": 0,\n\t\t\t\t\"type\": \"backgroundLayer\",\n\t\t\t\t\"name\": \"Background\",\n\t\t\t\t\"locked\": false,\n\t\t\t\t\"visible\": true,\n\t\t\t\t\"thumbnail\": \"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n\t\t\t\t\"bounds\": {\n\t\t\t\t\t\"top\": \"0\",\n\t\t\t\t\t\"left\": \"0\",\n\t\t\t\t\t\"width\": \"2100\",\n\t\t\t\t\t\"height\": \"1500\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}],\n\t\"_links\": {\n\t\t\"self\": {\n\t\t\t\"href\": \"https://image.adobe.io/pie/psdService/status/5b0ac5d9-5b1a-4f1c-ac69-22fe8a40a037\"\n\t\t}\n\t}\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" } ] }, "filename": "docs-src/get-document-manifest.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/documentOperations", "title": "document operations", "description": "

Initiates an asynchronous job to apply (optional) psd edits and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "document_operations", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "font[]", "optional": true, "field": "options.fonts", "description": "

array of custom fonts needed in this document

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.fonts.font", "description": "

An object describing the input font to add or replace for a Text layer. Filename should be <font_postscript_name>.otf
If the font filename is not in the specified format above, font substitution will occur.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.fonts.font.storage", "defaultValue": "adobe", "description": "

fonts.font.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3).

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.fonts.font.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document", "description": "

set of document level edits. Document level edits will always be applied AFTER layer level edits have been performed.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.canvasSize", "description": "

crop parameters

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.height", "description": "

crop height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.canvasSize.width", "description": "

crop width

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"" ], "optional": true, "field": "options.document.canvasSize.horizontal", "defaultValue": "center", "description": "

the horizontal anchor position for crop

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"top\"", "\"center\"", "\"bottom\"" ], "optional": true, "field": "options.document.canvasSize.vertical", "defaultValue": "center", "description": "

the vertical anchor position for crop

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.imageSize", "description": "

resize parameters. resizing a PSD always maintains the original aspect ratio by default. If the new width & height values specified in the parameters does not match the original aspect ratio, then the specified height will not be used and the height will be determined automatically.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.height", "description": "

resize height

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.document.imageSize.width", "description": "

resize width

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.document.trim", "description": "

image trim parameters.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"transparentPixels\"" ], "optional": false, "field": "options.document.trim.basedOn", "defaultValue": "transparentPixels", "description": "" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object describing the layer.id and any desired attribute changes

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.edit", "description": "

Indicates you want to edit the layer identified by it's id or name. Note the object is currently empty but leaves room for futher enhancements. The layer block should than contain changes from the original manifest. If you apply it to a group layer you will be effecting the attributes of the group layer itself, not the child layers

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move", "description": "

Inidicates you want to move the layer identified by it's id or name. You must also indicate where you want to move the layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.moveChildren", "defaultValue": "true", "description": "

If layer is a group layer than true = move the set as a unit. Otherwise an empty group is moved and any children are left where they were, ungrouped.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertAbove", "description": "

Used to move the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertAbove.id", "description": "

The id of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertAbove.name", "description": "

The name of the layer you want to move above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertBelow", "description": "

Used to move the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertBelow.id", "description": "

The id of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertBelow.name", "description": "

The name of the layer you want to move below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.move.insertInto", "description": "

Used to move the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.move.insertInto.id", "description": "

The id of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.move.insertInto.name", "description": "

The name of the group layer you want to move into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertTop", "description": "

Indicates the layer should be moved at the top of the layer stack.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.move.insertBottom", "description": "

Indicates the layer should be moved at the bottom of the layer stack. If the image has a background image than the new layer will be inserted above it instead.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom After successful completion of this async request please call layers.read again in order to get a refreshed manifest with the latest layer indexes and any new layer id's. Currently supported layer types available for add are:

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.delete", "description": "

Indicates you want to delete the layer, including any children, identified by the id or name. Note the object is currently empty but leaves room for futher enhancements.

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

the layer id

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.index", "description": "

the layer index. Required when deleting a layer, otherwise not used

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers.layer.children", "description": "

an array of nested layer objects. Only layerSections (group layers) can include children

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"layer\"", "\"textLayer\"", "\"adjustmentLayer\"", "\"smartObject\"", "\"fillLayer\"", "\"backgroundLayer\"" ], "optional": false, "field": "options.layers.layer.type", "description": "

the layer type.

  • layer - a pixel layer
  • textLayer - a text layer
  • adjustmentLayer - an adjustment layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • backgroundLayer - a background layer
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for a Pixel or Embedded Smart Object layer. Supported image types are PNG or JPEG.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images support bounds. If the bounds do not reflect the width and height of the image the image will be resized to fit the bounds

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.name", "description": "

the layer name.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

is the layer visible

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments", "description": "

adjustment layer info

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast", "description": "

brightness and contrast ettings

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.brightness", "defaultValue": "0", "description": "

the adjustmentLayer's brightness:

" }, { "group": "Request", "type": "int", "allowedValues": [ "-150...150" ], "optional": true, "field": "options.layers.layer.adjustments.brightnessContrast.contrast", "defaultValue": "0", "description": "

the adjustmentLayer's contrast:

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.exposure", "description": "

exposure settings

" }, { "group": "Request", "type": "float", "allowedValues": [ "-20.00...20.00" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.exposure", "defaultValue": "0.0", "description": "

the layer's exposure.

" }, { "group": "Request", "type": "float", "allowedValues": [ "-0.5000...0.5000" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.offset", "defaultValue": "0.0", "description": "

the layer's offset.

" }, { "group": "Request", "type": "float", "allowedValues": [ "0.01...9.99" ], "optional": true, "field": "options.layers.layer.adjustments.exposure.gammaCorrection", "defaultValue": "1.0", "description": "

the layer's gammaCorrection.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation", "description": "

hue and saturation settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.colorize", "defaultValue": "false", "description": "

colorize

" }, { "group": "Request", "type": "array", "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels", "description": "

an array of hashes representing the 'master' channel (the remaining five channels of 'magentas', 'yellows', 'greens', etc are not yet supported)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"master\"" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.channel", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-180...180" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.hue", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.saturation", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.hueSaturation.channels.lightness", "defaultValue": "0", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.adjustments.colorBalance", "description": "

color balance settings

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.adjustments.colorBalance.preserveLuminosity", "defaultValue": "true", "description": "

preserveLuminosity

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.shadowLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.midtoneLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "array", "allowedValues": [ "-100...100" ], "optional": true, "field": "options.layers.layer.adjustments.colorBalance.highlightLevels", "defaultValue": "[0,0,0", "description": "

array of 3 ints

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

the bounds of the layer. applicable for the following

  • layer - a pixel layer
  • adjustmentLayer - an adjustment layer
  • textLayer - a text layer
  • layerSection - a grouping layer
  • smartObject - a smart object
  • fillLayer - a fill layer
" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask", "description": "

An object describing the input mask to be added or replaced to the layer.Supported mask type is Layer Mask.
The input file must be a greyscale image.
Supported file types are jpeg, png and psd.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.mask.input", "description": "

An object describing the input grayscale file to add or replace for a mask. Supported image types are PNG or JPEG or PSD.

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.mask.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.mask.input.storage", "defaultValue": "adobe", "description": "

storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or storage="external" is an external service (like A

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.clip", "description": "

Indicates if this is a clipped layer. A layer can't be clipped if it is the bottommost layer, a start/end of a layer set, or if base turns out to be end of group.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.enabled", "defaultValue": "true", "description": "

Indicates a mask is enabled on that layer or not.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.mask.linked", "defaultValue": "true", "description": "

Indicates a mask is linked to the layer or not.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.mask.offset", "description": "

An object to specify mask offset on the layer.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.x", "defaultValue": "0", "description": "

Offset to indicate horizontal move of the mask.

" }, { "group": "Request", "type": "integer", "optional": true, "field": "options.layers.layer.mask.offset.y", "defaultValue": "0", "description": "

Offset to indicate vertical move of the mask.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.smartObject", "description": "

An object describing the attributes specific to creating or editing a smartObject.
SmartObject properties need the input smart object file to operate on, which can be obtained from Input block. Currently we support Embedded Smart Object only.So this block is optional. If you are creating a Linked Smart Object, this is a required block.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.smartObject.linked", "defaultValue": "false", "description": "

Indicates if this Smart Object is linked. Currently we support Embedded Smart Object only which means "linked = false".

" }, { "group": "Request", "type": "object", "optional": true, "field": "outputs.output.layers.layer.fill", "description": "

An object describing the attributes specific to creating or editing a fill layer.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor", "description": "

An object describing the solid color fill for this fill layer. Currently supported mode is RGB only.

" }, { "group": "Request", "type": "object", "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb", "description": "

An object describing the rgb color format in 8 bits for this fill layer.

" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.red", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.green", "description": "" }, { "group": "Request", "type": "integer", "allowedValues": [ "0..255" ], "optional": false, "field": "outputs.output.layers.layer.fill.solidColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text", "description": "

text settings

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.text.content", "description": "

the text string

" }, { "group": "Request", "type": "charactersStyle[]", "optional": true, "field": "options.layers.layer.text.characterStyles", "description": "

characterStyle settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each characterStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle", "description": "" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.from", "description": "

The beginning of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "float", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontSize", "description": "

in points

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontName", "description": "

the font's postscript name. The list of supported fonts is at https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"horizontal\"", "\"vertical\"" ], "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.orientation", "defaultValue": "horizontal", "description": "

the text orientation

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor", "description": "

the font color settings.It can be in one of the formats

  • rgb
  • cmyk
  • gray
  • lab
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb", "description": "

the font color settings for rgb mode in 16bit repesentation

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.red", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.green", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.rgb.blue", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk", "description": "

the font color settings for cmyk mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.cyan", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.magenta", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.yellowColor", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.cmyk.black", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray", "description": "

the font color settings for gray mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.gray.gray", "description": "" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab", "description": "

the font color settings for lab mode in 16bit repesentation.

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.luminance", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.a", "description": "" }, { "group": "Request", "type": "int", "allowedValues": [ "0..32768" ], "optional": false, "field": "options.layers.layer.text.characterStyles.characterStyle.fontColor.lab.b", "description": "" }, { "group": "Request", "type": "paragraphStyle[]", "optional": true, "field": "options.layers.layer.text.paragrapStyles", "description": "

paragrapStyles settings. If the same supported attributes apply to all characters in the layer than this will be an array of one item, otherwise each paragraphStyle object will have a 'from' and 'to' value indicating the range of characters that the style applies to.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle", "description": "

paragraph style settings

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"left\"", "\"center\"", "\"right\"", "\"justify\"", "\"justifyLeft\"", "\"justifyCenter\"", "\"justifyRight\"" ], "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.alignment", "defaultValue": "left", "description": "

the paragraph alignment

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.from", "description": "

The beginning of the range of characters that this paragraphStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.text.paragrapStyles.paragraphStyle.to", "description": "

The ending of the range of characters that this characterStyle applies to. Based on initial index of 0. For example a style applied to only the first two characters would be from=0 and to=1

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.blendOptions", "description": "

Blend options of a layer, including opacity and blend mode

" }, { "group": "Request", "type": "int", "allowedValues": [ "0..100" ], "optional": true, "field": "options.layers.layer.blendOptions.opacity", "description": "

Indicates the opacity value of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"normal\"", "\"dissolve\"", "\"darken\"", "\"multiply\"", "\"colorBurn\"", "\"linearBurn\"", "\"darkerColor\"", "\"lighten\"", "\"screen\"", "\"colorDodge\"", "\"linearDodge\"", "\"lighterColor\"", "\"overlay\"", "\"softLight\"", "\"hardLight\"", "\"vividLight\"", "\"linearLight\"", "\"pinLight\"", "\"hardMix\"", "\"difference\"", "\"exclusion\"", "\"subtract\"", "\"divide\"", "\"hue\"", "\"saturation\"", "\"color\"", "\"luminosity\"" ], "optional": true, "field": "options.layers.layer.blendOptions.blendMode", "description": "

Blend mode of a layer

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file outputs (a new psd file or supported renditions)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3).You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

  • CC Storage hrefs
    • Can be either a single asset or a folder
    • Must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
  • Template Tokens: At runtime these three tokens get replaced with their respective values... (FOR \"adobe\" STORED FILES ONLY)
    • $ReqID - replaced with the request id generated by the service
    • $FileNum - replaced with an increment-by-1 counter, beginning at 0, so that each output file gets a unique number assigned
    • $FileName - replaced with file name minus the \".\" and file extension
  • If the output path is a folder than the Template Tokens will be used to dynamically generate the output file name according to the pattern \"/files/<path>/$ReqID_$FileName_$FileNum.<ext>\"
" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

  • image/vnd.adobe.photoshop - Create a new PSD file
  • image/jpeg, image/png, image/tiff - Create a new jpeg, png or tiff rendition
Image mode coversions:

Certain image modes (rgb, cmyk, greyscale, etc) must be converted to another image mode before a rendition can be created:
  • Tiff Requested: Multichannel and Duotone will convert to RGB
  • PNG Requested: CMYK, HSL, HSB, Multichannel, Duotone, Lab and XYZ will convert to RGB
" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.overwrite", "defaultValue": "true", "description": "

CURRENTLY_UNSUPPORTED (defaults to 'true') if the output file already exists should it be overwritten. Will eventually support eTags

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output.trimToCanvas", "defaultValue": "false", "description": "

'false' generates renditions that are the actual size of the layer (as seen by View > Show > Layer Edges within the Photoshop desktop app) but will remove any extra transparent pixel padding. 'true' generates renditions that are the size of the canvas, either trimming the layer to the visible portion of the canvas or padding extra space. If the requested file format supports transparency than transparent pixels will be used for padding, otherwise white pixels will be used.

" }, { "group": "Request", "type": "layer[]", "optional": true, "field": "outputs.output.layers", "description": "

An array of layer objects.
By including this array you are signaling that you'd like a rendition created from these layer id's or layer names (currently limited to only one entry). Excluding it will generate a document-level rendition.

" }, { "group": "Request", "type": "int", "optional": false, "field": "outputs.output.layers.id", "description": "

the layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.layers.name", "description": "

the layer name.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\" or \",\n \"storage\":\"\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":,\n \"width\":,\n \"horizontal\":<\"horizontal\">,\n \"vertical\":<\"vertical\">\n },\n \"imageSize\":{\n \"height\":,\n \"width\":\n },\n \"trim\": {\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"id\":,\n \"index\":,\n \"type\":\"\",\n \"name\":\"\",\n \"locked\":,\n \"visible\":,\n \"children\":[\n\n ],\n \"edit\":{},\n \"add\":{\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"move\":{\n \"includeChildren\":,\n \"insertAbove\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertBelow\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertInto\":{\n \"id\":,\n \"name\":\"\"\n },\n \"insertTop\":,\n \"insertBottom\":\n },\n \"delete\":{\n \"includeChildren\":\n },\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"mask\":{\n \"input\":{\n \"href\":\" or \",\n \"storage\":\"\"\n },\n \"enabled\":,\n \"linked\":,\n \"offset\":{\n \"x\":,\n \"y\":\n },\n \"clip\":\n },\n \"smartObject\":{\n \"linked\":\n }\n \"bounds\":{\n \"top\":,\n \"left\":,\n \"width\":,\n \"height\":\n },\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":<8 bit int>,\n \"green\":<8 bit int>,\n \"blue\":<8 bit int>\n }\n }\n },\n \"text\":{\n \"content\":\"\",\n \"characterStyles\":[\n {\n \"from\":,\n \"to\":,\n \"fontSize\":,\n \"fontName\":\"\",\n \"orientation\":\"\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":<16 bit integer>,\n \"green\":<16 bit integer>,\n \"blue\":<16 bit integer>\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"from\":,\n \"to\":,\n \"alignment\":\"\"\n }\n ]\n },\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":<-150..150>,\n \"contrast\":<-150..150>\n },\n \"exposure\":{\n \"exposure\":<-20...20>,\n \"offset\":<-0.5...0.5>,\n \"gammaCorrection\":<0.01...9.99>\n },\n \"colorBalance\":{\n \"preserveLuminosity\":true,\n \"shadowLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"midtoneLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ],\n \"highlightLevels\":[\n <-100...100>,\n <-100...100>,\n <-100...100>\n ]\n },\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":<180...180>,\n \"saturation\":<-100...100>,\n \"lightness\":<-100...100>\n }\n ],\n \"colorize\":false\n }\n },\n \"blendOptions\": {\n \"opacity\":,\n \"blendMode\": \"\"\n }\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"\",\n \"storage\":\"adobe\",\n \"type\":\"\",\n \"width\":,\n \"overwrite\":,\n \"trimToCanvas\":,\n \"layers\":[\n {\n \"id\":,\n \"name\":\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/documentOperations HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n ],\n \"options\":{\n \"document\":{\n \"canvasSize\":{\n \"height\":200,\n \"width\":200,\n \"horizontal\":\"left\",\n \"vertical\":\"top\"\n },\n \"imageSize\":{\n \"height\":100,\n \"width\":100\n },\n \"trim\":{\n \"basedOn\":\"transparentPixels\"\n }\n },\n \"layers\":[\n {\n \"add\":{\n \"insertTop\":true\n },\n \"name\":\"new adjustment layer\",\n \"type\":\"adjustmentLayer\",\n \"visible\":true,\n \"adjustments\":{\n \"brightnessContrast\":{\n \"brightness\":-23,\n \"contrast\":15\n }\n }\n },\n {\n \"add\":{\n \"insertBottom\":true\n },\n \"name\":\"new content layer\",\n \"type\":\"fillLayer\",\n \"visible\":true,\n \"fill\":{\n \"solidColor\":{\n \"rgb\" : {\n \"red\":0,\n \"green\":255,\n \"blue\":255\n }\n }\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"index\":8,\n \"locked\":false,\n \"name\":\"SO Layer\",\n \"type\":\"smartObject\",\n \"visible\":true,\n \"add\":{\n \"insertTop\":true\n },\n \"input\":{\n \"href\":\"files/input/Simple.psd\",\n \"storage\":\"adobe\"\n },\n \"smartObject\":{\n \"linked\":false\n }\n },\n {\n \"id\":33,\n \"edit\":{\n\n },\n \"index\":6,\n \"type\":\"textLayer\",\n \"name\":\"my text layer\",\n \"locked\":true,\n \"visible\":true,\n \"bounds\":{\n \"top\":50,\n \"left\":100,\n \"width\":500,\n \"height\":450\n },\n \"text\":{\n \"content\":\"NEW TEXT CHANGES\",\n \"characterStyles\":[\n {\n \"fontSize\":12.5,\n \"fontName\":\"Arial-BoldMT\",\n \"orientation\":\"horizontal\",\n \"fontColor\":{\n \"rgb\":{\n \"red\":26086,\n \"green\":23002,\n \"blue\":8224\n }\n }\n }\n ],\n \"paragraphStyles\":[\n {\n \"alignment\":\"left\"\n }\n ]\n },\n \"blendOptions\":{\n \"opacity\":90,\n \"blendMode\":\"normal\"\n }\n },\n {\n \"add\":{\n \"insertAbove\":{\n \"id\":53\n }\n },\n \"name\":\"New Exposure Layer\",\n \"type\":\"adjustmentLayer\",\n \"locked\":false,\n \"visible\":true,\n \"adjustments\":{\n \"exposure\":{\n \"exposure\":0.25,\n \"offset\":0.0049,\n \"gammaCorrection\":1.38\n }\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":78,\n \"index\":2,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Color Balance\",\n \"locked\":false,\n \"visible\":true,\n \"mask\":{\n \"input\":{\n \"href\":\"files/abc.psd\",\n \"storage\":\"adobe\"\n },\n \"enabled\":false,\n \"linked\":true,\n \"offset\":{\n \"x\":70,\n \"y\":50\n },\n \"clip\":true\n },\n \"adjustments\":{\n \"colorBalance\":{\n \"shadowLevels\":[\n 0,\n 10,\n 20\n ],\n \"preserveLuminosity\":true,\n \"midtoneLevels\":[\n 30,\n 40,\n 50\n ],\n \"highlightLevels\":[\n 60,\n 70,\n 80\n ]\n }\n }\n },\n {\n \"move\":{\n \"insertAbove\":{\n \"name\":\"Hue Saturation\"\n }\n },\n \"name\":\"new Image layer\",\n \"type\":\"layer\",\n \"visible\":true,\n \"input\":{\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\"\n }\n },\n {\n \"edit\":{\n\n },\n \"id\":77,\n \"index\":1,\n \"type\":\"adjustmentLayer\",\n \"name\":\"Hue Saturation\",\n \"locked\":false,\n \"visible\":true,\n \"adjustements\":{\n \"hueSaturation\":{\n \"channels\":[\n {\n \"channel\":\"master\",\n \"hue\":-5,\n \"saturation\":20,\n \"lightness\":0\n }\n ],\n \"colorize\":false\n }\n }\n },\n {\n \"type\":\"backgroundLayer\",\n \"index\":0,\n \"locked\":true,\n \"id\":1,\n \"visible\":true,\n \"name\":\"Background\"\n }\n ]\n },\n \"outputs\":[\n {\n \"href\":\"/files/some_project/output/design_$ReqID_$FileName.psd\",\n \"storage\":\"adobe\",\n \"type\":\"image/jpeg\",\n \"width\":500,\n \"overwrite\":true,\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_putObject..\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\",\n \"overwrite\":false\n }\n ]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\":[{\"href\":\"\",\"storage\":\"\"}],\"options\":{\"layers\":[{}]},\"outputs\":[{\"href\":\"\",\"storage\":\"\",\"type\":\"\",\"width\":,\"overwrite\":},{\"external\":\",\"type\":\"\",\"width\":,\"overwrite\":\"\"}]}' https://image.adobe.io/pie/psdService/documentOperations", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobId>", "title": "document operations status", "description": "

Returns the status of a File job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "get_file_job_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobId", "description": "

The jobId to get status for.

" } ] } }, "success": { "examples": [ { "title": "Response: Success Example", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: 1082\nLocation: \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/files/some_project/design1.psd\",\n \"status\":\"pending\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"/files/some_project/design2.psd\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/files/some_project/OUTPUT/design2_new.psd\",\n \"storage\":\"adobe\",\n \"width\":\"500\",\n \"type\":\"image/jpeg\",\n \"trimToCanvas\":false,\n \"layers\":[\n {\n \"id\":77\n }\n ]\n }\n ]\n }\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"error\":{\n \"type\":\"InputValidationError\",\n \"title\":\"request parameters didn't validate\",\n \"code\":\"400\",\n \"invalidParams\":[\n {\n \"name\":\"contrast\",\n \"reason\":\"value must be an int between -150 and 150\"\n },\n {\n \"name\":\"exposure\",\n \"reason\":\"must be bool\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ], "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"true\"", "\"false\"" ], "optional": true, "field": "outputs.output._links.renditions.rendition.trimToCanvas", "description": "" }, { "group": "Success 202", "type": "layer[]", "optional": true, "field": "outputs.output._links.renditions.rendition.layers", "description": "

an array of layer objects signifying the rendition needed for a document.

" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.id", "description": "

the layer id

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.layers.name", "description": "

the layer name.

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] } }, "filename": "docs-src/get-document-operations.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "get", "url": "https://image.adobe.io/pie/psdService/status/<:jobID>", "title": "rendition create status", "description": "

Returns the status of a create rendition job. Will return 202 as long as there are child jobs still running and 200 once all children are complete

", "version": "0.1.0", "name": "rendition_create_status", "group": "Photoshop", "parameter": { "fields": { "URL Param": [ { "group": "URL Param", "type": "string", "optional": false, "field": "jobID", "description": "

The jobID to get status for.

" } ] } }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "string", "optional": false, "field": "jobId", "description": "

the job's id requested

" }, { "group": "Success 202", "type": "output[]", "optional": false, "field": "outputs", "description": "

array of output objects

" }, { "group": "Success 202", "type": "array", "optional": false, "field": "outputs.output", "description": "

an output object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.input", "description": "

the original input file path

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.status", "description": "

the child job status

  • pending - request has been accepted and is waiting to start
  • running - the child job is running
  • uploading - files have been generated and are uploading to destination
  • succeeded - the child job has succeeded
  • failed - the child job has failed
" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.created", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" created timestamp of the job

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.modified", "description": "

"YYYY-DD-MMThh:mm:ss.mmmmmZ" modified timestamp of the job

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links", "description": "

the rendition links

" }, { "group": "Success 202", "type": "rendition[]", "optional": false, "field": "outputs.output._links.renditions", "description": "

array off rendition objects

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output._links.renditions.rendition", "description": "

rendition object

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output._links.renditions.rendition.href", "description": "

the rendition location

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"external\"", "\"adobe\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.storage", "description": "" }, { "group": "Success 202", "type": "int", "optional": false, "field": "outputs.output._links.renditions.rendition.width", "description": "

the requested rendition width in pixels.

" }, { "group": "Success 202", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output._links.renditions.rendition.type", "description": "" }, { "group": "Success 202", "type": "object", "optional": false, "field": "outputs.output.errors", "description": "

any errors reported requested output

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.type", "description": "

a machine readable error type

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.code", "description": "

a machine readable error code

" }, { "group": "Success 202", "type": "string", "optional": false, "field": "outputs.output.errors.title", "description": "

a short human readable error summary

" }, { "group": "Success 202", "type": "array", "optional": true, "field": "outputs.output.errors.errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue

" } ] }, "examples": [ { "title": "Response: Success Example Single File:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<:jobID>\"\n{\n \"jobID\":\"0d6029b8-1159-4b6e-b4c3-25816f91f030\",\n \"outputs\":[\n {\n \"input\":\"/files/project/input.psd\",\n \"status\":\"running\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\"\n },\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/png\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"width\":0,\n \"type\":\"image/tiff\"\n },\n {\n \"href\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"storage\":\"external\",\n \"type\":\"vnd.adobe.photoshop\"\n }\n ]\n }\n },\n {\n \"input\":\"/files/project/input_with_errors.psd\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"errors\":{\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"code\":\"404\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\"\n }\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n }\n }\n}", "type": "object" }, { "title": "Response: Success Example Batch:", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 233\nLocation: \"https://image.adobe.io/pie/psdService/status/<<:jobID>>\"\n{\n \"jobID\": \"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/one.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n },\n {\n \"input\":\"/file/project_files/\",\n \"status\":\"succeeded\",\n \"created\":\"2018-01-04T12:57:15.12345:Z\",\n \"modified\":\"2018-01-04T12:58:36.12345:Z\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"/file/project_files/two.psd\",\n \"storage\":\"external\",\n \"width\":512,\n \"type\":\"image/jpeg\"\n }\n ]\n }\n }\n ],\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobID>\" }\n }\n}", "type": "object" }, { "title": "Request: HTTP Example", "content": "GET /psdService/status/<:jobId> HTTP/1.1\nHost: image.adobe.io\nAuthorization: Bearer $token\nX-Api-Key: $api_key", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X GET https://image.adobe.io/pie/psdService/status/<:jobId>", "type": "curl" }, { "title": "Response: Success Templated", "content": "HTTP/1.1 202\nContent-Type: application/json\nContent-Length: \nLocation: \"/psdService/status/<:jobId>\"\n{\n \"jobId\":\"<:jobId>\",\n \"outputs\":[\n {\n \"input\":\"\",\n \"status\":\"\",\n \"_links\":{\n \"renditions\":[\n {\n \"href\":\"\",\n \"storage\":\"\",\n \"width\":\"\",\n \"type\":\"\"\n }\n ]\n }\n },\n {\n \"input\":\"\",\n \"status\":\"\",\n \"errors\": {\n \"type\": \"\",\n \"title\": \"\",\n \"code\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ],\n \"_links\":{\n \"self\":{\n \"href\":\"https://image.adobe.io/pie/psdService/status/<:jobId>\"\n }\n }\n}", "type": "object" } ] }, "filename": "docs-src/get-renditions-create.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Error-Response-Inline Templated", "content": "// This is a templated example for when a requested job has failed\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"jobId\": \"\",\n \"status\":\"\",\n \"created\":\"\",\n \"modified\":\"\",\n \"errors\":{\n \"type\":\"\",\n \"title\":\"\",\n \"code\": \"\"\",\n \"\":[\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n }\n }\n ]\n}", "type": "object" }, { "title": "Error-Response-Inline Example", "content": " // In this example the GET call to /status succeeds but one of the initiated jobs has failed\n\n HTTP/1.1 200 OK\n Content-Type: application/json\n Content-Length: {xsd:nonNegativeInteger}\n Location: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n {\n \"jobId\":\"f54e0fcb-260b-47c3-b520-de0d17dc2b67\",\n \"outputs\":[\n {\n \"input\":\"https://some-bucket-us-east-1.amazonaws.com/s3_presigned_getObject...\",\n \"status\":\"failed\",\n \"created\":\"2018-01-04T12:57:15.12345Z\",\n \"modified\":\"2018-01-04T12:58:36.12345Z\",\n \"error\":{\n \"type\":\"FileExistsError\",\n \"title\":\"input file does not exist\",\n \"code\":\"400\"\n }\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://image.adobe.io/pie/psdService/smartObject", "title": "smartObject", "description": "

Initiates an asynchronous job to apply psd edits for replacing embedded smart object and then generate renditions and/or save a new psd

", "version": "0.1.0", "name": "smartObject", "group": "Photoshop", "parameter": { "fields": { "Request": [ { "group": "Request", "type": "input[]", "optional": false, "field": "inputs", "description": "

An array of input objects.

" }, { "group": "Request", "type": "object", "optional": false, "field": "inputs.input", "description": "

An object describing an input PSD file.Current support is for files less than 1000MB.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options", "description": "

available options to apply to all input files

" }, { "group": "Request", "type": "layer[]", "optional": false, "field": "options.layers", "description": "

array of layer objects An array of layer objects you wish to act upon (edit, add, delete). Any layer missing an "operations" block will be ignored.

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer", "description": "

a layer object to replace the smartobject layer with the same bounds as the original

" }, { "group": "Request", "type": "int", "optional": false, "field": "options.layers.layer.id", "description": "

The layer id

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.name", "description": "

The layer name.You can identify a layer by id or name. That makes either id or name a required field.

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.locked", "defaultValue": "false", "description": "

Is the layer locked

" }, { "group": "Request", "type": "bool", "optional": true, "field": "options.layers.layer.visible", "defaultValue": "true", "description": "

Is the layer visible

" }, { "group": "Request", "type": "object", "optional": false, "field": "options.layers.layer.input", "description": "

An object describing the input file to add or replace for the Embedded Smart Object layer. Supported image types are PNG or JPEG or SVG or PSD.
Added images are always placed at (top,left = 0,0) and bounds are ignored
Edited images are replaced for exact pixel size

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "options.layers.layer.input.storage", "defaultValue": "adobe", "description": "

inputs.input.storage="adobe" is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "options.layers.layer.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPutURL

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add", "description": "

Inidicates you want to add a new smart object layer. You must also indicate where you want to insert the new layer by supplying one of the attributes insertAbove, insertBelow, insertInto, insertTop or insertBottom. "Add" block overwrites the default "Edit" block.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertAbove", "description": "

Used to add the layer above another. If the layer ID indicated is a group layer than the layer will be inserted above the group layer.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertAbove.id", "description": "

The id of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertAbove.name", "description": "

The name of the layer you want to insert above. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertBelow", "description": "

Used to add the layer below another. If the layer ID indicated is a group layer than the layer will be inserted below (and outside of) the group layer

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertBelow.id", "description": "

The id of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertBelow.name", "description": "

The name of the layer you want to insert below. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.add.insertInto", "description": "

Used to add the layer inside of a group. Useful when you need to move a layer to an empty group.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.add.insertInto.id", "description": "

The id of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "string", "optional": true, "field": "options.layers.layer.add.insertInto.name", "description": "

The name of the group layer you want to insert into. Use either id OR name.

" }, { "group": "Request", "type": "object", "optional": true, "field": "options.layers.layer.bounds", "description": "

The bounds of this layer. While replacing a smart object if you provide the same aspect ratio(width/height) as of the actual image as a bound, the embedded SO will not be a distorted image.

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.top", "description": "

in pixels

" }, { "group": "Request", "type": "int", "optional": true, "field": "options.layers.layer.bounds.left", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.width", "description": "

in pixels

" }, { "group": "Request", "type": "float", "allowedValues": [ "=4.00...32000.00" ], "optional": true, "field": "options.layers.layer.bounds.height", "description": "

in pixels

" }, { "group": "Request", "type": "output[]", "optional": false, "field": "outputs", "description": "

An array of output objects

" }, { "group": "Request", "type": "output", "optional": false, "field": "outputs.output", "description": "

An object describing the requested file output (a new PSD file. right now supports a single output PSD)

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "outputs.output.storage", "defaultValue": "adobe", "description": "

Is the output location in Adobe's Creative Cloud Storage or an external service (like AWS S3)

" }, { "group": "Request", "type": "string", "optional": false, "field": "outputs.output.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedPUTURL..

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"image/jpeg\"", "\"image/png\"", "\"image/tiff\"", "\"vnd.adobe.photoshop\"" ], "optional": false, "field": "outputs.output.type", "description": "

desired image format.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.quality", "defaultValue": "7", "description": "

quality of the renditions for JPEG. Range from 1 to 7, with 7 as the highest quality.

" }, { "group": "Request", "type": "string", "optional": true, "field": "outputs.output.compression", "defaultValue": "large", "description": "

compression level for PNG: small, medium or large.

" }, { "group": "Request", "type": "int", "optional": true, "field": "outputs.output.width", "defaultValue": "0", "description": "

width, in pixels, of the renditions. Width of 0 generates a full size rendition. Height is not necessary as the rendition generate will automatically figure out the correct width-to-height aspect ratio. Only supported for image renditions

" }, { "group": "Request", "type": "string", "allowedValues": [ "\"adobe\"", "\"external\"", "\"azure\"", "\"dropbox\"" ], "optional": false, "field": "inputs.input.storage", "defaultValue": "adobe", "description": "

is the asset stored in Adobe's Creative Cloud Storage or an external service (like AWS S3). You can only use assets stored on EITHER Adobe's Creative Cloud or external storage (like AWS S3). Support for mixing and matching will be added in the future.

" }, { "group": "Request", "type": "string", "optional": false, "field": "inputs.input.href", "description": "

Either a Creative Cloud assets path for storage="adobe" OR a presignedGETURL.

  • CC Storage hrefs can be either a single asset or a folder
  • CC Storage hrefs must be prepended with `/files`. The `/files` path directly corresponds to the root of your local `Creative Cloud Files` folder
" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"\"\n }\n ],\n \"options\" : {\n \"layers\" : [{\n \"name\": \"\",\n \"id\": \"\",\n \"visible\": ,\n \"locked\": ,\n \"input\": {\n \"href\": \" or \",\n \"storage\": \"\"\n },\n \"bounds\" : {\n \"width\" : ,\n \"height\" : \n }\n }]\n },\n \"outputs\": [\n {\n \"href\": \" or \",\n \"storage\": \"adobe\",\n \"type\": \"\",\n \"width\": ,\n \"overwrite\": ,\n \"quality\": \"\"\n \"compression\": \"\"\n }\n ]\n}", "type": "http" }, { "title": "Request: HTTP Example", "content": "POST https://image.adobe.io/pie/psdService/smartObject HTTP/1.1\nHost: image.adobe.io\nContent-Type: application/json\nContent-Length: \nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"inputs\": [{\n \"href\": \"files/SO.psd\",\n \"storage\": \"adobe\"\n }],\n \"options\": {\n \"layers\": [{\n \"name\": \"New\",\n \"input\": {\n \"href\": \"files/jt-guitar.jpeg\",\n \"storage\": \"adobe\"\n },\n \"bounds\" : {\n \"width\" : 602,\n \"height\" : 400\n }\n }]\n },\n \"outputs\": [{\n \"storage\": \"adobe\",\n \"href\": \"files/SOedit.psd\",\n \"type\": \"vnd.adobe.photoshop\"\n }]\n}", "type": "http" }, { "title": "Request: CURL Templated", "content": "curl -H \"Authorization: Bearer $token\" -H \"x-api-key: $api_key\" -X POST -d '{\"inputs\": [{\"href\": \"files/SOCreate.psd\",\"storage\": \"adobe\"}],\"options\": {\"layers\": [{\"locked\": false,\"name\": \"New\",\"input\": {\"href\": \"files/output/jt-guitar.jpeg\",\"storage\": \"adobe\"},\"visible\": true}]},\"outputs\": [{\"storage\": \"adobe\",\"href\": \"files/SOedit.psd\",\"type\": \"vnd.adobe.photoshop\"}]}' https://image.adobe.io/pie/psdService/smartObject", "type": "curl" } ] }, "success": { "fields": { "Success 202": [ { "group": "Success 202", "type": "object", "optional": false, "field": "_links.self", "description": "

The link to GET the job status from

" }, { "group": "Success 202", "type": "object", "optional": false, "field": "_links", "description": "

any link the client follow, described by their relationship

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: \n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/<:jobId>\" }\n }\n}", "type": "object" }, { "title": "Response: Success Example", "content": "HTTP/1.1 202 ACCEPTED\nContent-Type: application/json\nContent-Length: 682\n{\n \"_links\": {\n \"self\" :{ \"href\" : \"https://image.adobe.io/pie/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\" }\n }\n}", "type": "object" } ] }, "filename": "docs-src/post-smart-object.js", "groupTitle": "Photoshop", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value.

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

"application/json"

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "error": { "fields": { "Errors": [ { "group": "Errors", "type": "string", "optional": false, "field": "type", "description": "

a machine-readable error type

" }, { "group": "Errors", "type": "string", "optional": false, "field": "code", "description": "

a machine-readable error code

" }, { "group": "Errors", "type": "string", "optional": false, "field": "title", "description": "

short, human-readable summary of the problem

" }, { "group": "Errors", "type": "array", "optional": false, "field": "errorDetails", "description": "

further descriptions of the exact errors where errorDetail is substituted for a specific issue.

" }, { "group": "Errors", "type": "details", "optional": false, "field": "errorCodes", "description": "

This field does not appear in the response but is a partial list of error codes and types

  • 400: InputValidationError
  • 400: PayloadValidationError
  • 400: RequestBodyError
  • 401: MissingAuthTokenError
  • 401: InvalidAuthTokenError
  • 403: AuthForbidden
  • 404: FileExistsErrors
  • 404: InputFileExistsErrors
  • 404: ResourceNotFound
  • 415: InvalidContentTypeError
  • 500: UndefinedError
" } ] }, "examples": [ { "title": "Response: Error Templated", "content": "// This is a templated example for when the call itself fails\n\nHTTP/1.1 \nContent-Type: application/json\nContent-Length: \n{\n \"type\": \"\",\n \"code\": \"\",\n \"title\": \"\",\n \"\": [\n {\n \"name\":\"\",\n \"reason\":\"\"\n }\n ]\n}", "type": "object" }, { "title": "Response: Error Example", "content": "// This is an example for when the call itself fails\n\nHTTP/1.1 404 OK\nContent-Type: application/json\nContent-Length: 584\nLocation: \"/psdService/status/f54e0fcb-260b-47c3-b520-de0d17dc2b67\"\n{\n \"type\": \"ResourceNotFound\",\n \"title\": \"Requested resource was not found\",\n \"code\": 404\n}", "type": "object" } ] } }, { "type": "post", "url": "https://sensei-ew1.adobe.io/services/v1/predict", "title": "image cutout", "description": "

Initiates a synchronous job to create image cutout.

", "version": "1.0.0", "name": "ImageCutout", "group": "Sensei", "header": { "fields": { "Header": [ { "group": "Header", "type": "string", "optional": false, "field": "authorization", "description": "

Authorization value

" }, { "group": "Header", "type": "string", "optional": false, "field": "Content-Type", "description": "

multipart/form-data

" }, { "group": "Header", "type": "string", "optional": false, "field": "x-api-key", "description": "

a client id

" } ] } }, "parameter": { "fields": { "Request": [ { "group": "Request", "type": "json", "optional": false, "field": "contentAnalyzerRequests", "description": "

Every service requires this parameter. See schema below.

" }, { "group": "Request", "type": "string", "optional": true, "field": "contentAnalyzerRequests.enable_diagnostics", "defaultValue": "true", "description": "

If true, enables debugging information.

" }, { "group": "Request", "type": "array", "optional": false, "field": "contentAnalyzerRequests.requests", "description": "

an array of analyzer_ids

" }, { "group": "Request", "type": "string", "optional": false, "field": "contentAnalyzerRequests.requests.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Request", "type": "string", "optional": false, "field": "file", "description": "

Either provide file or provide fileURL. Use to specify a file to upload as part of the request with @filename Be sure to use multipart/form-data for content-type header.

" }, { "group": "Request", "type": "string", "optional": false, "field": "fileURL", "description": "

Either provide file or provide fileURL. The content ref to be analyzed.

" } ] }, "examples": [ { "title": "Request: HTTP Templated", "content": "POST https://sensei-ew1.adobe.io/services/v1/predict\nContent-Type: multipart/form-data\nAuthorization: Bearer $token\nX-Api-Key: $api_key\n{\n \"file\": \"/path/to/image/file.jpeg\"\n \"contentAnalyzerRequests\" :{\n \"enable_diagnostics\":\"true\",\n \"requests\": [\n {\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"\n }\n ]\n }\n}", "type": "HTTP" }, { "title": "Request: CURL Templated", "content": "curl -X POST \\\nhttps://sensei-ew1.adobe.io/services/v1/predict \\\n-H \"content-type: multipart/form-data\" \\\n-H \"x-api-key: $api_key\" \\\n-H \"authorization: Bearer $token\" \\\n-F file=@/path/to/image/file.jpeg \\\n-F \"contentAnalyzerRequests={\"enable_diagnostics\":\"true\" , \"requests\": [{ \"analyzer_id\":\"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\"}]}\"", "type": "CURL" } ] }, "success": { "fields": { "Response fields": [ { "group": "Response fields", "type": "string", "optional": false, "field": "status", "description": "

HTTP status code.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses", "description": "

an array of cas_responses

" }, { "group": "Response fields", "type": "integer", "optional": false, "field": "cas_responses.status", "description": "

status code for the response.

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.analyzer_id", "description": "

Feature:salient-masking:Service-91453abfc65a4a778f07792961127708

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.content_id", "description": "

URL or other unique identifer for the response content.

" }, { "group": "Response fields", "type": "object", "optional": false, "field": "cas_responses.result", "description": "

a result object

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response_type", "description": "

"feature"

" }, { "group": "Response fields", "type": "array", "optional": false, "field": "cas_responses.result.response", "description": "

an array of responses

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_name", "description": "

"content:base64"

" }, { "group": "Response fields", "type": "string", "optional": false, "field": "cas_responses.result.response.feature_value", "description": "

Base64 encoded image raw data.

" } ] }, "examples": [ { "title": "Response: Success Templated", "content": "{\n \"status\":200,\n \"content_id\":\"\",\n \"cas_responses\": [\n {\n \"status\":,\n \"analyzer_id\":\"\",\n \"content_id\": \"\",\n \"result\": {\n \"response_type\":\"\",\n \"response\": [\n {\n \"feature_name\": \"\",\n \"feature_value\":\"\"\n }\n ]\n }\n }\n ],\n \"error\":[]\n}", "type": "json" }, { "title": "Response: Success Example", "content": "{\n \"status\": 200,\n \"content_id\": \"220_147.jpeg\",\n \"cas_responses\": [\n {\n \"status\": 200,\n \"analyzer_id\": \"Feature:salient-masking:Service-91453abfc65a4a778f07792961127708\",\n \"content_id\": \"220_147.jpeg\",\n \"result\": {\n \"response_type\": \"feature\",\n \"response\": [\n {\n \"feature_name\": \"content:base64\",\n \"feature_value\": \"(base64 string)\"\n }\n ]\n }\n }\n ],\n \"error\": []\n}", "type": "json" } ] }, "filename": "docs-src/post-image-cutout.js", "groupTitle": "Sensei" } ] diff --git a/docs/api_project.js b/docs/api_project.js index bc6c184..0e3ebc6 100644 --- a/docs/api_project.js +++ b/docs/api_project.js @@ -1 +1 @@ -define({ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-11-07T01:42:21.253Z", "url": "http://apidocjs.com", "version": "0.17.7" } }); +define({ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-11-07T23:14:48.596Z", "url": "http://apidocjs.com", "version": "0.17.7" } }); diff --git a/docs/api_project.json b/docs/api_project.json index 8f31d7c..8ff7011 100644 --- a/docs/api_project.json +++ b/docs/api_project.json @@ -1 +1 @@ -{ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-11-07T01:42:21.253Z", "url": "http://apidocjs.com", "version": "0.17.7" } } +{ "name": "Photoshop API Docs", "version": "0.1.0", "description": "Your interface to Adobe Photoshop and Imaging API's", "title": "Photoshop API Docs", "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2019-11-07T23:14:48.596Z", "url": "http://apidocjs.com", "version": "0.17.7" } }