{"service":"meta-api","version":"0.1.0","modules":{"ads":{"POST /{tenant}/campaign":"Criar campanha","POST /{tenant}/adset":"Criar ad set","POST /{tenant}/ad":"Criar anúncio","POST /{tenant}/media":"Upload imagem/vídeo","POST /{tenant}/pause/{id}":"Pausar campanha/adset/ad","POST /{tenant}/activate/{id}":"Ativar campanha/adset/ad","GET /{tenant}/insights":"Métricas de performance","GET /{tenant}/campaigns":"Listar campanhas","GET /{tenant}/adsets":"Listar ad sets","GET /{tenant}/ads":"Listar anúncios","GET /{tenant}/campaign/{id}/tree":"Árvore campanha → adsets → ads","GET /{tenant}/structure/audit":"Auditoria estrutural da conta","PUT /{tenant}/campaign/{id}":"Atualizar campanha (dry-run sem X-Confirm-Write)","PUT /{tenant}/adset/{id}":"Atualizar adset (dry-run sem X-Confirm-Write)","PUT /{tenant}/ad/{id}":"Atualizar ad (dry-run sem X-Confirm-Write)","POST /{tenant}/adset/{id}/budget":"Alterar budget (>30% exige X-Allow-Big-Change)","POST /{tenant}/duplicate/{id}":"Duplicar via /copies (sempre PAUSED)","DELETE /{tenant}/{campaign|adset|ad}/{id}":"Arquivar (ARCHIVED, nunca delete real)"},"library":{"GET /library/search":"Buscar anúncios por page_id ou termo","GET /library/competitor/{page_id}":"Anúncios de um concorrente","GET /library/trends":"Tendências dos anúncios cacheados"},"social":{"GET /social/instagram/{page}/posts":"Posts do Instagram","GET /social/instagram/{page}/reels":"Reels do Instagram","GET /social/instagram/{page}/insights":"Métricas Instagram","GET /social/facebook/{page}/posts":"Posts do Facebook","GET /social/facebook/{page}/insights":"Métricas Facebook","GET /social/{page}/growth":"Crescimento consolidado IG+FB"},"attribution":{"GET /{tenant}/attribution/report":"Relatório de atribuição por período","GET /{tenant}/attribution/by-campaign":"Conversões por campanha","GET /{tenant}/attribution/by-ad":"Conversões por anúncio","GET /{tenant}/attribution/by-utm":"Performance por UTM source/medium/campaign","GET /{tenant}/attribution/funnel":"Funil: sessions → events → conversions"},"sources":{"POST /{tenant}/sources/register":"Registrar fonte de conversão (AI, human, store, etc.)","GET /{tenant}/sources/breakdown":"Vendas por source_type com totais","GET /{tenant}/sources/by-channel":"Vendas por canal (whatsapp, site, pdv, etc.)","GET /{tenant}/sources/by-agent":"Performance de agentes IA","GET /{tenant}/sources/orders/{order_id}":"Fonte de uma ordem específica"},"coupons":{"POST /{tenant}/coupons":"Criar cupom de desconto","GET /{tenant}/coupons":"Listar todos os cupons","GET /{tenant}/coupons/{code}":"Detalhes do cupom","GET /{tenant}/coupons/{code}/stats":"Estatísticas do cupom (usos, receita, comissão)","PUT /{tenant}/coupons/{code}":"Atualizar cupom","DELETE /{tenant}/coupons/{code}":"Desativar cupom","POST /{tenant}/coupons/{code}/use":"Registrar uso do cupom","POST /{tenant}/coupons/{code}/validate":"Validar cupom sem usar","POST /{tenant}/coupons/{code}/calculate":"Calcular desconto para um valor"},"influencers":{"POST /{tenant}/influencers":"Criar influencer (name, instagram, email, phone, coupon_code, commission_percent)","GET /{tenant}/influencers":"Listar influencers com stats resumidos","GET /{tenant}/influencers/{id}":"Detalhes do influencer","GET /{tenant}/influencers/{id}/report":"Relatório completo (vendas, receita, comissão, pedidos, ticket médio)","PUT /{tenant}/influencers/{id}":"Atualizar influencer","POST /{tenant}/influencers/{id}/payout":"Registrar pagamento de comissão"},"capi":{"POST /{tenant}/capi/send":"Enviar evento para Meta Conversions API","POST /{tenant}/capi/purchase":"Enviar Purchase com dados do pedido","GET /{tenant}/capi/quality":"Ver Event Match Quality dos eventos","GET /{tenant}/capi/events":"Histórico de eventos enviados","POST /{tenant}/capi/test":"Testar config com test_event_code","GET /{tenant}/capi/pending":"Ver eventos pendentes (sent_to_capi=FALSE)","POST /{tenant}/capi/flush":"Forçar envio de todos os eventos pendentes"},"tracking":{"POST /{tenant}/track/session":"Criar sessão de tracking (captura UTMs, fbclid, cookies)","POST /{tenant}/track/event":"Registrar evento (PageView, AddToCart, etc.)","POST /{tenant}/track/purchase":"Webhook de compra (cria conversão)","GET /{tenant}/track/sessions":"Listar sessões","GET /{tenant}/track/events":"Listar eventos","GET /{tenant}/track/conversions":"Listar conversões"},"meta":{"/health":"Health check","/docs":"Swagger UI (documentação interativa)"},"rules":{"GET /{tenant}/rules":"Listar regras automatizadas (adrules_library)","GET /{tenant}/rules/{id}":"Detalhe de uma regra","GET /{tenant}/rules/{id}/history":"Histórico de execuções da regra","POST /{tenant}/rules":"Criar regra (PAUSE/UNPAUSE/CHANGE_BUDGET/NOTIFY_ONLY) — exige X-Confirm-Write: yes, senão 428 dry-run","POST /{tenant}/rules/templates/fatigue":"Payload pronto: pausar adset se frequency>5 E ctr<1% (3 dias) — não cria"},"account":{"GET /{tenant}/account":"Metadados da conta (status, saldo, spend_cap, billing, BM dono)","GET /{tenant}/account/limits":"spend_cap vs amount_spent + rate-limit (X-Business-Use-Case-Usage)","GET /{tenant}/account/activity":"Quem mexeu no quê (?since&until)","GET /{tenant}/account/users":"Usuários com acesso à conta","GET /{tenant}/account/pages":"Páginas do token (me/accounts)","GET /{tenant}/account/token":"debug_token (type, is_valid, expires_at, scopes) — nunca expõe o token"},"health":{"GET /{tenant}/health/tracking":"Health do tracking (last_pixel_event, last_capi_event, gap_24h, match_rate_24h, alerts)","GET /{tenant}/health/attribution":"Health da atribuição (gap_meta_vs_loja, sessions_sem_conversao_pct, conversoes_sem_session_pct)","GET /{tenant}/health/summary":"Resumo consolidado de saúde (status, tracking, attribution, alerts)"},"pixel":{"GET /{tenant}/pixel":"Metadados do pixel (name, last_fired_time, automatic matching)","GET /{tenant}/pixel/stats":"Stats normalizados (aggregation=event|device_type|host|url|pixel_fire)","GET /{tenant}/pixel/daily":"Série diária por evento (days=14)","GET /{tenant}/pixel/funnel":"Funil do pixel com taxas (days=7)","GET /{tenant}/pixel/health":"Alertas: PIXEL_STOPPED, SEM_PURCHASE_24H, EVENTO_FALTANDO, ANOMALIA_FUNIL","GET /{tenant}/pixel/domains":"da_checks + shared_accounts + shared_agencies","GET /{tenant}/pixel/events-config":"Config AEM (501 em v23.0)"},"webhooks":{"POST /{tenant}/webhook/nuvemshop/order":"Recebe webhook de pedido Nuvemshop (valida HMAC, cria conversão, dispara CAPI)","POST /{tenant}/webhook/shopify/order":"Recebe webhook de pedido Shopify (valida HMAC, cria conversão, dispara CAPI)","GET /{tenant}/webhook/config":"Configuração de webhook (URL e secret para setup na plataforma)","PUT /{tenant}/webhook/config/{platform}":"Atualizar secret do webhook","GET /{tenant}/webhook/events":"Histórico de webhooks recebidos"},"targeting":{"GET /{tenant}/targeting/search":"Buscar interesses/cargos/escolas/idiomas (?q&type=adinterest|adworkposition|adeducationschool|adlocale) com tamanho de público","GET /{tenant}/targeting/suggestions":"Interesses relacionados (?interests=id1,id2)","GET /{tenant}/targeting/browse":"Árvore de demografia/comportamentos da conta (targetingbrowse)","GET /{tenant}/targeting/geo":"Cidades/estados BR (?q&location_types=city,region) com snippet de targeting","GET /{tenant}/targeting/estimate":"Tamanho estimado (estimate_mau) via delivery_estimate (?interests&age_min&age_max&genders ou targeting_spec JSON)","GET /{tenant}/targeting/adset/{id}/reach":"Targeting + descrição em português do público (targetingsentencelines)","GET /{tenant}/targeting/overlap":"Sobreposição heurística local entre conjuntos (?adset_ids=a,b,c) — Audience Overlap nativo foi descontinuado"},"leads":{"GET /{tenant}/leads/forms":"Formulários de Lead Ads de todas as páginas (troca por Page token)","GET /{tenant}/leads/forms/{form_id}/leads":"Leads do formulário (?since) com email/telefone MASCARADOS","GET /{tenant}/leads/summary":"Leads e CPL por formulário cruzando com campanhas OUTCOME_LEADS (?since&until)"}}}