Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions content/en/docs/deployment/general/mendix-pipelines/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -303,9 +303,13 @@ Click **More Options** ({{% icon name="three-dots-menu-horizontal-filled" %}}) >

### Masked Variables

Select **Mask > Yes** for confidential values. It will never be printed in the logs or error messages.
Select **Mask > Yes** for confidential values. Once a variable is masked, its value cannot be unmasked by changing **Mask > No**. This prevents the saved value from being exposed.

While editing a saved variable, selecting **Mask > No** will allow you to verify the value. Make sure to set it back to **Mask > Yes** before saving the variable.
When creating a masked variable, enter the value and save it. The value will be displayed as `********` in the UI.

To update an existing masked variable, replace the displayed `********` with the new value and save the variable. The updated value will continue to be displayed as `********` in the UI.

Masked values are never printed in logs or error messages.

## The Settings Tab{#settings-tab}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,17 @@ Before running a request step in Mendix Pipelines, Mendix recommends testing the
## Configurable Fields for POST and GET Request Steps

The following table summarizes the available configuration fields.
With **variable concatenation**, supported text fields and text areas can combine static text with dynamic values. You can reference a variable directly using the `{{variableName}}` syntax or include it within a string alongside static text.

**Examples:**
- Direct variable reference: `{{JobID}}`
- Variable combined with static text: `https://api.com/1/{{JobID}}/`

