API de Armazenamento de Estratégia
Referência completa da API de Armazenamento de Estratégia — endpoints, schema de request, schema de response e códigos de erro.
Visão geral
A API de Armazenamento de Estratégia guarda um objeto de Strategy DSL como um ativo independente de primeira classe — sem depender de nenhum backtest ou subscription ao vivo. Salve uma estratégia uma vez pra ganhar um id estável, depois referencie esse id (ou simplesmente passe sua definition direto) ao submeter pra Backtesting API ou pra Live Execution API.
URL base: https://strategy.emidlabs.com/api/public/v1
/strategies exige o header x-api-key com uma API key válida escopada pro serviço strategy. Keys são geradas no Console.riskManagement/entryFeePct realmente fazem depende inteiramente de pra onde você submeter a estratégia depois, não dessa API.#POST /strategies — Salvar
/strategiesSalva uma nova estratégia.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Sim | Nome legível pra essa estratégia. |
| description | string | Não | Notas em texto livre sobre essa estratégia. |
| definition | string | Sim | O objeto de Strategy DSL, serializado como string JSON — veja a página Strategy System pro formato completo. |
| tags | array de string | Não | Rótulos livres pra filtrar depois via GET /strategies. |
Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| id | string (UUID) | Identificador único da estratégia. |
| name | string | Ecoa a requisição. |
| status | string | "Active" imediatamente após a criação. |
| createdAtUtc | string | Timestamp de criação em UTC. |
#GET /strategies/:id — Buscar
/strategies/{id}Busca uma estratégia salva pelo id, incluindo sua definição completa.
Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| id | string (UUID) | Identificador único da estratégia. |
| name | string | |
| description | string | null | |
| definition | string | O objeto de Strategy DSL, serializado como string JSON. |
| tags | array de string | |
| status | string | "Active" ou "Archived". |
| createdAtUtc | string | |
| updatedAtUtc | string |
#GET /strategies — Listar
/strategiesLista as estratégias dessa conta, paginado.
Parâmetros de query
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| page | number | 1 | Número da página, base 1. |
| pageSize | number | 20 | Itens por página. Limitado ao intervalo 1–100. |
| tag | string | (nenhum) | Filtro de correspondência exata — só estratégias que carregam essa tag. |
| status | string | "Active" | "Active" ou "Archived". Usa Active-only por padrão quando omitido. |
status retorna só estratégias Active — passe status=Archived explicitamente pra ver as que você arquivou.Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| items | array | Uma entrada por estratégia nessa página — mesmo formato de GET /strategies/:id. |
| totalCount | number | Total de estratégias que batem com o filtro, em todas as páginas. |
| page / pageSize / totalPages | number | Campos padrão de paginação. |
#PUT /strategies/:id — Atualizar
/strategies/{id}Atualiza os campos de uma estratégia salva. Sobrescreve no lugar — não há histórico de versões.
Corpo da requisição
Todos os campos são opcionais — presente significa "mude isso", ausente significa "deixe como está". Enviar tags substitui a lista de tags por completo, não mescla com a existente.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Não | Novo nome. |
| description | string | Não | Nova descrição. |
| definition | string | Não | Novo objeto de Strategy DSL, serializado como string JSON. |
| tags | array de string | Não | Nova lista de tags — substitui a existente. |
Resposta
Mesmo formato de GET /strategies/:id, refletindo os campos que você mudou.
#DELETE /strategies/:id — Arquivar
/strategies/{id}Arquiva uma estratégia — soft-delete, nunca apaga de verdade.
Uma estratégia arquivada continua existindo e continua buscável via GET /strategies/:id — ela só fica de fora da listagem padrão de GET /strategies. Não existe endpoint pra apagar uma estratégia permanentemente ou pra desarquivar uma.
Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| id | string (UUID) | |
| status | string | "Archived". |
#GET /dsl-core-reference
/dsl-core-referenceA fatia genuinamente compartilhada da referência de Strategy DSL, como texto/markdown puro.
Sem autenticação — não precisa de x-api-key, mesmo tratamento de /health. Cobre a seção de inputs/conditions/score (funções nativas, catálogo de candlestick, sintaxe de expressão) — a parte da DSL que significa exatamente a mesma coisa não importa onde a estratégia acabe rodando. Consumido em tempo real pelo resource strategy-dsl-spec dos três servidores MCP em vez de cada um copiar à mão. Não é feito pra ser chamado diretamente em uso normal — ele existe pra que configuration/decision/riskManagement, que significam coisas diferentes dependendo do alvo, continuem documentados localmente por quem quer que implemente esse comportamento de verdade.
#Códigos de erro
Toda resposta de erro tem o mesmo formato: { "error": "<código>", "message": "<texto>" }.
| Status | Código | Descrição |
|---|---|---|
| 400 | invalid_payload | O corpo da requisição está malformado, faltando campos obrigatórios, ou a definition falha na validação estrutural — confira o campo message pros detalhes. |
| 401 | api_key_missing | O header x-api-key não foi enviado. |
| 401 | api_key_invalid | A API key fornecida é inválida, revogada ou inativa. |
| 403 | service_not_enabled | A API key é válida mas não está escopada pro serviço strategy. |
| 429 | rate_limit_exceeded | Muitas requisições pra essa conta. Reduza o ritmo e tente de novo. |
| 500 | execution_failed | Erro no servidor. |