Skip to main content

Markdown Resources

The text/markdown MIME type renders Markdown content directly in the Symphony React component tree using react-markdown with MUI styling. Unlike other resource types, Markdown is not rendered in an iframe—it appears inline in the Symphony UI, matching the look and feel of the built-in help system.

When to Use​

Use text/markdown for:

  • Extension help and documentation pages.
  • Content that should visually integrate with the Symphony help system.
  • Pages where the focus is on structured text, not interactive functionality.

For interactive user interfaces, use text/symphony-jsx or text/html+symphony.

Registration​

Python​

import os

# Load from a file
help_path = os.path.join(os.path.dirname(__file__), 'pages', 'help.md')
with open(help_path) as f:
help_content = f.read()

ext.add_resource("ui://my_ext/help", "text/markdown", help_content)
ext.add_route("/help/extensions/MyExtension", "ui://my_ext/help")

Java​

Resource help = new Resource()
.uri("ui://my_ext/help")
.mimeType(MimeType.TEXT_MARKDOWN)
.text(getTemplate("help.md"));

Go​

ext.AddResource("ui://my_ext/help", "text/markdown", helpContent)

Frontmatter​

Markdown resources support YAML frontmatter for metadata that controls how the page is displayed in the Symphony help navigation:

---
title: My Extension
breadcrumbs:
/: Home
/help: Help
/help/extensions: Extensions
/help/extensions/my-extension: My Extension
---

# My Extension

Your extension documentation here.
FieldDescription
titleThe page title displayed in the browser tab and navigation
breadcrumbsA map of paths to labels for breadcrumb navigation

Template Variables​

Markdown content supports template variables that are substituted at render time:

VariableDescriptionExample Value
{​{name}}Full product nameCirata Symphony
{​{shortname}}Short product nameSymphony
{​{origin}}The base URL of the instancehttps://symphony.example.com
{​{address}}The NATS addressnats://symphony.example.com:4222
{​{version}}The product version1.2.3

Use these to make your documentation adapt to the deployment:

Connect to {​{name}} at `{​{address}}` using a valid API token.

Download the library from [Languages and Libraries](/help/development/languages).

Supported Markdown Features​

Headings​

# Heading 1
## Heading 2
### Heading 3
#### Heading 4

Code Blocks​

Syntax-highlighted code blocks with language identification:

```python
from cirata import symphony

async def main():
ext = symphony.Extension("Example", "example")
async with ext:
await ext.operate()
```

Tables​

| Column A | Column B |
|----------|----------|
| Cell 1 | Cell 2 |

Internal links use paths relative to the help root:

[Platform Functionality](/help/development/functionality)

Images​

![Architecture Diagram](/images/help/architecture.png)

Images are styled with max-width: 600px and centered automatically.

Lists​

Both ordered and unordered lists are supported:

- First item
- Second item
- Nested item

1. Step one
2. Step two

Help Page Convention​

Extension help pages should be routed under /help/extensions/<ExtensionName> so they appear alongside the built-in documentation:

ext.add_route("/help/extensions/MyExtension", "ui://my_ext/help")

The breadcrumbs in the frontmatter should follow the standard hierarchy:

breadcrumbs:
/: Home
/help: Help
/help/extensions: Extensions
/help/extensions/MyExtension: My Extension

Complete Example​

A help page for an extension that manages data catalogs:

---
title: Catalog Manager
breadcrumbs:
/: Home
/help: Help
/help/extensions: Extensions
/help/extensions/CatalogManager: Catalog Manager
---

# Catalog Manager

The Catalog Manager extension provides tools for browsing and managing
data catalogs connected to {​{name}}.

## Getting Started

Navigate to **Catalog Manager** in the {​{shortname}} sidebar to view
your connected catalogs. You can browse tables, view schemas, and
monitor replication status.

## Connecting a Catalog

1. Open the Catalog Manager settings page.
2. Provide the connection details for your catalog.
3. Select **Connect** to register the catalog with {​{shortname}}.

## API Access

The Catalog Manager exposes REST endpoints for programmatic access:

\```bash
curl -H "Authorization: Bearer <token>" {​{origin}}/api/v1/extensions/catalog/catalogs
\```

## Troubleshooting

If a catalog shows as disconnected, verify that the extension process
is running and that the network path between the extension and the
catalog is available.

Limitations​

  • No interactivity—Markdown pages do not support JavaScript or event handlers. For interactive UIs, use a different resource type.
  • No iframe isolation—Markdown renders in the main Symphony React tree. This is generally a benefit (consistent styling), but means custom CSS in the Markdown could affect the surrounding UI.

See Also​