Documentation

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

Toda requisição pra /strategies exige o header x-api-key com uma API key válida escopada pro serviço strategy. Keys são geradas no Console.
💡
Esse serviço é armazenamento puro — ele nunca roda uma estratégia, e nunca interpreta a DSL além de checar se é um JSON bem formado. O que riskManagement/entryFeePct realmente fazem depende inteiramente de pra onde você submeter a estratégia depois, não dessa API.

#POST /strategies — Salvar

POST/strategies

Salva uma nova estratégia.

Corpo da requisição

CampoTipoObrigatórioDescrição
namestringSimNome legível pra essa estratégia.
descriptionstringNãoNotas em texto livre sobre essa estratégia.
definitionstringSimO objeto de Strategy DSL, serializado como string JSON — veja a página Strategy System pro formato completo.
tagsarray de stringNãoRótulos livres pra filtrar depois via GET /strategies.

Resposta

CampoTipoDescrição
idstring (UUID)Identificador único da estratégia.
namestringEcoa a requisição.
statusstring"Active" imediatamente após a criação.
createdAtUtcstringTimestamp de criação em UTC.

#GET /strategies/:id — Buscar

GET/strategies/{id}

Busca uma estratégia salva pelo id, incluindo sua definição completa.

Resposta

CampoTipoDescrição
idstring (UUID)Identificador único da estratégia.
namestring
descriptionstring | null
definitionstringO objeto de Strategy DSL, serializado como string JSON.
tagsarray de string
statusstring"Active" ou "Archived".
createdAtUtcstring
updatedAtUtcstring

#GET /strategies — Listar

GET/strategies

Lista as estratégias dessa conta, paginado.

Parâmetros de query

ParâmetroTipoPadrãoDescrição
pagenumber1Número da página, base 1.
pageSizenumber20Itens por página. Limitado ao intervalo 1–100.
tagstring(nenhum)Filtro de correspondência exata — só estratégias que carregam essa tag.
statusstring"Active""Active" ou "Archived". Usa Active-only por padrão quando omitido.
💡
Omitir status retorna só estratégias Active — passe status=Archived explicitamente pra ver as que você arquivou.

Resposta

CampoTipoDescrição
itemsarrayUma entrada por estratégia nessa página — mesmo formato de GET /strategies/:id.
totalCountnumberTotal de estratégias que batem com o filtro, em todas as páginas.
page / pageSize / totalPagesnumberCampos padrão de paginação.

#PUT /strategies/:id — Atualizar

PUT/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.

CampoTipoObrigatórioDescrição
namestringNãoNovo nome.
descriptionstringNãoNova descrição.
definitionstringNãoNovo objeto de Strategy DSL, serializado como string JSON.
tagsarray de stringNãoNova lista de tags — substitui a existente.

Resposta

Mesmo formato de GET /strategies/:id, refletindo os campos que você mudou.

#DELETE /strategies/:id — Arquivar

DELETE/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

CampoTipoDescrição
idstring (UUID)
statusstring"Archived".

#GET /dsl-core-reference

GET/dsl-core-reference

A 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>" }.

StatusCódigoDescrição
400invalid_payloadO corpo da requisição está malformado, faltando campos obrigatórios, ou a definition falha na validação estrutural — confira o campo message pros detalhes.
401api_key_missingO header x-api-key não foi enviado.
401api_key_invalidA API key fornecida é inválida, revogada ou inativa.
403service_not_enabledA API key é válida mas não está escopada pro serviço strategy.
429rate_limit_exceededMuitas requisições pra essa conta. Reduza o ritmo e tente de novo.
500execution_failedErro no servidor.