Adobe Creative Suite · Arazzo Workflow

Adobe Photoshop Edit Text Layers

Version 1.0.0

Submit a PSD text-layer edit job, poll until it finishes, and return the edited output URL.

1 workflow 1 source API 1 provider
View Spec View on GitHub CreativeDesignGraphicsPhotographyVideoArazzoWorkflows

Provider

adobe-creative-suite

Workflows

edit-text-layers
Submit a text-layer edit job and poll until it succeeds or fails.
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.
4 steps inputs: inputHref, inputStorage, layerName, outputHref, outputStorage, outputType, textContent outputs: errors, jobId, outputUrl
1
submitTextEdit
editTextLayers
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.
2
pollStatus
getJobStatus
Poll the job status, repeating while it is pending or running and branching once it succeeds or fails.
3
reportSuccess
getJobStatus
Surface the edited output URL from the succeeded job.
4
reportFailure
getJobStatus
Surface the error details from the failed text-edit job.

Source API Descriptions

Arazzo Workflow Specification

adobe-creative-suite-photoshop-edit-text-layers-workflow.yml Raw ↑
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