arazzo: 1.0.1 info: title: Adobe Photoshop Edit Text Layers summary: Submit a PSD text-layer edit job, poll until it finishes, and return the edited output URL. description: >- Edits the content of a named text layer within a PSD document using the Adobe Photoshop API, then renders the modified document to an output file. The workflow submits a text-edit job referencing the source PSD, an output location, and the new text content for a target layer, polls the job status endpoint until the job reaches a terminal state, and branches on the result to return either the edited output URL or the error details. Every step spells out its request inline so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: photoshopApi url: ../openapi/adobe-creative-suite-photoshop-openapi.yml type: openapi workflows: - workflowId: edit-text-layers summary: Submit a text-layer edit job and poll until it succeeds or fails. description: >- Submits a text-edit job that replaces the content of a named text layer in a PSD, polls the job status to completion, and returns the edited output URL on success. inputs: type: object required: - inputHref - inputStorage - outputHref - outputStorage - outputType - layerName - textContent properties: inputHref: type: string description: URL or path of the source PSD in cloud storage. inputStorage: type: string description: Cloud storage provider of the input (adobe, external, azure, or dropbox). outputHref: type: string description: URL or path where the edited output should be written. outputStorage: type: string description: Cloud storage provider of the output. outputType: type: string description: MIME type of the output file (e.g. image/vnd.adobe.photoshop). layerName: type: string description: Name of the text layer to edit. textContent: type: string description: New text content for the target layer. steps: - stepId: submitTextEdit description: >- Submit the text-edit job referencing the source PSD, the output target, and the new content for the named text layer. The API queues the job and returns a job id. operationId: editTextLayers requestBody: contentType: application/json payload: inputs: - href: $inputs.inputHref storage: $inputs.inputStorage outputs: - href: $inputs.outputHref storage: $inputs.outputStorage type: $inputs.outputType options: layers: - name: $inputs.layerName text: content: $inputs.textContent successCriteria: - condition: $statusCode == 202 outputs: jobId: $response.body#/jobId - stepId: pollStatus description: >- Poll the job status, repeating while it is pending or running and branching once it succeeds or fails. operationId: getJobStatus parameters: - name: jobId in: path value: $steps.submitTextEdit.outputs.jobId successCriteria: - condition: $statusCode == 200 outputs: status: $response.body#/status onSuccess: - name: jobSucceeded type: goto stepId: reportSuccess criteria: - context: $response.body condition: $.status == "succeeded" type: jsonpath - name: jobFailed type: goto stepId: reportFailure criteria: - context: $response.body condition: $.status == "failed" type: jsonpath - name: stillRunning type: retry stepId: pollStatus retryAfter: 5 retryLimit: 30 criteria: - context: $response.body condition: $.status == "pending" || $.status == "running" type: jsonpath - stepId: reportSuccess description: Surface the edited output URL from the succeeded job. operationId: getJobStatus parameters: - name: jobId in: path value: $steps.submitTextEdit.outputs.jobId successCriteria: - condition: $statusCode == 200 - context: $response.body condition: $.status == "succeeded" type: jsonpath outputs: outputUrl: $response.body#/outputs/0/_links/renditions/0/href outputs: $response.body#/outputs onSuccess: - name: done type: end - stepId: reportFailure description: Surface the error details from the failed text-edit job. operationId: getJobStatus parameters: - name: jobId in: path value: $steps.submitTextEdit.outputs.jobId successCriteria: - condition: $statusCode == 200 outputs: errors: $response.body#/errors outputs: jobId: $steps.submitTextEdit.outputs.jobId outputUrl: $steps.reportSuccess.outputs.outputUrl errors: $steps.reportFailure.outputs.errors