| Field | Required? | Description | Example |
|------------------------|---:|-------------------------------------------------------------------------------------------------|-----------|
| **Base URL path** | Yes | Base endpoint of the external system to call. Must start with the protocol. Must end with `/` when using the **Additional URL Path**. | `https://api.com/1/JobID/` |
| **Additional URL path** | No | String or variable to append to the **Base URL Path**. Can reference a stored variable. | `$POST Request.Result1` or `a12f3` |
| **HTTP header key-value pairs** | No | HTTP headers to include with the request as metadata. Values can reference stored variables. | `Authorization` = `$API_Key` |
| **Request URL** | Yes | The complete URL of the external endpoint to call. Must start with the protocol. | `https://api.com/1/JobID/` or `https://api.com/1/{{JobID}}/` |
| **Additional URL path** | No | String or variable to append to the **Base URL Path**. Can reference a stored variable. | `{{POST Request.Result1}}` or `a12f3` |
| **HTTP header key-value pairs** | No | HTTP headers to include with the request as metadata. Values can reference stored variables. | `Authorization` = `{{API_Key}}` |
| **Variable extraction** | No | Expressions to extract values from the response body and store them as reusable output variables. | `.JobId` |
| **Success condition** | No | Success condition that must evaluate to `true` to continue to the next pipeline step. Must be a [jq expression](https://jqlang.org/manual/). | `.Result == "Success"` |
| **Failure condition** | No (GET only) | Failure condition that must evaluate to `true` to stop polling and fail the pipeline. Must be a jq expression. | `.Result == "Failed"` |
Expand All @@ -46,65 +51,69 @@ The following table summarizes the available configuration fields.

### Variable Selector

To reduce errors caused by manual typing and speed up configuration, Mendix Pipelines provides a **Variable Selector** for supported configuration fields. Typing `$` in a supported field opens the **Variable Selector**, which displays available variables. The list is dynamically populated with:
To reduce errors caused by manual typing and speed up configuration, Mendix Pipelines provides a **Variable Selector** for supported configuration fields. Typing `{{` in a supported field opens the **Variable Selector**, which displays available variables. The list is dynamically populated with:

* user-defined variables
* outputs from previous pipeline steps
* Mendix-provided variables:
* `$Mendix.ProjectId`
* `$Mendix.TriggerType`
* `$Mendix.Branch` (Git Push only)
* `$Mendix.Revision` (Git Push only)
* `{{Mendix.ProjectId}}`
* `{{Mendix.TriggerType}}`
* `{{Mendix.Branch}}` (Git Push only)
* `{{Mendix.Revision}}` (Git Push only)

{{< figure src="/attachments/deployment/general/mx-pipelines/mx-pipelines-variable-selector.png" alt="Image of the Variable Selector dropdown displaying a list of available pipeline variables in a configuration field." >}}
{{< figure src="/attachments/deployment/general/mx-pipelines/VariableSelectorDropdown.png" alt="Image of the Variable Selector dropdown displaying a list of available pipeline variables in a configuration field." >}}

Selecting a variable inserts it into the field.

## API Endpoint

Both POST and GET request steps require an endpoint defined as a URL. Mendix Pipelines builds the endpoint as `Base URL Path + Additional URL Path`. The endpoint can be:

* a static URL
* a dynamic URL that includes one pipeline variable at the end

When you use a variable in the URL, the following rules apply:
Both POST and GET request steps require a **Request URL** that specifies the endpoint to call.

* You can use only one variable.
* The variable must be the last part of the URL.
* You cannot append additional text after the variable (no concatenation).
The Request URL supports **variable concatenation**, allowing you to combine static text with dynamic pipeline variables using the `{{variableName}}` syntax.

Examples:
- Static URL: `https://api.example.com/jobs`
- URL with a variable: `https://api.example.com/jobs/{{JobID}}`
- URL with multiple variables: `https://api.example.com/jobs/{{ProjectID}}/jobs/{{JobID}}`
- Variables combined with static text: `https://api.example.com/{{Environment}}/jobs/{{JobID}}/status`
## HTTP Request Headers

HTTP headers can be added along with the API calls to provide metadata for the request, such as content type, authentication credentials, or other API-specific values. Mendix recommends storing secrets such as API keys or tokens as [pipeline variables](/developerportal/deploy/mendix-pipelines/#variable-tab).

POST and GET request steps support the following header rules:

* You can define up to five headers as key-value pairs.
* Header keys and values can be a static string or a pipeline variable.
* Header keys and values do not support string concatenation.
* Header keys and values support static text, pipeline variables, or a combination of both using the `{{variableName}}` syntax.
* You can combine multiple variables with static text in a single header key or value.
* Header values are resolved when the step starts.
* For GET request steps, header values are fixed and are not re-evaluated during polling.

If an authentication scheme requires a prefix such as `Bearer`, include the prefix in the variable value. For example, the variable `$app1_BearerToken` can contain the value `Bearer aDbEcF123`.
For example, you can define an `Authorization` header with the value `Bearer {{API_Token}}`, or combine static text and variables in a custom header value such as
`mx-{{Environment}}-{{API_Token}}`.

## Request Body (POST Only)

The request body is available for POST request steps only. It is a plain text input that defines the JSON payload that Mendix Pipelines sends to the external system when a POST request runs. This payload can be used to start a job, trigger a scan, create a record, or update data.

### Dynamic Values in the Request Body

The request body supports static JSON content. It does not support:
The request body supports static JSON content and **variable concatenation**, allowing you to combine static text with dynamic pipeline variable values using the `{{variableName}}` syntax.

* inserting variables into individual JSON fields
* inline variable substitution
* string concatenation
* expressions inside the payload
You can reference variables directly or combine multiple variables with static text within the request body.

{{% alert color="warning" %}}
The **Request Body** field in the POST request step does not currently support the Variable Selector. To use pipeline variables in the request body, enter the variable references manually using the `{{variableName}}` syntax.
{{% /alert %}}

If the external API requires dynamic values, such as identifiers or environment-specific parameters, consider one of the following alternatives:
For example:

* URL parameters
* HTTP headers where pipeline variables are supported
* logic in the external system after it receives the request
```json
{
"jobId": "{{JobID}}",
"environment": "{{Environment}}",
"name": "scan-{{ProjectName}}-{{BuildNumber}}"
}
```

## Success and Failure Conditions

Expand Down Expand Up @@ -160,8 +169,8 @@ Each output slot is populated by a [jq-style expression](https://jqlang.org/manu

Output variables are automatically named and you cannot assign custom name or change the names. Mendix Pipelines exposes extracted values using a fixed naming pattern such as:

* `$GET Request.Output_1`
* `$POST Request.Output_2`
* `{{GET Request.Output_1}}`
* `{{POST Request.Output_2}}`

{{% alert color="warning" %}}
Mendix Pipelines does not validate whether an extraction expression matches the response, nor does it provide tooling to inspect the response structure interactively.
Expand All @@ -174,15 +183,9 @@ If the response format changes or does not match expectations, extracted values
POST and GET request steps currently support the following constraints:

* A pipeline can contain at most one POST request step and one GET request step.
* A dynamic endpoint can contain only one variable, and that variable must be the last part of the URL.
* Additional text cannot be appended after a variable in the URL.
* Up to five HTTP headers can be configured.
* Header names must be static.
* Header values support only static strings or predefined pipeline variables.
* Header values do not support concatenation.
* Header keys and values support static text and pipeline variables using the `{{variableName}}` syntax, including combinations of static text and multiple variables.
* For GET request steps, header values are resolved once and are not re-evaluated during polling.
* The POST request body supports only static JSON content.
* The request body does not support inline variable substitution, concatenation, or expressions.
* Each request step can extract up to three output values.
* Output variable names are generated automatically and cannot be customized.
* Mendix Pipelines does not validate request configuration, payload structure, or extraction expressions before the step runs.
12 changes: 12 additions & 0 deletions content/en/docs/releasenotes/deployment/mendix-pipelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,18 @@ To see the current status of the Mendix Pipelines, see [Mendix Status](https://s

## 2026

### Oct 29, 2026

#### New Features

POST and GET request steps now support variable concatenation, allowing you to combine static text with one or more pipeline variables using the `{{variableName}}` syntax.

* **Request URL:** Combine static text and multiple variables to construct dynamic URLs.
* **HTTP Headers:** Use variables in header keys and values, including combinations of static text and multiple variables.
* **POST Request Body:** Include variables directly in the request payload alongside static JSON content.

The Variable Selector is available in supported configuration fields by typing `{{`. The POST Request Body does not currently support variable suggestions, so variable references must be entered manually.

### Aug 06, 2026

#### New Features
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading