Mercado
Publique um workflow terminado como um modelo ou módulo e itere por versão; dependências resolvem automaticamente no download, pronto para instanciar uma vez instalado.
O mercado é a página "Marketplace" no console: modelos e módulos publicados pela comunidade e pela plataforma todos vivem aqui. Você pode baixar itens que outros publicaram em seu próprio modelo ou biblioteca de módulos, e publicar seus próprios workflows acabados e iterar neles por versão. Um modelo baixado é instanciado em seu próprio workflow; um módulo baixado pode ser referenciado diretamente por uma etapa sub workflow.
Navegação e categorias
A lista pode ser filtrada por tipo (template / module), categoria e tags, e pesquisada pelo nome, descrição e tags. Há três visualizações no topo: Tudo, Enviado por mim, e Transferido por mim. Cada cartão mostra o autor, o último número de versão, e a contagem de download; itens enviados com a plataforma carregam uma marca "Oficial".
- As opções do dropdown de categoria vêm das categorias reais dos itens listados atualmente, não de uma lista fixa; categorias e tags são mostradas em seu idioma de interface.
- O mercado mostra apenas itens que estão listados e visíveis para você. Um editor pode definir um item para público, visível apenas para membros da equipe, ou visível apenas para usuários especificados; itens que você não pode ver não aparecem em sua lista.
- Um item que você já baixou está marcado "Downloaded" no cartão; quando uma nova versão está disponível, o botão muda para "Atualizar"
Publique seu modelo ou módulo
O item de publicação está no editor de workflow. Apenas o proprietário do workflow pode publicá-lo no mercado — nem mesmo um administrador pode publicar a primeira versão para você.
- Tipo: um workflow com um contrato de módulo pode ser publicado como um "módulo", caso contrário apenas como um "template". Para publicar como um módulo, primeiro "Promover ao módulo" no editor e salvar o contrato.
- Você precisa preencher um título (necessário, até 200 caracteres), uma descrição (até 5000 caracteres), uma categoria, tags (até 20), um ícone, um número de versão e notas de lançamento.
- O número da versão deve estar em formato semver, como 1.0.0 ou 1.0.0-beta.
- Três níveis de visibilidade: visível para todos os usuários, visível apenas para membros de equipes a que pertenço (introduza IDs de equipe) e visível apenas para usuários especificados (introduza IDs de usuário). Ao escolher a visibilidade da equipe, você deve ser um membro de cada equipe listada.
- Preço: somente a publicação gratuita (0 USD) é suportada hoje; a publicação paga ainda não está disponível.
- A definição serializada de workflow é fechada em 2MB; qualquer coisa maior é rejeitada.
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
}'Após o upload, o item entra em um estado de "revisão pendente" e só é listado uma vez que um administrador o aprova. Apenas os itens listados aparecem nas listas de mercado de outros usuários. Se ele for rejeitado, você pode ver a razão na visão "Carregado por mim".
Gestão de versões
O mesmo workflow não pode ser publicado como um novo item duas vezes — o editor reconhece que "este workflow já foi publicado" e muda a janela para "Upload new version"
- Somente o autor original do item pode publicar uma nova versão; um administrador de plataforma pode publicar em seu nome, mas a atribuição do autor do item não muda. Para os itens do sistema incorporado, apenas os administradores podem publicar novas versões.
- O novo número de versão deve ser válido semver e não inferior à versão mais recente atual. O mesmo número de versão não pode ser carregado duas vezes.
- A nova versão também entra em revisão pendente; durante revisão o item permanece listado, e outros usuários ainda baixar a versão mais recente listada.
- Usuários que baixaram o item veem um prompt de atualização no cartão de mercado e em "Downloaded by me"; re-downloading updates to the latest version.
- A página de detalhes do item lista o histórico completo da versão e as notas de lançamento para cada versão.
Instalação: resolução automática de dependência
Clique em "Download" para armazenar o item em seu modelo ou biblioteca de módulos. Se o modelo ou módulo referencia outros módulos (via etapas sub workflow), a plataforma resolve o gráfico de dependência completo antes de baixar e marca o status de cada dependência:
| Estado | significado |
|---|---|
| Transferido | Sua biblioteca já tem a versão mais recente deste módulo — pulou |
| Necessidade de actualização | Você baixou uma versão antiga — este passe também atualiza |
| Disponível | Está no mercado e você não baixou o download — este passe também o baixa |
| Faltando | Nenhum módulo do mesmo nome encontrado no mercado |
| Escondido | O módulo existe, mas é restrito a uma equipe ou usuários que você não faz parte |
Depois de confirmar "Download with dependencies", a instalação prossegue em ordem de dependência: primeiro os módulos referenciados de nível mais baixo, camada por camada para cima, e finalmente o item que você clicou. Durante o download, o workflow id que as referências sub workflow em suas cópias são automaticamente reescritas para o ID da cópia correspondente em sua biblioteca - então, após a instalação, você não precisa corrigir nenhuma referência à mão: modelos podem ser instanciados e executados diretamente, e módulos podem ser referenciados diretamente.
# 下载最新版,连同依赖一起(返回本次创建的全部下载记录)
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>"- A resolução de dependência é executada somente quando se baixa a versão mais recente; baixar uma versão histórica específica baixa apenas esse item em si.
- As referências circulares (A referências B e B referências A) são detectadas e tratadas corretamente, sem bloquear a instalação.
- O download em si não conta contra sua quota de workflow; apenas a instanciação posterior conta.
Quando uma dependência mostra "Perdendo" ou "Não visível", o item pai ainda pode ser instalado em sua biblioteca, mas o passo correspondente sub workflow não pode ser executado até que esse módulo seja publicado ou se torne visível para você. A janela de confirmação da transferência define explicitamente estas lacunas.
Depois de baixar: instanciation
Baixando apenas coloca o item em sua biblioteca, e a cópia está bloqueada somente leitura por padrão. Existem dois caminhos para começar a usá-lo:
- Modelo: na biblioteca de modelos, clique em "Usar" no item baixado para instanciar um workflow editável, chamado "Nome original (criado do modelo)" por padrão. Este passo é o que conta contra sua quota de workflow.
- Módulo: uma vez baixado, ele pode ser referenciado pelo nome de seus workflows através de uma etapa sub workflow; você também pode instanciar uma cópia editável na biblioteca do módulo e modificá-la.
Um workflow instanciado é independente do item marketplace: uma nova versão do autor não mudará sua instância, e desinstalar um item de "Downloaded by me" não afeta workflows que você já tenha instanciado.
A cópia da biblioteca baixada pode ser desbloqueada: uma vez desbloqueada, você pode editá-la diretamente no editor. Mas note que atualizar o download substitui esta cópia da biblioteca por atacado com a nova versão, e suas alterações serão perdidas — para modificações de longo prazo, instance seu próprio workflow e edite isso.
Objetivos comuns
| Ponto final | Objecto |
|---|---|
GET /api/marketplace/items | Procurar (paginado, com tipo / categoria / etiqueta / filtros de pesquisa) |
GET /api/marketplace/items/{id} | Detalhes do item + histórico da versão |
GET /api/marketplace/categories | Todas as categorias de itens atualmente visíveis |
POST /api/marketplace/items | Publicar um novo artigo |
POST /api/marketplace/items/{id}/versions | Publicar uma nova versão |
GET /api/marketplace/items/{id}/dependencies | Ver a árvore de dependências |
POST /api/marketplace/items/{id}/download | Download (Baixar a versão mais recente inclui dependências por padrão) |
GET /api/marketplace/my-uploads | Itens que publiquei |
GET /api/marketplace/my-downloads | Itens que baixei (com avisos de atualização) |
POST /api/marketplace/downloads/{itemId}/instantiate | Instalar um item baixado em um workflow editável |
DELETE /api/marketplace/downloads/{itemId} | Desinstale um item baixado (não afeta workflows instanciados) |