{"openapi":"3.1.0","info":{"title":"utmiro API","version":"1.0.0","description":"Registre vendas e descubra de qual BM, conta, campanha e criativo elas vieram. Autenticação: `Authorization: Bearer utm_live_...`."},"servers":[{"url":"https://api.utmiro.com/api/v1"}],"security":[{"bearer":[]}],"paths":{"/me":{"get":{"operationId":"whoami","summary":"Confirma que a chave funciona","responses":{"200":{"description":"OK"},"401":{"description":"Erro","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/structure":{"get":{"operationId":"getStructure","summary":"Lista criativos com suas UTMs","responses":{"200":{"description":"OK"},"401":{"description":"Erro","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/conversions":{"post":{"operationId":"createConversion","summary":"Registra uma venda e a atribui. Idempotente por external_id.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Alternativa a external_id."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionInput"}}}},"responses":{"200":{"description":"Duplicada: devolve a existente com duplicate=true"},"201":{"description":"Criada","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Conversion"}}}}}},"400":{"description":"Erro","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Erro","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Erro","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"listConversions","summary":"Lista vendas, mais recentes primeiro","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"before","in":"query","schema":{"type":"string"},"description":"Cursor: next_before da página anterior."}],"responses":{"200":{"description":"OK"},"401":{"description":"Erro","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"ConversionInput":{"type":"object","description":"Envie page_url com a query string original, chaves utm_* soltas ou um objeto `utm`. Qualquer UTM é guardada e pode virar painel.","properties":{"utm_content":{"type":"string","description":"Código do criativo, vindo da UTM que o utmiro gerou."},"utm_campaign":{"type":"string"},"utm":{"type":"object","description":"UTMs livres, ex. {\"utm_term\":\"x\"}. Também vale qualquer utm_* no topo.","additionalProperties":{"type":"string"}},"page_url":{"type":"string","format":"uri","description":"URL da página de compra. As utm_* da query são lidas automaticamente."},"value":{"type":"number","minimum":0,"description":"Em unidades da moeda: 199.9 = R$ 199,90."},"currency":{"type":"string","default":"BRL"},"event":{"type":"string","default":"purchase"},"external_id":{"type":"string","description":"Id do pedido no seu sistema. Evita registrar a mesma venda duas vezes."},"occurred_at":{"type":"string","format":"date-time","description":"Padrão: agora."}}},"Conversion":{"type":"object","properties":{"id":{"type":"string","example":"cnv_12"},"status":{"type":"string","enum":["attributed","partial","tracked","unattributed"]},"event":{"type":"string"},"external_id":{"type":["string","null"]},"value":{"type":["number","null"]},"currency":{"type":"string"},"occurred_at":{"type":"string"},"attribution":{"type":["object","null"],"properties":{"bm":{"type":"string"},"account":{"type":"string"},"campaign":{"type":"string"},"creative":{"type":["string","null"]}}},"utm":{"type":"object","additionalProperties":{"type":"string"}},"duplicate":{"type":"boolean"},"hint":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"},"fields":{"type":"object"},"docs":{"type":"string"}}}}}}}}