Publish Functions
The publish functions serialize structured data into string formats (JSON or XML). They are typically used at the end of a workflow to prepare output data for transmission or storage.
publish_json
Serializes data from the source field to a JSON string.
Configuration
{
"function": {
"name": "publish_json",
"input": {
"source": "output",
"target": "json_string"
}
}
}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
source | string | Yes | - | Field name in data to serialize (e.g., output or nested.field) |
target | string | Yes | - | Field name where the JSON string will be stored |
pretty | boolean | No | false | Whether to pretty-print the JSON output |
Examples
Serialize Data to JSON
{
"id": "publish_response",
"function": {
"name": "publish_json",
"input": {
"source": "response",
"target": "responseBody"
}
}
}
Input:
{
"data": {
"response": {"status": "success", "count": 42}
}
}
Result:
{
"data": {
"response": {"status": "success", "count": 42},
"responseBody": "{\"status\":\"success\",\"count\":42}"
}
}
Pretty-Print JSON
{
"id": "publish_pretty",
"function": {
"name": "publish_json",
"input": {
"source": "user",
"target": "userJson",
"pretty": true
}
}
}
Result:
{
"data": {
"userJson": "{\n \"name\": \"Alice\",\n \"age\": 30\n}"
}
}
publish_xml
Serializes data from the source field to an XML string.
Configuration
{
"function": {
"name": "publish_xml",
"input": {
"source": "output",
"target": "xml_string",
"root_element": "Response"
}
}
}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
source | string | Yes | - | Field name in data to serialize |
target | string | Yes | - | Field name where the XML string will be stored |
root_element | string | No | root | Name of the root XML element |
JSON to XML Conversion
The serializer follows these rules:
- Object keys become XML element names
- Array items are wrapped in
<item>elements - Special characters are properly escaped (
<,>,&,",') - Invalid XML element names are sanitized (e.g., names starting with numbers get an underscore prefix)
Examples
Serialize Data to XML
{
"id": "publish_xml_response",
"function": {
"name": "publish_xml",
"input": {
"source": "user",
"target": "userXml",
"root_element": "User"
}
}
}
Input:
{
"data": {
"user": {"name": "Alice", "age": 30}
}
}
Result:
{
"data": {
"user": {"name": "Alice", "age": 30},
"userXml": "<User><name>Alice</name><age>30</age></User>"
}
}
Serialize Nested Data
{
"id": "publish_nested",
"function": {
"name": "publish_xml",
"input": {
"source": "response.data",
"target": "xmlOutput",
"root_element": "Data"
}
}
}
Common Patterns
Complete API Pipeline
{
"tasks": [
{
"id": "parse_request",
"function": {
"name": "parse_json",
"input": {"source": "payload", "target": "request"}
}
},
{
"id": "process",
"function": {
"name": "map",
"input": {
"mappings": [
{"path": "data.response.message", "logic": {"cat": ["Hello, ", {"var": "data.request.name"}]}}
]
}
}
},
{
"id": "publish_response",
"function": {
"name": "publish_json",
"input": {"source": "response", "target": "body"}
}
}
]
}
XML-to-XML Transformation
{
"tasks": [
{
"id": "parse_xml",
"function": {
"name": "parse_xml",
"input": {"source": "payload", "target": "input"}
}
},
{
"id": "transform",
"function": {
"name": "map",
"input": {
"mappings": [
{"path": "data.output.result", "logic": {"var": "data.input.value"}}
]
}
}
},
{
"id": "publish_xml",
"function": {
"name": "publish_xml",
"input": {"source": "output", "target": "xmlResponse", "root_element": "Result"}
}
}
]
}
Generate Both JSON and XML Outputs
{
"tasks": [
{
"id": "publish_json",
"function": {
"name": "publish_json",
"input": {"source": "response", "target": "jsonOutput"}
}
},
{
"id": "publish_xml",
"function": {
"name": "publish_xml",
"input": {"source": "response", "target": "xmlOutput", "root_element": "Response"}
}
}
]
}
Error Handling
- publish_json: Returns an error if the source field is not found or is null
- publish_xml: Returns an error if the source field is not found or is null
XML Element Name Sanitization
XML has strict rules for element names. The publish_xml function automatically sanitizes invalid names:
| Original | Sanitized |
|---|---|
123field | _123field |
field name | field_name |
field@attr | field_attr |
| `` (empty) | _element |
Next Steps
- Parse Functions - Parse input data
- Map Function - Transform data
- Validation Function - Validate before publishing