{"openapi":"3.1.0","info":{"title":"Momentum — API pública de leitura","version":"1.0.0","description":"Leitura dos dados da organização. Crie uma chave em Configurações → API pública e envie no cabeçalho Authorization: Bearer. Escopos: orders:read (Pedidos), revenue:read (Receita), profit:read (Margem estimada), tracking:read (Saúde do tracking), ads:read (Resumo de anúncios), creatives:read (Criativos)."},"servers":[{"url":"https://app.momentummidia.com/api"}],"components":{"securitySchemes":{"chave":{"type":"http","scheme":"bearer","description":"Chave mm_pub_..."}},"schemas":{"Erro":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável em inglês, ex.: public_api_key, public_api_scope."},"message":{"type":"string","description":"Mensagem em português."},"requestId":{"type":"string"}}}}},"Pedido":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"source":{"type":"string"},"externalOrderId":{"type":"string"},"environment":{"enum":["test","live"]},"status":{"enum":["pending","failed","cancelled","approved","partially_refunded","refunded","chargeback"]},"trust":{"enum":["merchant_reported","provider_verified"],"description":"Declarado pela loja ou confirmado pelo provedor de pagamento."},"amountMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"paidMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"refundedMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"currency":{"type":"string"},"placedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"attributionStatus":{"enum":["attributed","unattributed"]}}},"PaginaDePedidos":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Pedido"}},"nextCursor":{"type":["string","null"],"description":"Envie em cursor para a próxima página."}}},"Receita":{"type":"object","description":"Receita líquida (pago menos estornado) por moeda; nunca é lucro.","properties":{"since":{"type":"string","format":"date-time"},"environment":{"enum":["test","live"]},"totals":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"orders":{"type":"integer"},"confirmedNetMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"declaredNetMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"refundedMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"chargebacks":{"type":"integer"},"attributedNetMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"unattributedNetMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."}}}},"byCampaign":{"type":"array","items":{"type":"object"}}}},"Margem":{"type":"object","description":"Margem de contribuição estimada com os custos informados pela organização. Não é lucro.","properties":{"currency":{"type":"string"},"revenue":{"type":"object"},"adSpendMinor":{"type":["integer","null"]},"costs":{"type":"object"},"contributionMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"contributionMarginBp":{"type":["integer","null"],"description":"Pontos-base (1% = 100)."},"roas":{"type":["number","null"]},"breakEvenRoas":{"type":["number","null"]},"considered":{"type":"array","items":{"type":"string"}},"notConsidered":{"type":"array","items":{"type":"string"}}}},"Saude":{"type":"object","properties":{"checkedAt":{"type":"string","format":"date-time"},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"severity":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"action":{"type":"string"}}}}}},"ResumoDeAnuncios":{"type":"object","properties":{"currency":{"type":["string","null"]},"mixedCurrencies":{"type":"boolean"},"totals":{"type":"object","properties":{"spendMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"impressions":{"type":"integer"},"clicks":{"type":"integer"},"linkClicks":{"type":"integer"},"purchases":{"type":"integer"},"purchaseValueMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"ctr":{"type":["number","null"]},"cpcMinor":{"type":["integer","null"]},"cpmMinor":{"type":["integer","null"]},"cpaMinor":{"type":["integer","null"]},"roas":{"type":["number","null"]}}},"daily":{"type":"array","items":{"type":"object","properties":{"spendMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"impressions":{"type":"integer"},"clicks":{"type":"integer"},"linkClicks":{"type":"integer"},"purchases":{"type":"integer"},"purchaseValueMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"ctr":{"type":["number","null"]},"cpcMinor":{"type":["integer","null"]},"cpmMinor":{"type":["integer","null"]},"cpaMinor":{"type":["integer","null"]},"roas":{"type":["number","null"]}}}},"campaigns":{"type":"array","items":{"type":"object","properties":{"spendMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"impressions":{"type":"integer"},"clicks":{"type":"integer"},"linkClicks":{"type":"integer"},"purchases":{"type":"integer"},"purchaseValueMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"ctr":{"type":["number","null"]},"cpcMinor":{"type":["integer","null"]},"cpmMinor":{"type":["integer","null"]},"cpaMinor":{"type":["integer","null"]},"roas":{"type":["number","null"]}}}},"lastSyncedAt":{"type":["string","null"],"format":"date-time"}}},"Criativos":{"type":"object","properties":{"period":{"type":"object"},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"currency":{"type":"string"},"metrics":{"type":"object","properties":{"spendMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"impressions":{"type":"integer"},"clicks":{"type":"integer"},"linkClicks":{"type":"integer"},"purchases":{"type":"integer"},"purchaseValueMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"ctr":{"type":["number","null"]},"cpcMinor":{"type":["integer","null"]},"cpmMinor":{"type":["integer","null"]},"cpaMinor":{"type":["integer","null"]},"roas":{"type":["number","null"]}}},"previous":{"type":"object","properties":{"spendMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"impressions":{"type":"integer"},"clicks":{"type":"integer"},"linkClicks":{"type":"integer"},"purchases":{"type":"integer"},"purchaseValueMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"ctr":{"type":["number","null"]},"cpcMinor":{"type":["integer","null"]},"cpmMinor":{"type":["integer","null"]},"cpaMinor":{"type":["integer","null"]},"roas":{"type":["number","null"]}}},"recent":{"type":"object","properties":{"spendMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"impressions":{"type":"integer"},"clicks":{"type":"integer"},"linkClicks":{"type":"integer"},"purchases":{"type":"integer"},"purchaseValueMinor":{"type":"integer","description":"Unidade menor da moeda (centavos no BRL)."},"ctr":{"type":["number","null"]},"cpcMinor":{"type":["integer","null"]},"cpmMinor":{"type":["integer","null"]},"cpaMinor":{"type":["integer","null"]},"roas":{"type":["number","null"]}}},"signals":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"}}}}}}},"lastSyncedAt":{"type":["string","null"]}}}}},"paths":{"/v1/orders":{"get":{"summary":"Pedidos, do mais recente para o mais antigo","description":"Escopo necessário: `orders:read`.","security":[{"chave":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginaDePedidos"}}}},"401":{"description":"Chave inválida, vencida ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Escopo, permissão ou plano","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 120 chamadas por minuto por chave"}}}},"/v1/revenue":{"get":{"summary":"Receita por confiança e atribuição","description":"Escopo necessário: `revenue:read`.","security":[{"chave":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"default":30,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"environment","in":"query","required":false,"schema":{"default":"live","type":"string","enum":["test","live"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receita"}}}},"401":{"description":"Chave inválida, vencida ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Escopo, permissão ou plano","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 120 chamadas por minuto por chave"}}}},"/v1/profit":{"get":{"summary":"Margem de contribuição estimada","description":"Escopo necessário: `profit:read`.","security":[{"chave":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"default":30,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"basis","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","confirmed"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Margem"}}}},"401":{"description":"Chave inválida, vencida ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Escopo, permissão ou plano","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 120 chamadas por minuto por chave"}}}},"/v1/tracking/health":{"get":{"summary":"Problemas do tracking com a ação recomendada","description":"Escopo necessário: `tracking:read`.","security":[{"chave":[]}],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Saude"}}}},"401":{"description":"Chave inválida, vencida ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Escopo, permissão ou plano","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 120 chamadas por minuto por chave"}}}},"/v1/ads/overview":{"get":{"summary":"Resumo de Meta Ads no período","description":"Escopo necessário: `ads:read`.","security":[{"chave":[]}],"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumoDeAnuncios"}}}},"401":{"description":"Chave inválida, vencida ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Escopo, permissão ou plano","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 120 chamadas por minuto por chave"}}}},"/v1/creatives":{"get":{"summary":"Desempenho e sinais por criativo","description":"Escopo necessário: `creatives:read`.","security":[{"chave":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"default":28,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Criativos"}}}},"401":{"description":"Chave inválida, vencida ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Escopo, permissão ou plano","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 120 chamadas por minuto por chave"}}}}}}