Marketplace
Publish a finished workflow as a template or module and iterate by version; dependencies resolve automatically on download, ready to instantiate once installed.
The marketplace is the "Marketplace" page in the console: templates and modules published by the community and by the platform all live here. You can download items others have published into your own template or module library, and publish your own finished workflows and iterate on them by version. A downloaded template is instantiated into your own workflow; a downloaded module can be referenced directly by a sub_workflow step.
Browsing And Categories
The list can be filtered by type (template / module), category, and tags, and searched by name, description, and tags. There are three views at the top: All, Uploaded by me, and Downloaded by me. Each card shows the author, the latest version number, and the download count; items shipped with the platform carry an "Official" mark.
- The category dropdown's options come from the actual categories of currently listed items, not a fixed list; categories and tags are shown in your interface language.
- The marketplace shows only items that are listed and visible to you. A publisher can set an item to public, visible to team members only, or visible to specified users only; items you can't see don't appear in your list.
- An item you've already downloaded is marked "Downloaded" right on the card; when a new version is available, the button changes to "Update."
Publish Your Template or Module
The publish entry is in the workflow editor. Only the workflow's owner can publish it to the marketplace — not even an admin can publish the first version for you.
- Type: a workflow with a module contract can be published as a "module," otherwise only as a "template." To publish as a module, first "Promote to module" in the editor and save the contract.
- You need to fill in a title (required, up to 200 characters), a description (up to 5000 characters), a category, tags (up to 20), an icon, a version number, and release notes.
- The version number must be in semver format, such as 1.0.0 or 1.0.0-beta.
- Three visibility levels: visible to all users, visible only to members of teams I belong to (enter team IDs), and visible only to specified users (enter user IDs). When choosing team visibility, you must be a member of each team listed.
- Price: only free publishing (0 USD) is supported today; paid publishing isn't available yet.
- The serialized workflow definition is capped at 2MB; anything larger is rejected.
curl -X POST https://braidrun.com/api/marketplace/items \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"sourceWorkflowId": "<workflow-id>",
"type": "TEMPLATE",
"title": "竞品价格日报",
"description": "每天拉取竞品价格并生成对比表",
"category": "数据分析",
"tags": ["监控", "报表"],
"version": "1.0.0",
"changelog": "首个版本",
"visibility": "PUBLIC",
"priceUsdCents": 0
}'After upload, the item enters a "Pending review" state and is only listed once an admin approves it. Only listed items appear in other users' marketplace lists. If it's rejected, you can see the reason in the "Uploaded by me" view.
Version Management
The same workflow can't be published as a new item twice — the editor recognizes that "this workflow has already been published" and switches the dialog to "Upload new version."
- Only the item's original author can publish a new version; a platform admin can publish on their behalf, but the item's author attribution doesn't change. For built-in system items, only admins can publish new versions.
- The new version number must be valid semver and not lower than the current latest version. The same version number can't be uploaded twice.
- The new version also enters pending review; during review the item stays listed, and other users still download the latest listed version.
- Users who've downloaded the item see an update prompt on the marketplace card and in "Downloaded by me"; re-downloading updates to the latest version.
- The item's detail page lists the full version history and the release notes for each version.
Installation: Automatic Dependency Resolution
Click "Download" to store the item in your template or module library. If the template or module references other modules (via sub_workflow steps), the platform resolves the full dependency graph before downloading and marks each dependency's status:
| Status | Meaning |
|---|---|
| Downloaded | Your library already has the latest version of this module — skipped |
| Need to update | You've downloaded an older version — this pass updates it to the latest too |
| Available | It's in the marketplace and you haven't downloaded it — this pass downloads it too |
| Missing | No module of the same name found in the marketplace |
| Hidden | The module exists but is restricted to a team or users you're not part of |
After confirming "Download with dependencies," installation proceeds in dependency order: the lowest-level referenced modules first, layer by layer upward, and finally the item you clicked. During download, the workflow_id that sub_workflow references in your copies is automatically rewritten to the ID of the corresponding copy in your library — so after installation you don't need to fix any references by hand: templates can be instantiated and run directly, and modules can be referenced directly.
# 下载最新版,连同依赖一起(返回本次创建的全部下载记录)
curl -X POST "https://braidrun.com/api/marketplace/items/<item-id>/download?withDependencies=true" \
-H "Authorization: Bearer <token>"
# 下载指定历史版本(只下载该条目本身,不做依赖级联)
curl -X POST "https://braidrun.com/api/marketplace/items/<item-id>/download?version=1.2.0" \
-H "Authorization: Bearer <token>"- Dependency resolution runs only when downloading the latest version; downloading a specific historical version downloads only that item itself.
- Circular references (A references B and B references A) are detected and handled correctly, without deadlocking the install.
- Downloading itself doesn't count against your workflow quota; only the later instantiation does.
When a dependency shows "Missing" or "Not visible," the parent item can still be installed into your library, but the corresponding sub_workflow step can't run until that module is published or becomes visible to you. The download confirmation dialog spells out these gaps explicitly.
After Downloading: Instantiation
Downloading just places the item in your library, and the copy is locked read-only by default. There are two paths to actually start using it:
- Template: in the template library, click "Use" on the downloaded item to instantiate an editable workflow, named "Original name (created from template)" by default. This step is what counts against your workflow quota.
- Module: once downloaded, it can be referenced by name from your workflows via a sub_workflow step; you can also instantiate an editable copy in the module library and modify it.
An instantiated workflow is independent of the marketplace item: a new version from the author won't change your instance, and uninstalling an item from "Downloaded by me" doesn't affect workflows you've already instantiated.
The downloaded library copy can be unlocked: once unlocked, you can edit it directly in the editor. But note that updating the download replaces this library copy wholesale with the new version, and your changes will be lost — for long-term modifications, instantiate your own workflow and edit that.
Common Endpoints
| Endpoint | Purpose |
|---|---|
GET /api/marketplace/items | Browse (paginated, with type / category / tag / search filters) |
GET /api/marketplace/items/{id} | Item details + version history |
GET /api/marketplace/categories | All categories of currently visible items |
POST /api/marketplace/items | Publish a new item |
POST /api/marketplace/items/{id}/versions | Publish a new version |
GET /api/marketplace/items/{id}/dependencies | View the dependency tree |
POST /api/marketplace/items/{id}/download | Download (downloading the latest version includes dependencies by default) |
GET /api/marketplace/my-uploads | Items I've published |
GET /api/marketplace/my-downloads | Items I've downloaded (with update prompts) |
POST /api/marketplace/downloads/{itemId}/instantiate | Instantiate a downloaded item into an editable workflow |
DELETE /api/marketplace/downloads/{itemId} | Uninstall a downloaded item (doesn't affect instantiated workflows) |