diff --git a/content/en/docs/deployment/general/mendix-pipelines/_index.md b/content/en/docs/deployment/general/mendix-pipelines/_index.md index d7a8f95d9a4..12ea8c819fe 100644 --- a/content/en/docs/deployment/general/mendix-pipelines/_index.md +++ b/content/en/docs/deployment/general/mendix-pipelines/_index.md @@ -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} diff --git a/content/en/docs/deployment/general/mendix-pipelines/configuring-post-get-steps.md b/content/en/docs/deployment/general/mendix-pipelines/configuring-post-get-steps.md index 53297b74591..6818343059d 100644 --- a/content/en/docs/deployment/general/mendix-pipelines/configuring-post-get-steps.md +++ b/content/en/docs/deployment/general/mendix-pipelines/configuring-post-get-steps.md @@ -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"` | @@ -46,33 +51,31 @@ 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). @@ -80,12 +83,13 @@ HTTP headers can be added along with the API calls to provide metadata for the r 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) @@ -93,18 +97,23 @@ The request body is available for POST request steps only. It is a plain text in ### 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 @@ -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. @@ -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. diff --git a/content/en/docs/releasenotes/deployment/mendix-pipelines.md b/content/en/docs/releasenotes/deployment/mendix-pipelines.md index f8e1d9072a3..4a6f3adc8ca 100644 --- a/content/en/docs/releasenotes/deployment/mendix-pipelines.md +++ b/content/en/docs/releasenotes/deployment/mendix-pipelines.md @@ -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 diff --git a/static/attachments/deployment/general/mx-pipelines/VariableSelectorDropdown.png b/static/attachments/deployment/general/mx-pipelines/VariableSelectorDropdown.png new file mode 100644 index 00000000000..b915e523875 Binary files /dev/null and b/static/attachments/deployment/general/mx-pipelines/VariableSelectorDropdown.png differ diff --git a/static/attachments/deployment/general/mx-pipelines/mx-pipelines-variable-selector.png b/static/attachments/deployment/general/mx-pipelines/mx-pipelines-variable-selector.png deleted file mode 100644 index 11af3397a61..00000000000 Binary files a/static/attachments/deployment/general/mx-pipelines/mx-pipelines-variable-selector.png and /dev/null differ