> For the complete documentation index, see [llms.txt](https://docs.rierino.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rierino.com/devops/api-event-and-process-flows/configuring-saga-steps/event-step/specialized-actions/generate-word.md).

# Generate Word

## Generate Word Actions

### ExportDOCX

Produces a Word (`.docx`) file from given input data. The document can be produced in three ways: from an existing template using **content controls**, from an existing template using **mail merge** (MERGEFIELDs), or from scratch by converting **HTML** supplied in the input payload. Event metadata fields applicable for this action are as follows:

{% tabs %}
{% tab title="Table" %}

| Field         | Definition                                       | Example  | Default |
| ------------- | ------------------------------------------------ | -------- | ------- |
| Input Element | Json path for the input in request event payload | customer | -       |
| {% endtab %}  |                                                  |          |         |

{% tab title="JSON Schema" %}

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Generate Word ExportDOCX action eventMeta fields",
  "type": "object",
  "properties": {
    "eventMeta": {
      "type": "object",
      "properties": {
        "inputElement": {
          "type": "string",
          "definition": "Json path for the input in request event payload",
          "example": "customer",
          "default": null
        }
      }
    }
  }
}
```

{% endtab %}
{% endtabs %}

With event metadata parameters as:

{% tabs %}
{% tab title="Table" %}

| Parameter       | Definition                                                                                                                                                                      | Example                 | Default    |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ---------- |
| Output Path     | Path on the target file system to write the generated document to                                                                                                               | output/contract.docx    | -          |
| Template Path   | Path on the target file system to read the template document from. If omitted, the document is built from the `html` field in the input                                         | templates/contract.docx | -          |
| Template Format | How the template is populated: `controls` fills content controls matched by tag; any other value performs a mail merge on MERGEFIELDs. Only applies when a template path is set | controls                | mail merge |
| Input Pattern   | JMESPath pattern to apply on input element                                                                                                                                      | {name: name}            | -          |
| {% endtab %}    |                                                                                                                                                                                 |                         |            |

{% tab title="JSON Schema" %}

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Generate Word ExportDOCX action eventMeta.parameters",
  "type": "object",
  "properties": {
    "eventMeta": {
      "type": "object",
      "properties": {
        "parameters": {
          "type": "object",
          "properties": {
            "outputPath": {
              "type": "string",
              "definition": "Path on the target file system to write the generated document to",
              "example": "output/contract.docx",
              "default": null
            },
            "templatePath": {
              "type": "string",
              "definition": "Path on the target file system to read the template document from; if omitted, the document is built from the html field in the input",
              "example": "templates/contract.docx",
              "default": null
            },
            "templateFormat": {
              "type": "string",
              "definition": "How the template is populated: 'controls' fills content controls matched by tag, any other value performs a mail merge on MERGEFIELDs",
              "example": "controls",
              "default": null
            },
            "inputPattern": {
              "type": "string",
              "definition": "JMESPath pattern to apply on input element",
              "example": "{name: name}",
              "default": null
            }
          }
        }
      }
    }
  }
}
```

{% endtab %}
{% endtabs %}

## Content Format

The shape of the input payload depends on how the document is produced.

**Content controls** — used when `templateFormat` is `controls`. Each top-level field in the input maps to a Word content control whose **tag** equals the field name; the control's text is replaced with the field value. Controls in the document body and in headers/footers are both filled. Only non-null fields are applied.

```json
{
    "customerName": "Acme Corp",
    "orderDate": "2026-01-15",
    "total": "$1,299.00"
}
```

**Mail merge** — the default when a template path is set (any `templateFormat` other than `controls`). Each top-level field maps to a `MERGEFIELD` of the same name in the template.

```json
{
    "customerName": "Acme Corp",
    "orderDate": "2026-01-15",
    "total": "$1,299.00"
}
```

**HTML** — used when no template path is given. The input must contain an `html` field whose value is converted into the document body.

```json
{
    "html": "<h1>Invoice</h1><p>Dear customer, ...</p>"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.rierino.com/devops/api-event-and-process-flows/configuring-saga-steps/event-step/specialized-actions/generate-word.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
