diff --git a/dsl-reference.md b/dsl-reference.md
index 92b02d60..9e1bb836 100644
--- a/dsl-reference.md
+++ b/dsl-reference.md
@@ -55,6 +55,7 @@
+ [HTTP Response](#http-response)
+ [HTTP Request](#http-request)
+ [URI Template](#uri-template)
+ + [Process Result](#process-result)
## Abstract
@@ -723,6 +724,7 @@ Provides the capability to execute external [containers](#container-process), [s
| run.shell | [`shell`](#shell-process) | `no` | The definition of the shell command to run.
*Required if `container`, `script` and `workflow` have not been set.* |
| run.workflow | [`workflow`](#workflow-process) | `no` | The definition of the workflow to run.
*Required if `container`, `script` and `shell` have not been set.* |
| await | `boolean` | `no` | Determines whether or not the process to run should be awaited for.
*Defaults to `true`.* |
+| return | `string` | `no` | Configures the output of the process.
*Supported values are:*
*- `stdout`: Outputs the content of the process **STDOUT**.*
*- `stderr`: Outputs the content of the process **STDERR**.*
*- `code`: Outputs the process's **exit code**.*
*- `all`: Outputs the **exit code**, the **STDOUT** content and the **STDERR** content, wrapped into a new [processResult](#process-result) object.*
*- `none`: Does not output anything.*
*Defaults to `stdout`.* |
##### Examples
@@ -1888,3 +1890,54 @@ This has the following limitations compared to runtime expressions:
```yaml
uri: https://petstore.swagger.io/v2/pet/{petId}
```
+
+### Process Result
+
+Describes the result of a process.
+
+#### Properties
+
+| Name | Type | Required | Description|
+|:--|:---:|:---:|:---|
+| code | `integer` | `yes` | The process's exit code. |
+| stdout | `string` | `yes` | The process's **STDOUT** output. |
+| stderr | `string` | `yes` | The process's **STDERR** output. |
+
+#### Examples
+
+```yaml
+document:
+ dsl: '1.0.0-alpha5'
+ namespace: test
+ name: run-example
+ version: '0.1.0'
+do:
+ - runContainer:
+ run:
+ container:
+ image: fake-image
+ return: stderr
+
+ - runScript:
+ run:
+ script:
+ language: js
+ code: >
+ Some cool multiline script
+ return: code
+
+ - runShell:
+ run:
+ shell:
+ command: 'echo "Hello, ${ .user.name }"'
+ return: all
+
+ - runWorkflow:
+ run:
+ workflow:
+ namespace: another-one
+ name: do-stuff
+ version: '0.1.0'
+ input: {}
+ return: none
+```
\ No newline at end of file
diff --git a/examples/run-return-all.yaml b/examples/run-return-all.yaml
new file mode 100644
index 00000000..0de552f3
--- /dev/null
+++ b/examples/run-return-all.yaml
@@ -0,0 +1,11 @@
+document:
+ dsl: '1.0.0-alpha5'
+ namespace: test
+ name: run-container
+ version: '0.1.0'
+do:
+ - runContainer:
+ run:
+ container:
+ image: hello-world
+ return: all
\ No newline at end of file
diff --git a/examples/run-return-code.yaml b/examples/run-return-code.yaml
new file mode 100644
index 00000000..9ea77ab9
--- /dev/null
+++ b/examples/run-return-code.yaml
@@ -0,0 +1,11 @@
+document:
+ dsl: '1.0.0-alpha5'
+ namespace: test
+ name: run-container
+ version: '0.1.0'
+do:
+ - runContainer:
+ run:
+ container:
+ image: hello-world
+ return: code
\ No newline at end of file
diff --git a/examples/run-return-none.yaml b/examples/run-return-none.yaml
new file mode 100644
index 00000000..ee9359b1
--- /dev/null
+++ b/examples/run-return-none.yaml
@@ -0,0 +1,11 @@
+document:
+ dsl: '1.0.0-alpha5'
+ namespace: test
+ name: run-container
+ version: '0.1.0'
+do:
+ - runContainer:
+ run:
+ container:
+ image: hello-world
+ return: none
\ No newline at end of file
diff --git a/examples/run-return-stderr.yaml b/examples/run-return-stderr.yaml
new file mode 100644
index 00000000..940ca991
--- /dev/null
+++ b/examples/run-return-stderr.yaml
@@ -0,0 +1,11 @@
+document:
+ dsl: '1.0.0-alpha5'
+ namespace: test
+ name: run-container
+ version: '0.1.0'
+do:
+ - runContainer:
+ run:
+ container:
+ image: hello-world
+ return: stderr
\ No newline at end of file
diff --git a/schema/workflow.yaml b/schema/workflow.yaml
index aecbeacb..d35ab774 100644
--- a/schema/workflow.yaml
+++ b/schema/workflow.yaml
@@ -581,6 +581,12 @@ $defs:
default: true
title: AwaitProcessCompletion
description: Whether to await the process completion before continuing.
+ return:
+ type: string
+ title: ProcessReturnType
+ description: Configures the output of the process.
+ enum: [ stdout, stderr, code, all, none ]
+ default: stdout
oneOf:
- title: RunContainer
description: Enables the execution of external processes encapsulated within a containerized environment.
@@ -1535,3 +1541,21 @@ $defs:
title: RuntimeExpression
description: A runtime expression.
pattern: "^\\s*\\$\\{.+\\}\\s*$"
+ processResult:
+ type: object
+ title: ProcessResult
+ description: The object returned by a run task when its return type has been set 'all'
+ properties:
+ code:
+ type: integer
+ title: ProcessExitCode
+ description: The process's exit code.
+ stdout:
+ type: string
+ title: ProcessStandardOutput
+ description: The content of the process's STDOUT
+ stderr:
+ type: string
+ title: ProcessStandardError
+ description: The content of the process's STDERR
+ required: [ code, stdout, stderr ]
\ No newline at end of file