{"openapi":"3.1.0","info":{"title":"boring-tools — calculators API","version":"1.0.0"},"servers":[{"url":"https://api.calculadoradomundo.com.br"}],"paths":{"/api/v1/calc/adicional-noturno":{"post":{"summary":"Calculadora de Adicional Noturno (2026)","description":"Calcule o adicional noturno de 20% e a hora noturna reduzida (52min30s) sobre o valor da hora.","operationId":"calc_adicional_noturno","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário mensal que serve de base para o valor da hora.","minimum":0},"jornada_mensal_h":{"type":"number","description":"Horas mensais usadas como base do valor-hora (44h semanais = 220h/mês).","minimum":1},"horas_noturnas":{"type":"number","description":"Horas de relógio trabalhadas no período noturno (22h às 5h).","minimum":0},"adicional":{"type":"number","description":"Adicional sobre a hora noturna (mínimo 20% no trabalho urbano).","minimum":0},"hora_reduzida":{"type":"string","enum":["1","0"],"description":"A redução noturna converte 52min30s em uma hora cheia."}},"required":["salario_bruto_brl","jornada_mensal_h","horas_noturnas","adicional","hora_reduzida"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"adicional-noturno"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário mensal que serve de base para o valor da hora.","minimum":0},"jornada_mensal_h":{"type":"number","description":"Horas mensais usadas como base do valor-hora (44h semanais = 220h/mês).","minimum":1},"horas_noturnas":{"type":"number","description":"Horas de relógio trabalhadas no período noturno (22h às 5h).","minimum":0},"adicional":{"type":"number","description":"Adicional sobre a hora noturna (mínimo 20% no trabalho urbano).","minimum":0},"hora_reduzida":{"type":"string","enum":["1","0"],"description":"A redução noturna converte 52min30s em uma hora cheia."}},"required":["salario_bruto_brl","jornada_mensal_h","horas_noturnas","adicional","hora_reduzida"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_adicional_brl":{"type":"number","title":"Total do adicional noturno","description":"Unidade: R$"},"valor_hora_brl":{"type":"number","title":"Valor da hora normal","description":"Unidade: R$"},"horas_equivalentes":{"type":"number","title":"Horas após redução noturna","description":"Unidade: h"}},"required":["valor_adicional_brl","valor_hora_brl","horas_equivalentes"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/adubo-por-area":{"post":{"summary":"Calculadora de Adubo por Área","description":"Calcule a quantidade de adubo necessária a partir da área do canteiro e da dose recomendada por metro quadrado.","operationId":"calc_adubo_por_area","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total que receberá adubação, em metros quadrados.","minimum":0},"dose_g_m2":{"type":"number","description":"Dose recomendada de adubo em gramas por metro quadrado.","minimum":0}},"required":["area_m2","dose_g_m2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"adubo-por-area"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total que receberá adubação, em metros quadrados.","minimum":0},"dose_g_m2":{"type":"number","description":"Dose recomendada de adubo em gramas por metro quadrado.","minimum":0}},"required":["area_m2","dose_g_m2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"adubo_kg":{"type":"number","title":"Adubo necessário","description":"Unidade: kg"}},"required":["adubo_kg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/agua-por-dia":{"post":{"summary":"Calculadora de Água por Dia","description":"Descubra quantos litros de água beber por dia pelo seu peso e pelo tempo de exercício.","operationId":"calc_agua_por_dia","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"ml_por_kg":{"type":"number","description":"Quantidade de água por quilo de peso. Comum entre 30 e 40 ml/kg.","minimum":0},"minutos_exercicio":{"type":"number","description":"Minutos de atividade física por dia (acréscimo de ~350 ml a cada 30 min).","minimum":0}},"required":["peso_kg","ml_por_kg","minutos_exercicio"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"agua-por-dia"},"inputs":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"ml_por_kg":{"type":"number","description":"Quantidade de água por quilo de peso. Comum entre 30 e 40 ml/kg.","minimum":0},"minutos_exercicio":{"type":"number","description":"Minutos de atividade física por dia (acréscimo de ~350 ml a cada 30 min).","minimum":0}},"required":["peso_kg","ml_por_kg","minutos_exercicio"],"additionalProperties":false},"outputs":{"type":"object","properties":{"agua_litros":{"type":"number","title":"Água por dia","description":"Unidade: L"},"agua_ml":{"type":"number","title":"Água por dia (ml)","description":"Unidade: mL"},"copos_por_dia":{"type":"number","title":"Copos de 250 ml","description":"Unidade: un"}},"required":["agua_litros","agua_ml","copos_por_dia"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/alcool-ou-gasolina":{"post":{"summary":"Álcool ou Gasolina: qual vale mais a pena (regra dos 70%)","description":"Compara etanol e gasolina pela regra dos 70%: informe os preços por litro e veja qual abastece mais barato.","operationId":"calc_alcool_ou_gasolina","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preco_etanol_brl":{"type":"number","description":"Preço do litro de etanol no posto.","minimum":0},"preco_gasolina_brl":{"type":"number","description":"Preço do litro de gasolina no posto.","minimum":0},"limite_percent":{"type":"number","description":"Limiar de vantagem do etanol. Use 75% para carros mais eficientes no etanol.","minimum":0,"maximum":100}},"required":["preco_etanol_brl","preco_gasolina_brl","limite_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"alcool-ou-gasolina"},"inputs":{"type":"object","properties":{"preco_etanol_brl":{"type":"number","description":"Preço do litro de etanol no posto.","minimum":0},"preco_gasolina_brl":{"type":"number","description":"Preço do litro de gasolina no posto.","minimum":0},"limite_percent":{"type":"number","description":"Limiar de vantagem do etanol. Use 75% para carros mais eficientes no etanol.","minimum":0,"maximum":100}},"required":["preco_etanol_brl","preco_gasolina_brl","limite_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"razao_percent":{"type":"number","title":"Etanol/Gasolina","description":"Unidade: %"},"economia_por_litro_brl":{"type":"number","title":"Economia por litro","description":"Unidade: R$"},"preco_equivalente_gasolina_brl":{"type":"number","title":"Preço de equilíbrio do etanol","description":"Unidade: R$"}},"required":["razao_percent","economia_por_litro_brl","preco_equivalente_gasolina_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/analise-combinatoria":{"post":{"summary":"Calculadora de Análise Combinatória","description":"Calcula combinação C(n,k), arranjo A(n,k) ou permutação P(n) a partir do total de elementos e de quantos são escolhidos.","operationId":"calc_analise_combinatoria","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"integer","description":"Quantidade total de elementos disponíveis. Inteiro de 0 a 170.","minimum":0,"maximum":170},"k":{"type":"integer","description":"Quantos elementos serão escolhidos (0 ≤ k ≤ n). Ignorado na permutação.","minimum":0,"maximum":170},"tipo":{"type":"string","enum":["0","1","2"],"description":"Combinação: ordem não importa. Arranjo: ordem importa. Permutação: ordena todos os n."}},"required":["n","k","tipo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"analise-combinatoria"},"inputs":{"type":"object","properties":{"n":{"type":"integer","description":"Quantidade total de elementos disponíveis. Inteiro de 0 a 170.","minimum":0,"maximum":170},"k":{"type":"integer","description":"Quantos elementos serão escolhidos (0 ≤ k ≤ n). Ignorado na permutação.","minimum":0,"maximum":170},"tipo":{"type":"string","enum":["0","1","2"],"description":"Combinação: ordem não importa. Arranjo: ordem importa. Permutação: ordena todos os n."}},"required":["n","k","tipo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Agrupamentos possíveis","description":"Unidade: un"},"fatorial_n":{"type":"number","title":"Fatorial de n (n!)","description":"Unidade: un"}},"required":["resultado","fatorial_n"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ar-condicionado-btu":{"post":{"summary":"Calculadora de BTU de Ar-Condicionado","description":"Calcule quantos BTUs o ar-condicionado precisa pelo tamanho do ambiente, pessoas e aparelhos.","operationId":"calc_ar_condicionado_btu","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área do cômodo em metros quadrados (comprimento × largura).","minimum":0},"pe_direito_m":{"type":"number","description":"Altura do piso ao teto, em metros. Pé-direito alto aumenta o volume de ar a refrigerar e exige mais BTU.","minimum":2},"pessoas":{"type":"integer","description":"Número de pessoas que costumam ficar no ambiente. Cada uma soma 600 BTU.","minimum":0},"aparelhos":{"type":"integer","description":"Eletrônicos que geram calor (TV, computador). 600 BTU cada.","minimum":0},"sol_direto":{"type":"boolean","description":"Escolha Sim se o cômodo pega sol direto à tarde (+800 BTU), ou Não se não."}},"required":["area_m2","pe_direito_m","pessoas","aparelhos","sol_direto"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ar-condicionado-btu"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área do cômodo em metros quadrados (comprimento × largura).","minimum":0},"pe_direito_m":{"type":"number","description":"Altura do piso ao teto, em metros. Pé-direito alto aumenta o volume de ar a refrigerar e exige mais BTU.","minimum":2},"pessoas":{"type":"integer","description":"Número de pessoas que costumam ficar no ambiente. Cada uma soma 600 BTU.","minimum":0},"aparelhos":{"type":"integer","description":"Eletrônicos que geram calor (TV, computador). 600 BTU cada.","minimum":0},"sol_direto":{"type":"boolean","description":"Escolha Sim se o cômodo pega sol direto à tarde (+800 BTU), ou Não se não."}},"required":["area_m2","pe_direito_m","pessoas","aparelhos","sol_direto"],"additionalProperties":false},"outputs":{"type":"object","properties":{"btu_recomendado":{"type":"number","title":"BTU recomendado","description":"Unidade: un"},"btu_comercial":{"type":"number","title":"Aparelho comercial","description":"Unidade: un"}},"required":["btu_recomendado","btu_comercial"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/arco-e-setor-circular":{"post":{"summary":"Calculadora de Comprimento de Arco e Área de Setor Circular","description":"Calcule o comprimento do arco, a área do setor e a corda de um setor circular a partir do raio e do ângulo central.","operationId":"calc_arco_e_setor_circular","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"raio":{"type":"number","description":"Raio do círculo, na unidade que você quiser (cm, m, etc.).","minimum":0},"angulo_grau":{"type":"number","description":"Abertura do setor em graus, normalmente entre 0° e 360°.","minimum":0,"maximum":360}},"required":["raio","angulo_grau"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"arco-e-setor-circular"},"inputs":{"type":"object","properties":{"raio":{"type":"number","description":"Raio do círculo, na unidade que você quiser (cm, m, etc.).","minimum":0},"angulo_grau":{"type":"number","description":"Abertura do setor em graus, normalmente entre 0° e 360°.","minimum":0,"maximum":360}},"required":["raio","angulo_grau"],"additionalProperties":false},"outputs":{"type":"object","properties":{"comprimento_arco":{"type":"number","title":"Comprimento do arco"},"area_setor":{"type":"number","title":"Área do setor"},"corda":{"type":"number","title":"Corda"}},"required":["comprimento_arco","area_setor","corda"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/area-de-jardim":{"post":{"summary":"Calculadora de Área de Jardim","description":"Calcula a área em m² de um jardim retangular a partir do comprimento e da largura.","operationId":"calc_area_de_jardim","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento","minimum":0},"largura_m":{"type":"number","description":"Largura","minimum":0}},"required":["comprimento_m","largura_m"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"area-de-jardim"},"inputs":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento","minimum":0},"largura_m":{"type":"number","description":"Largura","minimum":0}},"required":["comprimento_m","largura_m"],"additionalProperties":false},"outputs":{"type":"object","properties":{"area_m2":{"type":"number","title":"Área","description":"Unidade: m²"}},"required":["area_m2"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/area-de-parede":{"post":{"summary":"Calculadora de Área de Parede","description":"Calcule a área líquida de parede a partir do perímetro e do pé-direito, descontando portas e janelas.","operationId":"calc_area_de_parede","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"perimetro_m":{"type":"number","description":"Soma do comprimento de todas as paredes do ambiente, em metros.","minimum":0},"pe_direito_m":{"type":"number","description":"Altura das paredes, do piso ao teto, em metros.","minimum":0},"area_vaos_m2":{"type":"number","description":"Área total dos vãos a descontar.","minimum":0}},"required":["perimetro_m","pe_direito_m","area_vaos_m2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"area-de-parede"},"inputs":{"type":"object","properties":{"perimetro_m":{"type":"number","description":"Soma do comprimento de todas as paredes do ambiente, em metros.","minimum":0},"pe_direito_m":{"type":"number","description":"Altura das paredes, do piso ao teto, em metros.","minimum":0},"area_vaos_m2":{"type":"number","description":"Área total dos vãos a descontar.","minimum":0}},"required":["perimetro_m","pe_direito_m","area_vaos_m2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"area_liquida_m2":{"type":"number","title":"Área líquida","description":"Unidade: m²"},"area_bruta_m2":{"type":"number","title":"Área bruta","description":"Unidade: m²"}},"required":["area_liquida_m2","area_bruta_m2"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/area-perimetro-figura":{"post":{"summary":"Calculadora de Área e Perímetro de Figuras Planas","description":"Calcule área e perímetro de quadrado, retângulo, triângulo, círculo, trapézio, losango, paralelogramo ou polígono regular.","operationId":"calc_area_perimetro_figura","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"figura":{"type":"string","enum":["0","1","2","3","4","5","6","7"],"description":"Tipo de figura plana. As medidas pedidas mudam conforme a escolha."},"medida_a":{"type":"number","description":"Lado, base maior, diâmetro (no círculo, o diâmetro, não o raio) ou diagonal 1, conforme a figura.","minimum":0},"medida_b":{"type":"number","description":"Outro lado, base menor ou diagonal 2, quando a figura pedir.","minimum":0},"altura":{"type":"number","description":"Altura — usada no triângulo, no trapézio e no paralelogramo.","minimum":0},"n_lados":{"type":"integer","description":"Apenas para polígono regular (≥ 3); ignorado nas demais figuras.","minimum":3,"maximum":100}},"required":["figura","medida_a","medida_b","altura","n_lados"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"area-perimetro-figura"},"inputs":{"type":"object","properties":{"figura":{"type":"string","enum":["0","1","2","3","4","5","6","7"],"description":"Tipo de figura plana. As medidas pedidas mudam conforme a escolha."},"medida_a":{"type":"number","description":"Lado, base maior, diâmetro (no círculo, o diâmetro, não o raio) ou diagonal 1, conforme a figura.","minimum":0},"medida_b":{"type":"number","description":"Outro lado, base menor ou diagonal 2, quando a figura pedir.","minimum":0},"altura":{"type":"number","description":"Altura — usada no triângulo, no trapézio e no paralelogramo.","minimum":0},"n_lados":{"type":"integer","description":"Apenas para polígono regular (≥ 3); ignorado nas demais figuras.","minimum":3,"maximum":100}},"required":["figura","medida_a","medida_b","altura","n_lados"],"additionalProperties":false},"outputs":{"type":"object","properties":{"area":{"type":"number","title":"Área"},"perimetro":{"type":"number","title":"Perímetro"}},"required":["area","perimetro"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/argamassa-assentamento":{"post":{"summary":"Calculadora de Argamassa de Assentamento","description":"Calcule a quantidade de argamassa de assentamento (em kg e sacos de 20 kg) necessária pela área da parede.","operationId":"calc_argamassa_assentamento","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_parede_m2":{"type":"number","description":"Área total da parede a ser assentada, em metros quadrados.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso da embalagem de argamassa que você vai comprar.","minimum":1}},"required":["area_parede_m2","peso_saco_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"argamassa-assentamento"},"inputs":{"type":"object","properties":{"area_parede_m2":{"type":"number","description":"Área total da parede a ser assentada, em metros quadrados.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso da embalagem de argamassa que você vai comprar.","minimum":1}},"required":["area_parede_m2","peso_saco_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"argamassa_kg":{"type":"number","title":"Argamassa necessária","description":"Unidade: kg"},"sacos":{"type":"number","title":"Sacos","description":"Unidade: sacos"}},"required":["argamassa_kg","sacos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/aumento-e-desconto-percentual":{"post":{"summary":"Calculadora de Aumento e Desconto Percentual","description":"Aplique um aumento ou desconto percentual sobre um valor e veja o resultado e a variação em reais.","operationId":"calc_aumento_e_desconto_percentual","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"O valor original sobre o qual o percentual será aplicado.","minimum":0},"percentual":{"type":"number","description":"Quanto aplicar, em porcentagem. Ex.: 10 para 10%.","minimum":0},"operacao":{"type":"string","enum":["0","1"],"description":"Escolha se o percentual abate (desconto) ou soma (aumento) ao valor base."}},"required":["valor","percentual","operacao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"aumento-e-desconto-percentual"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"O valor original sobre o qual o percentual será aplicado.","minimum":0},"percentual":{"type":"number","description":"Quanto aplicar, em porcentagem. Ex.: 10 para 10%.","minimum":0},"operacao":{"type":"string","enum":["0","1"],"description":"Escolha se o percentual abate (desconto) ou soma (aumento) ao valor base."}},"required":["valor","percentual","operacao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_final":{"type":"number","title":"Valor final","description":"Unidade: R$"},"diferenca":{"type":"number","title":"Variação em reais","description":"Unidade: R$"}},"required":["valor_final","diferenca"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/autonomia-bateria":{"post":{"summary":"Calculadora de Autonomia de Bateria (Nobreak e Inversor)","description":"Calcule por quantas horas uma bateria alimenta uma carga a partir da capacidade em Ah e da potência consumida.","operationId":"calc_autonomia_bateria","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"capacidade_ah":{"type":"number","description":"Capacidade da bateria em ampère-hora (Ah). Veja na etiqueta da bateria.","minimum":0},"tensao_v":{"type":"number","description":"Tensão nominal da bateria em volts (12, 24 ou 48 V).","minimum":0},"potencia_carga_w":{"type":"number","description":"Potência total dos aparelhos ligados, em watts (W).","minimum":0},"eficiencia_inversor":{"type":"number","description":"Eficiência do inversor (perdas na conversão). Inversores típicos ~80–90%.","minimum":1,"maximum":100},"profundidade_descarga":{"type":"number","description":"Quanto da bateria pode ser descarregado sem danificá-la. Chumbo-ácido ~50%; lítio ~80–100%.","minimum":1,"maximum":100}},"required":["capacidade_ah","tensao_v","potencia_carga_w","eficiencia_inversor","profundidade_descarga"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"autonomia-bateria"},"inputs":{"type":"object","properties":{"capacidade_ah":{"type":"number","description":"Capacidade da bateria em ampère-hora (Ah). Veja na etiqueta da bateria.","minimum":0},"tensao_v":{"type":"number","description":"Tensão nominal da bateria em volts (12, 24 ou 48 V).","minimum":0},"potencia_carga_w":{"type":"number","description":"Potência total dos aparelhos ligados, em watts (W).","minimum":0},"eficiencia_inversor":{"type":"number","description":"Eficiência do inversor (perdas na conversão). Inversores típicos ~80–90%.","minimum":1,"maximum":100},"profundidade_descarga":{"type":"number","description":"Quanto da bateria pode ser descarregado sem danificá-la. Chumbo-ácido ~50%; lítio ~80–100%.","minimum":1,"maximum":100}},"required":["capacidade_ah","tensao_v","potencia_carga_w","eficiencia_inversor","profundidade_descarga"],"additionalProperties":false},"outputs":{"type":"object","properties":{"autonomia_horas":{"type":"number","title":"Autonomia","description":"Unidade: h"},"autonomia_minutos":{"type":"number","title":"Autonomia em minutos","description":"Unidade: min"},"energia_util_wh":{"type":"number","title":"Energia útil disponível","description":"Unidade: un"}},"required":["autonomia_horas","autonomia_minutos","energia_util_wh"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/bebe-nascimento":{"post":{"summary":"Calculadora de Data do Parto (DPP e janela de termo)","description":"Descubra a data provável do nascimento (DPP) e a janela de parto a termo (37 a 42 semanas) pela DUM ou pela data da concepção.","operationId":"calc_bebe_nascimento","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"metodo":{"type":"string","enum":["dum","concepcao"],"description":"Escolha por qual data você quer calcular: a última menstruação ou o dia da concepção."},"data_inicial":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A DUM (1º dia da última menstruação) ou a data da concepção, conforme o método escolhido."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data de referência (hoje), usada para contar as semanas de gestação. A página preenche sozinha."}},"required":["metodo","data_inicial","data_referencia"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"bebe-nascimento"},"inputs":{"type":"object","properties":{"metodo":{"type":"string","enum":["dum","concepcao"],"description":"Escolha por qual data você quer calcular: a última menstruação ou o dia da concepção."},"data_inicial":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A DUM (1º dia da última menstruação) ou a data da concepção, conforme o método escolhido."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data de referência (hoje), usada para contar as semanas de gestação. A página preenche sozinha."}},"required":["metodo","data_inicial","data_referencia"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dpp_offset_dias":{"type":"number","title":"Dias até a DPP","description":"Unidade: dias"},"termo_min_offset_dias":{"type":"number","title":"Início do termo (37 sem)","description":"Unidade: dias"},"termo_max_offset_dias":{"type":"number","title":"Fim do termo (42 sem)","description":"Unidade: dias"},"semanas_atuais":{"type":"number","title":"Semanas de gestação","description":"Unidade: un"},"semanas_restantes":{"type":"number","title":"Semanas até a DPP","description":"Unidade: un"},"dias_gestacao":{"type":"number","title":"Dias de gestação","description":"Unidade: dias"}},"required":["dpp_offset_dias","termo_min_offset_dias","termo_max_offset_dias","semanas_atuais","semanas_restantes","dias_gestacao"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/cacamba-entulho":{"post":{"summary":"Calculadora de Caçambas de Entulho","description":"Calcule quantas caçambas de 3 m³ são necessárias para remover seu entulho, já considerando o empolamento do material.","operationId":"calc_cacamba_entulho","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"volume_entulho_m3":{"type":"number","description":"Volume estimado do entulho no estado original, antes de ser removido.","minimum":0},"capacidade_cacamba_m3":{"type":"number","description":"Volume da caçamba que você vai contratar.","minimum":0.5}},"required":["volume_entulho_m3","capacidade_cacamba_m3"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"cacamba-entulho"},"inputs":{"type":"object","properties":{"volume_entulho_m3":{"type":"number","description":"Volume estimado do entulho no estado original, antes de ser removido.","minimum":0},"capacidade_cacamba_m3":{"type":"number","description":"Volume da caçamba que você vai contratar.","minimum":0.5}},"required":["volume_entulho_m3","capacidade_cacamba_m3"],"additionalProperties":false},"outputs":{"type":"object","properties":{"cacambas":{"type":"number","title":"Caçambas necessárias","description":"Unidade: caçambas"},"volume_empolado_m3":{"type":"number","title":"Volume empolado","description":"Unidade: m³"}},"required":["cacambas","volume_empolado_m3"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/caixa-dagua-ideal-por-morador":{"post":{"summary":"Calculadora de Caixa d'Água Ideal","description":"Dimensione a caixa d'água pelo número de moradores e dias de reserva, com o consumo por pessoa por dia.","operationId":"calc_caixa_dagua_ideal_por_morador","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"moradores":{"type":"integer","description":"Quantas pessoas moram na casa.","minimum":1},"consumo_l_pessoa_dia":{"type":"number","description":"Litros de água por pessoa por dia. A média residencial é cerca de 150 L.","minimum":0},"dias_reserva":{"type":"number","description":"Quantos dias de autonomia você quer ter se faltar água na rua.","minimum":0}},"required":["moradores","consumo_l_pessoa_dia","dias_reserva"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"caixa-dagua-ideal-por-morador"},"inputs":{"type":"object","properties":{"moradores":{"type":"integer","description":"Quantas pessoas moram na casa.","minimum":1},"consumo_l_pessoa_dia":{"type":"number","description":"Litros de água por pessoa por dia. A média residencial é cerca de 150 L.","minimum":0},"dias_reserva":{"type":"number","description":"Quantos dias de autonomia você quer ter se faltar água na rua.","minimum":0}},"required":["moradores","consumo_l_pessoa_dia","dias_reserva"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume_necessario_l":{"type":"number","title":"Reserva necessária","description":"Unidade: L"},"caixa_comercial_l":{"type":"number","title":"Caixa comercial sugerida","description":"Unidade: L"},"consumo_diario_l":{"type":"number","title":"Consumo da casa por dia","description":"Unidade: L"}},"required":["volume_necessario_l","caixa_comercial_l","consumo_diario_l"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calagem-correcao-de-solo":{"post":{"summary":"Calculadora de Calagem (Correção de Solo)","description":"Calcule quantos quilos e sacos de calcário aplicar numa área a partir da dose recomendada em toneladas por hectare.","operationId":"calc_calagem_correcao_de_solo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área de solo a ser corrigida, em metros quadrados.","minimum":0},"dose_ton_ha":{"type":"number","description":"Dose recomendada de calcário em toneladas por hectare.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso de cada saco de calcário, em quilos.","minimum":1}},"required":["area_m2","dose_ton_ha","peso_saco_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calagem-correcao-de-solo"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área de solo a ser corrigida, em metros quadrados.","minimum":0},"dose_ton_ha":{"type":"number","description":"Dose recomendada de calcário em toneladas por hectare.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso de cada saco de calcário, em quilos.","minimum":1}},"required":["area_m2","dose_ton_ha","peso_saco_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"calcario_kg":{"type":"number","title":"Calcário necessário","description":"Unidade: kg"},"sacos":{"type":"number","title":"Sacos a comprar","description":"Unidade: sacos"}},"required":["calcario_kg","sacos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-cac":{"post":{"summary":"Calculadora de CAC (Custo de Aquisição de Cliente)","description":"Calcule o CAC dividindo o investimento total em marketing e vendas pelo número de novos clientes.","operationId":"calc_calculadora_cac","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investimento_brl":{"type":"number","description":"Gasto total em marketing e vendas no período (mídia, equipe, ferramentas), em reais.","minimum":0},"novos_clientes":{"type":"integer","description":"Quantidade de clientes novos conquistados no mesmo período.","minimum":0}},"required":["investimento_brl","novos_clientes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-cac"},"inputs":{"type":"object","properties":{"investimento_brl":{"type":"number","description":"Gasto total em marketing e vendas no período (mídia, equipe, ferramentas), em reais.","minimum":0},"novos_clientes":{"type":"integer","description":"Quantidade de clientes novos conquistados no mesmo período.","minimum":0}},"required":["investimento_brl","novos_clientes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"cac_brl":{"type":"number","title":"CAC (custo por cliente)","description":"Unidade: R$"}},"required":["cac_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-cpc":{"post":{"summary":"Calculadora de CPC (Custo por Clique)","description":"Calcule o custo por clique dividindo o investimento total da campanha pelo número de cliques.","operationId":"calc_calculadora_cpc","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investimento_brl":{"type":"number","description":"Valor total investido na campanha, em reais.","minimum":0},"cliques":{"type":"integer","description":"Número total de cliques recebidos no mesmo período.","minimum":0}},"required":["investimento_brl","cliques"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-cpc"},"inputs":{"type":"object","properties":{"investimento_brl":{"type":"number","description":"Valor total investido na campanha, em reais.","minimum":0},"cliques":{"type":"integer","description":"Número total de cliques recebidos no mesmo período.","minimum":0}},"required":["investimento_brl","cliques"],"additionalProperties":false},"outputs":{"type":"object","properties":{"cpc_brl":{"type":"number","title":"Custo por clique","description":"Unidade: R$"}},"required":["cpc_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-cpm":{"post":{"summary":"Calculadora de CPM (Custo por Mil Impressões)","description":"Calcule o CPM dividindo o valor investido pelo número de impressões e multiplicando por mil.","operationId":"calc_calculadora_cpm","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investimento_brl":{"type":"number","description":"Valor total investido na campanha, em reais.","minimum":0},"impressoes":{"type":"integer","description":"Número total de impressões (vezes que o anúncio foi exibido).","minimum":0}},"required":["investimento_brl","impressoes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-cpm"},"inputs":{"type":"object","properties":{"investimento_brl":{"type":"number","description":"Valor total investido na campanha, em reais.","minimum":0},"impressoes":{"type":"integer","description":"Número total de impressões (vezes que o anúncio foi exibido).","minimum":0}},"required":["investimento_brl","impressoes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"cpm_brl":{"type":"number","title":"CPM","description":"Unidade: R$"}},"required":["cpm_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-ctr":{"post":{"summary":"Calculadora de CTR (Taxa de Cliques)","description":"Calcule o CTR dividindo o número de cliques pelo número de impressões do anúncio e multiplicando por 100.","operationId":"calc_calculadora_ctr","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cliques":{"type":"integer","description":"Número de cliques recebidos pelo anúncio.","minimum":0},"impressoes":{"type":"integer","description":"Número de vezes que o anúncio foi exibido.","minimum":0}},"required":["cliques","impressoes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-ctr"},"inputs":{"type":"object","properties":{"cliques":{"type":"integer","description":"Número de cliques recebidos pelo anúncio.","minimum":0},"impressoes":{"type":"integer","description":"Número de vezes que o anúncio foi exibido.","minimum":0}},"required":["cliques","impressoes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"ctr_percent":{"type":"number","title":"CTR","description":"Unidade: %"}},"required":["ctr_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-de-churrasco":{"post":{"summary":"Calculadora de Churrasco","description":"Calcule quanto de carne, bebida, gelo, carvão e pão de alho comprar para o churrasco pelo número de convidados.","operationId":"calc_calculadora_de_churrasco","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adultos":{"type":"integer","description":"Quantos adultos vão ao churrasco.","minimum":0},"criancas":{"type":"integer","description":"Quantas crianças vão. Comem cerca de metade de um adulto.","minimum":0},"bebem":{"type":"integer","description":"Quantas pessoas vão beber cerveja ou destilado. As demais contam para o refrigerante.","minimum":0},"g_carne_adulto":{"type":"number","description":"Gramas de carne por adulto. Use 500 g para um público mais faminto.","minimum":0},"folga_percent":{"type":"number","description":"Acréscimo de segurança sobre a carne, para não faltar.","minimum":0},"bebida_alcoolica_l_por_bebedor":{"type":"number","description":"Litros de álcool por pessoa que bebe. Cerveja ~1,2 L; destilado consome bem menos.","minimum":0},"refri_l_por_pessoa":{"type":"number","description":"Litros de refrigerante/suco por criança e por adulto que não bebe álcool.","minimum":0},"carvao_por_kg_carne":{"type":"number","description":"Quilos de carvão por quilo de carne. A regra de ouro é ~1 kg de carvão por kg de carne (1 a 1,5 kg em churrasqueiras grandes ou cortes de cocção lenta).","minimum":0},"gelo_kg_pessoa":{"type":"number","description":"Quilos de gelo por pessoa presente.","minimum":0}},"required":["adultos","criancas","bebem","g_carne_adulto","folga_percent","bebida_alcoolica_l_por_bebedor","refri_l_por_pessoa","carvao_por_kg_carne","gelo_kg_pessoa"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-de-churrasco"},"inputs":{"type":"object","properties":{"adultos":{"type":"integer","description":"Quantos adultos vão ao churrasco.","minimum":0},"criancas":{"type":"integer","description":"Quantas crianças vão. Comem cerca de metade de um adulto.","minimum":0},"bebem":{"type":"integer","description":"Quantas pessoas vão beber cerveja ou destilado. As demais contam para o refrigerante.","minimum":0},"g_carne_adulto":{"type":"number","description":"Gramas de carne por adulto. Use 500 g para um público mais faminto.","minimum":0},"folga_percent":{"type":"number","description":"Acréscimo de segurança sobre a carne, para não faltar.","minimum":0},"bebida_alcoolica_l_por_bebedor":{"type":"number","description":"Litros de álcool por pessoa que bebe. Cerveja ~1,2 L; destilado consome bem menos.","minimum":0},"refri_l_por_pessoa":{"type":"number","description":"Litros de refrigerante/suco por criança e por adulto que não bebe álcool.","minimum":0},"carvao_por_kg_carne":{"type":"number","description":"Quilos de carvão por quilo de carne. A regra de ouro é ~1 kg de carvão por kg de carne (1 a 1,5 kg em churrasqueiras grandes ou cortes de cocção lenta).","minimum":0},"gelo_kg_pessoa":{"type":"number","description":"Quilos de gelo por pessoa presente.","minimum":0}},"required":["adultos","criancas","bebem","g_carne_adulto","folga_percent","bebida_alcoolica_l_por_bebedor","refri_l_por_pessoa","carvao_por_kg_carne","gelo_kg_pessoa"],"additionalProperties":false},"outputs":{"type":"object","properties":{"carne_kg":{"type":"number","title":"Carne total","description":"Unidade: kg"},"bebida_alcoolica_l":{"type":"number","title":"Cerveja / destilados","description":"Unidade: L"},"refrigerante_l":{"type":"number","title":"Refrigerante / suco","description":"Unidade: L"},"carvao_kg":{"type":"number","title":"Carvão","description":"Unidade: kg"},"gelo_kg":{"type":"number","title":"Gelo","description":"Unidade: kg"},"paes_alho":{"type":"number","title":"Pães de alho","description":"Unidade: un"}},"required":["carne_kg","bebida_alcoolica_l","refrigerante_l","carvao_kg","gelo_kg","paes_alho"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-ltv-cliente":{"post":{"summary":"Calculadora de LTV (Valor do Tempo de Vida do Cliente)","description":"Estime o LTV a partir do ticket médio, da frequência de compra e do tempo de retenção do cliente, com a relação LTV/CAC.","operationId":"calc_calculadora_ltv_cliente","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticket_medio_brl":{"type":"number","description":"Valor médio de cada compra do cliente, em reais.","minimum":0},"compras_por_mes":{"type":"number","description":"Quantas vezes, em média, o cliente compra por mês.","minimum":0},"meses_retencao":{"type":"number","description":"Por quantos meses, em média, o cliente continua comprando.","minimum":0},"margem_percent":{"type":"number","description":"Margem de contribuição sobre a receita — use a margem, não a receita bruta.","minimum":0,"maximum":100},"cac_brl":{"type":"number","description":"Custo de aquisição de cliente, para a relação LTV/CAC. Deixe 0 para ignorar.","minimum":0}},"required":["ticket_medio_brl","compras_por_mes","meses_retencao","margem_percent","cac_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-ltv-cliente"},"inputs":{"type":"object","properties":{"ticket_medio_brl":{"type":"number","description":"Valor médio de cada compra do cliente, em reais.","minimum":0},"compras_por_mes":{"type":"number","description":"Quantas vezes, em média, o cliente compra por mês.","minimum":0},"meses_retencao":{"type":"number","description":"Por quantos meses, em média, o cliente continua comprando.","minimum":0},"margem_percent":{"type":"number","description":"Margem de contribuição sobre a receita — use a margem, não a receita bruta.","minimum":0,"maximum":100},"cac_brl":{"type":"number","description":"Custo de aquisição de cliente, para a relação LTV/CAC. Deixe 0 para ignorar.","minimum":0}},"required":["ticket_medio_brl","compras_por_mes","meses_retencao","margem_percent","cac_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"ltv_brl":{"type":"number","title":"LTV (receita)","description":"Unidade: R$"},"ltv_margem_brl":{"type":"number","title":"LTV em margem","description":"Unidade: R$"},"ltv_cac_ratio":{"type":"number","title":"Relação LTV/CAC","description":"Unidade: x"}},"required":["ltv_brl","ltv_margem_brl","ltv_cac_ratio"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-roas":{"post":{"summary":"Calculadora de ROAS (Retorno sobre Investimento em Anúncios)","description":"Calcule o ROAS dividindo a receita gerada pela campanha pelo valor investido em anúncios.","operationId":"calc_calculadora_roas","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"receita_brl":{"type":"number","description":"Receita total gerada pela campanha de anúncios, em reais.","minimum":0},"investimento_brl":{"type":"number","description":"Quanto você gastou em mídia/anúncios no período, em reais.","minimum":0}},"required":["receita_brl","investimento_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-roas"},"inputs":{"type":"object","properties":{"receita_brl":{"type":"number","description":"Receita total gerada pela campanha de anúncios, em reais.","minimum":0},"investimento_brl":{"type":"number","description":"Quanto você gastou em mídia/anúncios no período, em reais.","minimum":0}},"required":["receita_brl","investimento_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"roas":{"type":"number","title":"ROAS","description":"Unidade: x"},"roas_percent":{"type":"number","title":"ROAS em %","description":"Unidade: %"},"retorno_liquido_brl":{"type":"number","title":"Retorno acima do investido","description":"Unidade: R$"}},"required":["roas","roas_percent","retorno_liquido_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calculadora-ticket-medio":{"post":{"summary":"Calculadora de Ticket Médio","description":"Calcule o ticket médio dividindo o faturamento total pelo número de pedidos ou vendas no período.","operationId":"calc_calculadora_ticket_medio","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"faturamento_brl":{"type":"number","description":"Receita total de vendas no período, em reais.","minimum":0},"numero_pedidos":{"type":"integer","description":"Quantidade de pedidos ou vendas fechadas no mesmo período.","minimum":0}},"required":["faturamento_brl","numero_pedidos"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calculadora-ticket-medio"},"inputs":{"type":"object","properties":{"faturamento_brl":{"type":"number","description":"Receita total de vendas no período, em reais.","minimum":0},"numero_pedidos":{"type":"integer","description":"Quantidade de pedidos ou vendas fechadas no mesmo período.","minimum":0}},"required":["faturamento_brl","numero_pedidos"],"additionalProperties":false},"outputs":{"type":"object","properties":{"ticket_medio_brl":{"type":"number","title":"Ticket médio","description":"Unidade: R$"}},"required":["ticket_medio_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/calorias-diarias":{"post":{"summary":"Calculadora de Calorias Diárias","description":"Descubra quantas calorias por dia você precisa para manter, perder ou ganhar peso, pela TMB de Mifflin-St Jeor e seu nível de atividade.","operationId":"calc_calorias_diarias","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 170).","minimum":0},"idade_anos":{"type":"integer","description":"Sua idade em anos completos.","minimum":0},"sexo":{"type":"string","enum":["0","1"],"description":"A equação de Mifflin usa +5 (homem) ou −161 (mulher)."},"fator_atividade":{"type":"string","enum":["0","1","2","3","4"],"description":"Quanto você se exercita na semana."}},"required":["peso_kg","altura_cm","idade_anos","sexo","fator_atividade"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"calorias-diarias"},"inputs":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 170).","minimum":0},"idade_anos":{"type":"integer","description":"Sua idade em anos completos.","minimum":0},"sexo":{"type":"string","enum":["0","1"],"description":"A equação de Mifflin usa +5 (homem) ou −161 (mulher)."},"fator_atividade":{"type":"string","enum":["0","1","2","3","4"],"description":"Quanto você se exercita na semana."}},"required":["peso_kg","altura_cm","idade_anos","sexo","fator_atividade"],"additionalProperties":false},"outputs":{"type":"object","properties":{"tmb_kcal":{"type":"number","title":"Taxa metabólica basal","description":"Unidade: kcal"},"gasto_total_kcal":{"type":"number","title":"Gasto diário (manutenção)","description":"Unidade: kcal"},"deficit_kcal":{"type":"number","title":"Para perder peso","description":"Unidade: kcal"},"superavit_kcal":{"type":"number","title":"Para ganhar peso","description":"Unidade: kcal"}},"required":["tmb_kcal","gasto_total_kcal","deficit_kcal","superavit_kcal"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/carne-leao-irpf-mensal":{"post":{"summary":"Calculadora de Carnê-Leão Mensal (IRPF 2026)","description":"Calcule o imposto mensal do carnê-leão (DARF 0190) sobre rendimentos sem retenção na fonte — autônomos, profissionais liberais e aluguel recebido de pessoa física.","operationId":"calc_carne_leao_irpf_mensal","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rendimento_mensal_brl":{"type":"number","description":"Total recebido no mês sem retenção na fonte (honorários de PF, aluguel de PF, exterior).","minimum":0},"inss_mes_brl":{"type":"number","description":"Contribuição previdenciária oficial recolhida no mês (carnê/GPS). Dedutível da base.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes — cada um abate R$ 189,59 da base de cálculo do mês.","minimum":0},"livro_caixa_brl":{"type":"number","description":"Despesas dedutíveis escrituradas no livro-caixa (aluguel do consultório, água, luz, material). Só para autônomos/profissionais liberais, com comprovante.","minimum":0}},"required":["rendimento_mensal_brl","inss_mes_brl","dependentes","livro_caixa_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"carne-leao-irpf-mensal"},"inputs":{"type":"object","properties":{"rendimento_mensal_brl":{"type":"number","description":"Total recebido no mês sem retenção na fonte (honorários de PF, aluguel de PF, exterior).","minimum":0},"inss_mes_brl":{"type":"number","description":"Contribuição previdenciária oficial recolhida no mês (carnê/GPS). Dedutível da base.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes — cada um abate R$ 189,59 da base de cálculo do mês.","minimum":0},"livro_caixa_brl":{"type":"number","description":"Despesas dedutíveis escrituradas no livro-caixa (aluguel do consultório, água, luz, material). Só para autônomos/profissionais liberais, com comprovante.","minimum":0}},"required":["rendimento_mensal_brl","inss_mes_brl","dependentes","livro_caixa_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"imposto_mensal_brl":{"type":"number","title":"Imposto do mês (carnê-leão)","description":"Unidade: R$"},"base_calculo_brl":{"type":"number","title":"Base de cálculo","description":"Unidade: R$"},"aliquota_efetiva":{"type":"number","title":"Alíquota efetiva sobre o rendimento","description":"Unidade: %"}},"required":["imposto_mensal_brl","base_calculo_brl","aliquota_efetiva"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/cerca-viva-numero-de-mudas":{"post":{"summary":"Calculadora de Cerca Viva (nº de Mudas)","description":"Calcule quantas mudas plantar em fila para formar uma cerca viva a partir do comprimento e do espaçamento entre plantas.","operationId":"calc_cerca_viva_numero_de_mudas","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Extensão total da cerca viva, em metros.","minimum":0},"espacamento_cm":{"type":"number","description":"Distância entre uma muda e outra na fila, em centímetros.","minimum":1},"fileiras":{"type":"integer","description":"1 fileira para cerca simples, 2 para uma cerca mais densa.","minimum":1}},"required":["comprimento_m","espacamento_cm","fileiras"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"cerca-viva-numero-de-mudas"},"inputs":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Extensão total da cerca viva, em metros.","minimum":0},"espacamento_cm":{"type":"number","description":"Distância entre uma muda e outra na fila, em centímetros.","minimum":1},"fileiras":{"type":"integer","description":"1 fileira para cerca simples, 2 para uma cerca mais densa.","minimum":1}},"required":["comprimento_m","espacamento_cm","fileiras"],"additionalProperties":false},"outputs":{"type":"object","properties":{"mudas":{"type":"number","title":"Mudas necessárias","description":"Unidade: mudas"},"mudas_por_fileira":{"type":"number","title":"Mudas por fileira","description":"Unidade: mudas"}},"required":["mudas","mudas_por_fileira"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ciclos-de-sono-hora-de-dormir":{"post":{"summary":"Calculadora de Ciclos de Sono (a que horas dormir ou acordar)","description":"Descubra os melhores horários para dormir ou acordar em múltiplos de ciclos de 90 minutos, já somando o tempo para pegar no sono.","operationId":"calc_ciclos_de_sono_hora_de_dormir","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"modo":{"type":"string","enum":["0","1"],"description":"Escolha se a hora de referência é a de dormir ou a de acordar."},"hora":{"type":"integer","description":"Hora (0 a 23) de dormir ou de acordar, conforme o modo escolhido.","minimum":0,"maximum":23},"minuto":{"type":"integer","description":"Minuto (0 a 59) da hora de referência.","minimum":0,"maximum":59},"latencia_min":{"type":"integer","description":"Minutos médios que você leva para adormecer depois de deitar.","minimum":0}},"required":["modo","hora","minuto","latencia_min"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ciclos-de-sono-hora-de-dormir"},"inputs":{"type":"object","properties":{"modo":{"type":"string","enum":["0","1"],"description":"Escolha se a hora de referência é a de dormir ou a de acordar."},"hora":{"type":"integer","description":"Hora (0 a 23) de dormir ou de acordar, conforme o modo escolhido.","minimum":0,"maximum":23},"minuto":{"type":"integer","description":"Minuto (0 a 59) da hora de referência.","minimum":0,"maximum":59},"latencia_min":{"type":"integer","description":"Minutos médios que você leva para adormecer depois de deitar.","minimum":0}},"required":["modo","hora","minuto","latencia_min"],"additionalProperties":false},"outputs":{"type":"object","properties":{"horas_sono_opcao_a":{"type":"number","title":"Duração opção A (6 ciclos)","description":"Unidade: h"},"hora_opcao_a":{"type":"number","title":"Hora da opção A","description":"Unidade: h"},"min_opcao_a":{"type":"number","title":"Minuto da opção A","description":"Unidade: min"},"horas_sono_opcao_b":{"type":"number","title":"Duração opção B (5 ciclos)","description":"Unidade: h"},"hora_opcao_b":{"type":"number","title":"Hora da opção B","description":"Unidade: h"},"min_opcao_b":{"type":"number","title":"Minuto da opção B","description":"Unidade: min"},"horas_sono_opcao_c":{"type":"number","title":"Duração opção C (4 ciclos)","description":"Unidade: h"},"hora_opcao_c":{"type":"number","title":"Hora da opção C","description":"Unidade: h"},"min_opcao_c":{"type":"number","title":"Minuto da opção C","description":"Unidade: min"}},"required":["horas_sono_opcao_a","hora_opcao_a","min_opcao_a","horas_sono_opcao_b","hora_opcao_b","min_opcao_b","horas_sono_opcao_c","hora_opcao_c","min_opcao_c"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/cobertura-morta-mulch":{"post":{"summary":"Calculadora de Cobertura Morta (Mulch)","description":"Calcule o volume de cobertura morta (casca, fibra de coco ou palha) e quantos sacos comprar para forrar canteiros na espessura ideal.","operationId":"calc_cobertura_morta_mulch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total dos canteiros a forrar, em metros quadrados.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura da camada de cobertura morta, em centímetros.","minimum":0},"volume_saco_litro":{"type":"number","description":"Volume de cada saco comercial de cobertura morta, em litros.","minimum":1}},"required":["area_m2","espessura_cm","volume_saco_litro"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"cobertura-morta-mulch"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total dos canteiros a forrar, em metros quadrados.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura da camada de cobertura morta, em centímetros.","minimum":0},"volume_saco_litro":{"type":"number","description":"Volume de cada saco comercial de cobertura morta, em litros.","minimum":1}},"required":["area_m2","espessura_cm","volume_saco_litro"],"additionalProperties":false},"outputs":{"type":"object","properties":{"sacos":{"type":"number","title":"Sacos a comprar","description":"Unidade: sacos"},"volume_litro":{"type":"number","title":"Volume em litros","description":"Unidade: L"},"volume_m3":{"type":"number","title":"Volume de cobertura","description":"Unidade: m³"}},"required":["sacos","volume_litro","volume_m3"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/comida-e-bebida-para-festa":{"post":{"summary":"Calculadora de Comida e Bebida para Festa","description":"Dimensione salgados, doces, bolo, refrigerante e gelo da festa pelo número de convidados e pela duração.","operationId":"calc_comida_e_bebida_para_festa","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adultos":{"type":"integer","description":"Quantos adultos vão à festa.","minimum":0},"criancas":{"type":"integer","description":"Quantas crianças vão à festa.","minimum":0},"horas_festa":{"type":"number","description":"Duração da festa em horas. Acima de 4 h aumenta a bebida.","minimum":0},"salgados_por_adulto":{"type":"number","description":"Quantidade de salgadinhos por adulto.","minimum":0},"doces_por_pessoa":{"type":"number","description":"Quantidade de docinhos por pessoa.","minimum":0},"bolo_g_por_pessoa":{"type":"number","description":"Gramas de bolo por pessoa.","minimum":0}},"required":["adultos","criancas","horas_festa","salgados_por_adulto","doces_por_pessoa","bolo_g_por_pessoa"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"comida-e-bebida-para-festa"},"inputs":{"type":"object","properties":{"adultos":{"type":"integer","description":"Quantos adultos vão à festa.","minimum":0},"criancas":{"type":"integer","description":"Quantas crianças vão à festa.","minimum":0},"horas_festa":{"type":"number","description":"Duração da festa em horas. Acima de 4 h aumenta a bebida.","minimum":0},"salgados_por_adulto":{"type":"number","description":"Quantidade de salgadinhos por adulto.","minimum":0},"doces_por_pessoa":{"type":"number","description":"Quantidade de docinhos por pessoa.","minimum":0},"bolo_g_por_pessoa":{"type":"number","description":"Gramas de bolo por pessoa.","minimum":0}},"required":["adultos","criancas","horas_festa","salgados_por_adulto","doces_por_pessoa","bolo_g_por_pessoa"],"additionalProperties":false},"outputs":{"type":"object","properties":{"salgadinhos":{"type":"number","title":"Total de salgados","description":"Unidade: un"},"doces":{"type":"number","title":"Total de docinhos","description":"Unidade: un"},"bolo_kg":{"type":"number","title":"Bolo (peso)","description":"Unidade: kg"},"refrigerante_l":{"type":"number","title":"Refrigerante / suco","description":"Unidade: L"},"gelo_kg":{"type":"number","title":"Gelo","description":"Unidade: kg"}},"required":["salgadinhos","doces","bolo_kg","refrigerante_l","gelo_kg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/concreto-volume":{"post":{"summary":"Calculadora de Concreto","description":"Calcule o volume de concreto e a quantidade de cimento, areia e brita para sua laje, piso ou base.","operationId":"calc_concreto_volume","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento da área a concretar.","minimum":0},"largura_m":{"type":"number","description":"Largura da área a concretar.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura da camada de concreto em centímetros.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso da embalagem de cimento que você vai comprar.","minimum":1}},"required":["comprimento_m","largura_m","espessura_cm","peso_saco_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"concreto-volume"},"inputs":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento da área a concretar.","minimum":0},"largura_m":{"type":"number","description":"Largura da área a concretar.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura da camada de concreto em centímetros.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso da embalagem de cimento que você vai comprar.","minimum":1}},"required":["comprimento_m","largura_m","espessura_cm","peso_saco_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume_m3":{"type":"number","title":"Volume de concreto","description":"Unidade: m³"},"cimento":{"type":"number","title":"Cimento","description":"Unidade: sacos"},"areia_m3":{"type":"number","title":"Areia","description":"Unidade: m³"},"brita_m3":{"type":"number","title":"Brita","description":"Unidade: m³"}},"required":["volume_m3","cimento","areia_m3","brita_m3"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/consumo-de-combustivel":{"post":{"summary":"Calculadora de Consumo de Combustível (km/l)","description":"Calcula o consumo médio do veículo em km/l a partir da distância percorrida e dos litros abastecidos.","operationId":"calc_consumo_de_combustivel","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"distancia_km":{"type":"number","description":"Quilômetros rodados no período ou no tanque medido.","minimum":0},"litros_abastecidos":{"type":"number","description":"Litros usados para cobrir essa distância.","minimum":0},"combustivel":{"type":"string","enum":["0","1","2"],"description":"Usado só para classificar o consumo: o etanol rende ~30% menos km/l, e diesel aqui é picape/SUV."}},"required":["distancia_km","litros_abastecidos","combustivel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"consumo-de-combustivel"},"inputs":{"type":"object","properties":{"distancia_km":{"type":"number","description":"Quilômetros rodados no período ou no tanque medido.","minimum":0},"litros_abastecidos":{"type":"number","description":"Litros usados para cobrir essa distância.","minimum":0},"combustivel":{"type":"string","enum":["0","1","2"],"description":"Usado só para classificar o consumo: o etanol rende ~30% menos km/l, e diesel aqui é picape/SUV."}},"required":["distancia_km","litros_abastecidos","combustivel"],"additionalProperties":false},"outputs":{"type":"object","properties":{"consumo_km_l":{"type":"number","title":"Consumo médio","description":"Unidade: km/L"},"litros_por_100km":{"type":"number","title":"Litros por 100 km","description":"Unidade: L"}},"required":["consumo_km_l","litros_por_100km"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/consumo-energia-kwh-reais":{"post":{"summary":"Calculadora de Consumo de Energia (kWh para Reais)","description":"Converta o consumo em kWh da conta de luz em reais a partir da tarifa da sua distribuidora.","operationId":"calc_consumo_energia_kwh_reais","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consumo_kwh":{"type":"number","description":"Consumo em kWh lido na sua conta de luz no mês.","minimum":0},"tarifa_kwh":{"type":"number","description":"Preço do kWh já com impostos. Média residencial BR 2026 ~R$0,78–0,85; edite com o da sua conta.","minimum":0},"adicional_bandeira_kwh":{"type":"number","description":"Acréscimo da bandeira tarifária por kWh. Amarela ~0,019; vermelha ~0,044–0,079; verde = 0.","minimum":0}},"required":["consumo_kwh","tarifa_kwh","adicional_bandeira_kwh"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"consumo-energia-kwh-reais"},"inputs":{"type":"object","properties":{"consumo_kwh":{"type":"number","description":"Consumo em kWh lido na sua conta de luz no mês.","minimum":0},"tarifa_kwh":{"type":"number","description":"Preço do kWh já com impostos. Média residencial BR 2026 ~R$0,78–0,85; edite com o da sua conta.","minimum":0},"adicional_bandeira_kwh":{"type":"number","description":"Acréscimo da bandeira tarifária por kWh. Amarela ~0,019; vermelha ~0,044–0,079; verde = 0.","minimum":0}},"required":["consumo_kwh","tarifa_kwh","adicional_bandeira_kwh"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_mensal":{"type":"number","title":"Custo no mês","description":"Unidade: R$"},"custo_anual":{"type":"number","title":"Projeção anual","description":"Unidade: R$"},"custo_diario":{"type":"number","title":"Custo por dia","description":"Unidade: R$"},"consumo_diario_kwh":{"type":"number","title":"Consumo por dia","description":"Unidade: kWh"}},"required":["custo_mensal","custo_anual","custo_diario","consumo_diario_kwh"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/contagem-regressiva-dias":{"post":{"summary":"Calculadora de Contagem Regressiva (dias até uma data)","description":"Conte quantos dias, semanas e meses faltam até uma data futura — Natal, aniversário, férias ou a prova.","operationId":"calc_contagem_regressiva_dias","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_alvo":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A data futura para a qual você está contando (AAAA-MM-DD)."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data de hoje, usada como ponto de partida da contagem. A página preenche sozinha."}},"required":["data_alvo","data_referencia"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"contagem-regressiva-dias"},"inputs":{"type":"object","properties":{"data_alvo":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A data futura para a qual você está contando (AAAA-MM-DD)."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data de hoje, usada como ponto de partida da contagem. A página preenche sozinha."}},"required":["data_alvo","data_referencia"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dias_restantes":{"type":"number","title":"Dias restantes","description":"Unidade: dias"},"semanas_restantes":{"type":"number","title":"Semanas restantes","description":"Unidade: un"},"meses_restantes":{"type":"number","title":"Meses restantes","description":"Unidade: meses"},"passou_codigo":{"type":"integer","title":"Já passou?","enum":[0,1],"description":"0 = Não; 1 = Sim","x-enumLabels":{"0":"Não","1":"Sim"}}},"required":["dias_restantes","semanas_restantes","meses_restantes","passou_codigo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/contrapiso":{"post":{"summary":"Calculadora de Contrapiso","description":"Calcule o volume de argamassa de contrapiso e os sacos de cimento e a areia necessários a partir da área e da espessura.","operationId":"calc_contrapiso","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total a ser regularizada com contrapiso.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura média da camada de contrapiso (geralmente entre 3 e 5 cm).","minimum":0},"peso_saco_cimento_kg":{"type":"number","description":"Peso da embalagem de cimento que você vai comprar.","minimum":1}},"required":["area_m2","espessura_cm","peso_saco_cimento_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"contrapiso"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total a ser regularizada com contrapiso.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura média da camada de contrapiso (geralmente entre 3 e 5 cm).","minimum":0},"peso_saco_cimento_kg":{"type":"number","description":"Peso da embalagem de cimento que você vai comprar.","minimum":1}},"required":["area_m2","espessura_cm","peso_saco_cimento_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume_m3":{"type":"number","title":"Volume de argamassa","description":"Unidade: m³"},"cimento":{"type":"number","title":"Cimento","description":"Unidade: sacos"},"areia_m3":{"type":"number","title":"Areia","description":"Unidade: m³"}},"required":["volume_m3","cimento","areia_m3"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversao-taxa-juros":{"post":{"summary":"Conversor de Taxa de Juros (Mensal x Anual)","description":"Converta uma taxa de juros entre mensal e anual usando juros compostos (taxa equivalente).","operationId":"calc_conversao_taxa_juros","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taxa":{"type":"number","description":"A taxa que você tem em mãos, em porcentagem.","minimum":0},"direcao":{"type":"string","enum":["0","1"],"description":"Escolha se a taxa informada é mensal (para virar anual) ou anual (para virar mensal)."}},"required":["taxa","direcao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversao-taxa-juros"},"inputs":{"type":"object","properties":{"taxa":{"type":"number","description":"A taxa que você tem em mãos, em porcentagem.","minimum":0},"direcao":{"type":"string","enum":["0","1"],"description":"Escolha se a taxa informada é mensal (para virar anual) ou anual (para virar mensal)."}},"required":["taxa","direcao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"taxa_convertida":{"type":"number","title":"Taxa equivalente","description":"Unidade: %"}},"required":["taxa_convertida"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-area":{"post":{"summary":"Conversor de Área (m², ha, km², cm², alqueire, acre, tarefa)","description":"Converte áreas entre metro quadrado, hectare, km², cm², alqueire (paulista/mineiro/baiano), acre, tarefa e outras unidades agrárias do Brasil em qualquer direção.","operationId":"calc_conversor_de_area","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de área que você quer converter.","minimum":0},"de":{"type":"string","enum":["m2","ha","km2","cm2","alqueire_paulista","acre","alqueire_mineiro","alqueirao","tarefa_baiana","tarefa_cearense","tarefa_al_se","quarta","braca_quadrada"],"description":"Unidade em que a área está hoje. Alqueire e tarefa variam por região — escolha a sua."},"para":{"type":"string","enum":["m2","ha","km2","cm2","alqueire_paulista","acre","alqueire_mineiro","alqueirao","tarefa_baiana","tarefa_cearense","tarefa_al_se","quarta","braca_quadrada"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-area"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de área que você quer converter.","minimum":0},"de":{"type":"string","enum":["m2","ha","km2","cm2","alqueire_paulista","acre","alqueire_mineiro","alqueirao","tarefa_baiana","tarefa_cearense","tarefa_al_se","quarta","braca_quadrada"],"description":"Unidade em que a área está hoje. Alqueire e tarefa variam por região — escolha a sua."},"para":{"type":"string","enum":["m2","ha","km2","cm2","alqueire_paulista","acre","alqueire_mineiro","alqueirao","tarefa_baiana","tarefa_cearense","tarefa_al_se","quarta","braca_quadrada"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Área convertida","description":"Unidade: m²"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-armazenamento-digital":{"post":{"summary":"Conversor de Bytes (KB, MB, GB, TB)","description":"Converte tamanho de dados entre bytes, KB, MB, GB e TB, escolhendo base 1024 (binária) ou 1000 (decimal).","operationId":"calc_conversor_de_armazenamento_digital","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Quantidade de dados que você quer converter.","minimum":0},"de":{"type":"string","enum":["b","kb","mb","gb","tb"],"description":"Unidade em que o tamanho está hoje."},"para":{"type":"string","enum":["b","kb","mb","gb","tb"],"description":"Unidade para a qual você quer converter."},"base":{"type":"string","enum":["0","1"],"description":"1024 = como o sistema conta (binária); 1000 = como o fabricante anuncia (decimal). Por isso GB(1000) ≠ GiB(1024)."}},"required":["valor","de","para","base"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-armazenamento-digital"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Quantidade de dados que você quer converter.","minimum":0},"de":{"type":"string","enum":["b","kb","mb","gb","tb"],"description":"Unidade em que o tamanho está hoje."},"para":{"type":"string","enum":["b","kb","mb","gb","tb"],"description":"Unidade para a qual você quer converter."},"base":{"type":"string","enum":["0","1"],"description":"1024 = como o sistema conta (binária); 1000 = como o fabricante anuncia (decimal). Por isso GB(1000) ≠ GiB(1024)."}},"required":["valor","de","para","base"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Valor convertido","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-comprimento":{"post":{"summary":"Conversor de Comprimento","description":"Converte comprimentos entre metro, centímetro, milímetro, quilômetro, polegada, pé, jarda e milha em qualquer direção.","operationId":"calc_conversor_de_comprimento","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de comprimento que você quer converter.","minimum":0},"de":{"type":"string","enum":["m","cm","mm","km","pol","pe","jarda","milha"],"description":"Unidade em que o comprimento está hoje."},"para":{"type":"string","enum":["m","cm","mm","km","pol","pe","jarda","milha"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-comprimento"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de comprimento que você quer converter.","minimum":0},"de":{"type":"string","enum":["m","cm","mm","km","pol","pe","jarda","milha"],"description":"Unidade em que o comprimento está hoje."},"para":{"type":"string","enum":["m","cm","mm","km","pol","pe","jarda","milha"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Comprimento convertido","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-escala":{"post":{"summary":"Conversor de Escala 1:100 (mapa e maquete)","description":"Converte a medida real em medida no desenho (e vice-versa) pela escala; o resultado sai na mesma unidade informada.","operationId":"calc_conversor_de_escala","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"escala_denominador":{"type":"number","description":"O número depois do 'dois pontos': 100 para 1:100, 50 para 1:50. Deve ser maior que zero.","minimum":1},"medida":{"type":"number","description":"Medida a converter, em qualquer unidade. O resultado sai na mesma unidade.","minimum":0},"sentido":{"type":"string","enum":["desenho_para_real","real_para_desenho"],"description":"Do desenho para o real (multiplica pela escala) ou do real para o desenho (divide)."}},"required":["escala_denominador","medida","sentido"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-escala"},"inputs":{"type":"object","properties":{"escala_denominador":{"type":"number","description":"O número depois do 'dois pontos': 100 para 1:100, 50 para 1:50. Deve ser maior que zero.","minimum":1},"medida":{"type":"number","description":"Medida a converter, em qualquer unidade. O resultado sai na mesma unidade.","minimum":0},"sentido":{"type":"string","enum":["desenho_para_real","real_para_desenho"],"description":"Do desenho para o real (multiplica pela escala) ou do real para o desenho (divide)."}},"required":["escala_denominador","medida","sentido"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Medida convertida"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-massa":{"post":{"summary":"Conversor de Massa (kg, g, ton, mg, libra, onça)","description":"Converte massa entre quilograma, grama, tonelada, miligrama, libra e onça em qualquer direção.","operationId":"calc_conversor_de_massa","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de massa que você quer converter.","minimum":0},"de":{"type":"string","enum":["kg","g","ton","mg","lb","oz"],"description":"Unidade em que a massa está hoje."},"para":{"type":"string","enum":["kg","g","ton","mg","lb","oz"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-massa"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de massa que você quer converter.","minimum":0},"de":{"type":"string","enum":["kg","g","ton","mg","lb","oz"],"description":"Unidade em que a massa está hoje."},"para":{"type":"string","enum":["kg","g","ton","mg","lb","oz"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Massa convertida","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-potencia-cv-hp-kw":{"post":{"summary":"Conversor de Potência (cv, hp, kW, W)","description":"Converte potência entre cavalo-vapor (cv métrico), horsepower (hp), quilowatt e watt — útil para motores.","operationId":"calc_conversor_de_potencia_cv_hp_kw","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de potência que você quer converter.","minimum":0},"de":{"type":"string","enum":["cv","hp","kw","w"],"description":"Unidade em que a potência está hoje."},"para":{"type":"string","enum":["cv","hp","kw","w"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-potencia-cv-hp-kw"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de potência que você quer converter.","minimum":0},"de":{"type":"string","enum":["cv","hp","kw","w"],"description":"Unidade em que a potência está hoje."},"para":{"type":"string","enum":["cv","hp","kw","w"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Potência convertida","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-pressao":{"post":{"summary":"Conversor de Pressão (bar, psi, atm, kPa, mmHg)","description":"Converte pressão entre bar, psi, atm, kPa e mmHg — útil para calibragem de pneus (psi ↔ bar) e equipamentos.","operationId":"calc_conversor_de_pressao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de pressão que você quer converter.","minimum":0},"de":{"type":"string","enum":["bar","psi","atm","kpa","mmhg"],"description":"Unidade em que a pressão está hoje."},"para":{"type":"string","enum":["bar","psi","atm","kpa","mmhg"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-pressao"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de pressão que você quer converter.","minimum":0},"de":{"type":"string","enum":["bar","psi","atm","kpa","mmhg"],"description":"Unidade em que a pressão está hoje."},"para":{"type":"string","enum":["bar","psi","atm","kpa","mmhg"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Pressão convertida","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-temperatura":{"post":{"summary":"Conversor de Temperatura (°C, °F, K)","description":"Converte temperaturas entre Celsius, Fahrenheit e Kelvin em qualquer direção, com as fórmulas oficiais.","operationId":"calc_conversor_de_temperatura","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de temperatura que você quer converter (pode ser negativo)."},"de":{"type":"string","enum":["celsius","fahrenheit","kelvin"],"description":"Unidade em que a temperatura está hoje."},"para":{"type":"string","enum":["celsius","fahrenheit","kelvin"],"description":"Unidade para a qual você quer converter. Se for igual à origem, o valor não muda."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-temperatura"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de temperatura que você quer converter (pode ser negativo)."},"de":{"type":"string","enum":["celsius","fahrenheit","kelvin"],"description":"Unidade em que a temperatura está hoje."},"para":{"type":"string","enum":["celsius","fahrenheit","kelvin"],"description":"Unidade para a qual você quer converter. Se for igual à origem, o valor não muda."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Temperatura convertida","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-velocidade":{"post":{"summary":"Conversor de Velocidade","description":"Converte velocidade entre km/h, m/s, mph e nós em qualquer direção, usando fatores fixos.","operationId":"calc_conversor_de_velocidade","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de velocidade que você quer converter.","minimum":0},"de":{"type":"string","enum":["kmh","ms","mph","no"],"description":"Unidade em que a velocidade está hoje."},"para":{"type":"string","enum":["kmh","ms","mph","no"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-velocidade"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de velocidade que você quer converter.","minimum":0},"de":{"type":"string","enum":["kmh","ms","mph","no"],"description":"Unidade em que a velocidade está hoje."},"para":{"type":"string","enum":["kmh","ms","mph","no"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Velocidade convertida","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/conversor-de-volume-liquido":{"post":{"summary":"Conversor de Volume e Litros (L, mL, m³, cm³, galão)","description":"Converte volume entre litro, mililitro, m³, cm³ e galão americano em qualquer direção, incluindo litros ↔ m³.","operationId":"calc_conversor_de_volume_liquido","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de volume que você quer converter.","minimum":0},"de":{"type":"string","enum":["litro","mililitro","metro_cubico","centimetro_cubico","galao_us"],"description":"Unidade em que o volume está hoje."},"para":{"type":"string","enum":["litro","mililitro","metro_cubico","centimetro_cubico","galao_us"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"conversor-de-volume-liquido"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Valor de volume que você quer converter.","minimum":0},"de":{"type":"string","enum":["litro","mililitro","metro_cubico","centimetro_cubico","galao_us"],"description":"Unidade em que o volume está hoje."},"para":{"type":"string","enum":["litro","mililitro","metro_cubico","centimetro_cubico","galao_us"],"description":"Unidade para a qual você quer converter."}},"required":["valor","de","para"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Volume convertido","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-de-obra-por-m2":{"post":{"summary":"Calculadora de Custo de Obra por m² (CUB)","description":"Estime o custo total da obra a partir da área construída e do custo por m² (CUB), com um acréscimo por padrão de acabamento.","operationId":"calc_custo_de_obra_por_m2","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_construida_m2":{"type":"number","description":"Área total a construir, em metros quadrados.","minimum":0},"custo_m2_brl":{"type":"number","description":"Custo de referência por m² (base CUB R-8).","minimum":0},"fator_acabamento_percent":{"type":"number","description":"Percentual a somar por padrão de acabamento mais alto.","minimum":0}},"required":["area_construida_m2","custo_m2_brl","fator_acabamento_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-de-obra-por-m2"},"inputs":{"type":"object","properties":{"area_construida_m2":{"type":"number","description":"Área total a construir, em metros quadrados.","minimum":0},"custo_m2_brl":{"type":"number","description":"Custo de referência por m² (base CUB R-8).","minimum":0},"fator_acabamento_percent":{"type":"number","description":"Percentual a somar por padrão de acabamento mais alto.","minimum":0}},"required":["area_construida_m2","custo_m2_brl","fator_acabamento_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_total_brl":{"type":"number","title":"Custo total da obra","description":"Unidade: R$"},"custo_m2_final_brl":{"type":"number","title":"Custo por m² ajustado","description":"Unidade: R$"},"custo_acabamento_brl":{"type":"number","title":"Acréscimo de acabamento","description":"Unidade: R$"}},"required":["custo_total_brl","custo_m2_final_brl","custo_acabamento_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-de-viagem-de-carro":{"post":{"summary":"Custo de Viagem de Carro (combustível + pedágio)","description":"Estima o gasto total de uma viagem somando combustível e pedágios, com rateio por pessoa.","operationId":"calc_custo_de_viagem_de_carro","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"distancia_km":{"type":"number","description":"Distância total. Some ida e volta se quiser o trajeto completo.","minimum":0},"consumo_km_l":{"type":"number","description":"Consumo médio do carro em km/l.","minimum":0},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível.","minimum":0},"pedagios_brl":{"type":"number","description":"Soma de todos os pedágios da rota.","minimum":0},"pessoas":{"type":"integer","description":"Pessoas para ratear o custo.","minimum":1}},"required":["distancia_km","consumo_km_l","preco_combustivel_brl","pedagios_brl","pessoas"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-de-viagem-de-carro"},"inputs":{"type":"object","properties":{"distancia_km":{"type":"number","description":"Distância total. Some ida e volta se quiser o trajeto completo.","minimum":0},"consumo_km_l":{"type":"number","description":"Consumo médio do carro em km/l.","minimum":0},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível.","minimum":0},"pedagios_brl":{"type":"number","description":"Soma de todos os pedágios da rota.","minimum":0},"pessoas":{"type":"integer","description":"Pessoas para ratear o custo.","minimum":1}},"required":["distancia_km","consumo_km_l","preco_combustivel_brl","pedagios_brl","pessoas"],"additionalProperties":false},"outputs":{"type":"object","properties":{"litros_necessarios":{"type":"number","title":"Litros estimados","description":"Unidade: L"},"custo_total_brl":{"type":"number","title":"Custo total","description":"Unidade: R$"},"custo_por_pessoa_brl":{"type":"number","title":"Custo por pessoa","description":"Unidade: R$"}},"required":["litros_necessarios","custo_total_brl","custo_por_pessoa_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-do-banho-agua-e-energia":{"post":{"summary":"Calculadora de Custo do Banho (água + energia)","description":"Some o custo de água e de energia do chuveiro por banho e o gasto mensal e anual, pela vazão, tempo e tarifas.","operationId":"calc_custo_do_banho_agua_e_energia","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"minutos_banho":{"type":"number","description":"Tempo de um banho, em minutos.","minimum":0},"vazao_l_min":{"type":"number","description":"Litros de água por minuto que o chuveiro libera.","minimum":0},"potencia_chuveiro_w":{"type":"number","description":"Potência do chuveiro elétrico em watts (verão menor, inverno maior).","minimum":0},"banhos_por_dia":{"type":"number","description":"Total de banhos tomados por dia em toda a casa.","minimum":0},"tarifa_agua_m3":{"type":"number","description":"Quanto você paga por m³ de água com esgoto (2026, edite com a sua).","minimum":0},"tarifa_luz_kwh":{"type":"number","description":"Quanto você paga por kWh de energia (2026, edite com a sua).","minimum":0}},"required":["minutos_banho","vazao_l_min","potencia_chuveiro_w","banhos_por_dia","tarifa_agua_m3","tarifa_luz_kwh"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-do-banho-agua-e-energia"},"inputs":{"type":"object","properties":{"minutos_banho":{"type":"number","description":"Tempo de um banho, em minutos.","minimum":0},"vazao_l_min":{"type":"number","description":"Litros de água por minuto que o chuveiro libera.","minimum":0},"potencia_chuveiro_w":{"type":"number","description":"Potência do chuveiro elétrico em watts (verão menor, inverno maior).","minimum":0},"banhos_por_dia":{"type":"number","description":"Total de banhos tomados por dia em toda a casa.","minimum":0},"tarifa_agua_m3":{"type":"number","description":"Quanto você paga por m³ de água com esgoto (2026, edite com a sua).","minimum":0},"tarifa_luz_kwh":{"type":"number","description":"Quanto você paga por kWh de energia (2026, edite com a sua).","minimum":0}},"required":["minutos_banho","vazao_l_min","potencia_chuveiro_w","banhos_por_dia","tarifa_agua_m3","tarifa_luz_kwh"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_por_banho":{"type":"number","title":"Custo de um banho","description":"Unidade: R$"},"custo_mensal":{"type":"number","title":"Gasto no mês","description":"Unidade: R$"},"custo_anual":{"type":"number","title":"Gasto no ano","description":"Unidade: R$"},"litros_por_banho":{"type":"number","title":"Água por banho","description":"Unidade: L"},"energia_kwh_banho":{"type":"number","title":"Energia por banho","description":"Unidade: kWh"}},"required":["custo_por_banho","custo_mensal","custo_anual","litros_por_banho","energia_kwh_banho"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-equipe-dia":{"post":{"summary":"Calculadora de Custo de Equipe por Dia","description":"Estime o custo total de uma equipe multiplicando o número de pessoas pelos dias de trabalho e pela diária por pessoa.","operationId":"calc_custo_equipe_dia","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pessoas":{"type":"integer","description":"Quantidade de integrantes da equipe.","minimum":1},"dias":{"type":"integer","description":"Número de dias trabalhados pela equipe.","minimum":1},"diaria_brl":{"type":"number","description":"Valor pago por pessoa por dia de trabalho.","minimum":0}},"required":["pessoas","dias","diaria_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-equipe-dia"},"inputs":{"type":"object","properties":{"pessoas":{"type":"integer","description":"Quantidade de integrantes da equipe.","minimum":1},"dias":{"type":"integer","description":"Número de dias trabalhados pela equipe.","minimum":1},"diaria_brl":{"type":"number","description":"Valor pago por pessoa por dia de trabalho.","minimum":0}},"required":["pessoas","dias","diaria_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_total":{"type":"number","title":"Custo total da equipe","description":"Unidade: R$"}},"required":["custo_total"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-estimado-de-jardim":{"post":{"summary":"Calculadora de Custo Estimado de Jardim","description":"Estime o custo total de implantar um jardim somando grama, terra vegetal, mudas e mão de obra por metro quadrado.","operationId":"calc_custo_estimado_de_jardim","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do jardim a implantar, em metros quadrados.","minimum":0},"preco_grama_m2":{"type":"number","description":"Preço da grama instalada por metro quadrado.","minimum":0},"preco_terra_m2":{"type":"number","description":"Preço da terra vegetal por metro quadrado.","minimum":0},"preco_mudas_m2":{"type":"number","description":"Preço de mudas e forração por metro quadrado.","minimum":0},"preco_mao_obra_m2":{"type":"number","description":"Preço da mão de obra de plantio por metro quadrado.","minimum":0}},"required":["area_m2","preco_grama_m2","preco_terra_m2","preco_mudas_m2","preco_mao_obra_m2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-estimado-de-jardim"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do jardim a implantar, em metros quadrados.","minimum":0},"preco_grama_m2":{"type":"number","description":"Preço da grama instalada por metro quadrado.","minimum":0},"preco_terra_m2":{"type":"number","description":"Preço da terra vegetal por metro quadrado.","minimum":0},"preco_mudas_m2":{"type":"number","description":"Preço de mudas e forração por metro quadrado.","minimum":0},"preco_mao_obra_m2":{"type":"number","description":"Preço da mão de obra de plantio por metro quadrado.","minimum":0}},"required":["area_m2","preco_grama_m2","preco_terra_m2","preco_mudas_m2","preco_mao_obra_m2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_total":{"type":"number","title":"Custo total estimado","description":"Unidade: R$"},"custo_por_m2":{"type":"number","title":"Custo por m²","description":"Unidade: R$"}},"required":["custo_total","custo_por_m2"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-funcionario-clt":{"post":{"summary":"Calculadora de Custo Total de Funcionário CLT (2026)","description":"Estime o custo mensal real de um funcionário CLT somando encargos, FGTS e provisões ao salário.","operationId":"calc_custo_funcionario_clt","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal do funcionário.","minimum":0},"regime":{"type":"string","enum":["normal","simples","cprb"],"description":"Regime Normal: aplica INSS patronal (20%), RAT/SAT e Sistema S/terceiros sobre a folha. Simples Nacional: INSS patronal, RAT e Sistema S não incidem sobre a folha — a CPP já está embutida no DAS (Anexos I/II/III/V). Desoneração (CPRB): substitui os 20% de INSS patronal por uma contribuição sobre a receita (fora da folha). FGTS e provisões valem em todos os regimes."},"inss_patronal":{"type":"number","description":"Contribuição previdenciária patronal (20% no regime normal).","minimum":0},"rat":{"type":"number","description":"Risco Ambiental do Trabalho, de 1% a 3% conforme a atividade.","minimum":0},"sistema_s":{"type":"number","description":"Contribuições a terceiros. O 5,8% típico da indústria = salário-educação 2,5% + INCRA 0,2% + SENAI 1,0% + SESI 1,5% + SEBRAE 0,6%. Já inclui o Sistema S — não some de novo abaixo. Varia por setor (no comércio entram SESC/SENAC).","minimum":0},"fgts":{"type":"number","description":"Depósito mensal de FGTS (8%, ou 2% no contrato de aprendiz).","minimum":0},"beneficios_brl":{"type":"number","description":"Soma mensal de vale-transporte, vale-refeição, plano de saúde etc.","minimum":0},"contrib_sindical_patronal_brl":{"type":"number","description":"Facultativa desde a Reforma Trabalhista (Lei 13.467/2017) — só é devida com autorização/anuência prévia da empresa. Informe o valor mensal (rateie o anual por 12) se a sua empresa optou por recolher; senão deixe 0.","minimum":0},"contrib_assistencial_brl":{"type":"number","description":"Prevista em convenção/acordo coletivo (CCT) da categoria. Opcional — preencha o valor mensal só se a sua CCT a impõe ao empregador; senão deixe 0.","minimum":0},"pis_folha":{"type":"boolean","description":"Ative SOMENTE se a empresa for entidade sem fins lucrativos / imune / isenta — nesse caso paga 1% de PIS sobre a folha (Lei 9.715/1998). Empresas em geral pagam PIS sobre a receita (fora da folha): deixe desligado."},"multa_fgts_provisao":{"type":"boolean","description":"Reserva mensal para a multa rescisória de 40% do FGTS na demissão sem justa causa: 40% × 8% = 3,2% do salário por mês. Ative para incluir essa provisão no custo."}},"required":["salario_bruto_brl","regime","inss_patronal","rat","sistema_s","fgts","beneficios_brl","contrib_sindical_patronal_brl","contrib_assistencial_brl","pis_folha","multa_fgts_provisao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-funcionario-clt"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal do funcionário.","minimum":0},"regime":{"type":"string","enum":["normal","simples","cprb"],"description":"Regime Normal: aplica INSS patronal (20%), RAT/SAT e Sistema S/terceiros sobre a folha. Simples Nacional: INSS patronal, RAT e Sistema S não incidem sobre a folha — a CPP já está embutida no DAS (Anexos I/II/III/V). Desoneração (CPRB): substitui os 20% de INSS patronal por uma contribuição sobre a receita (fora da folha). FGTS e provisões valem em todos os regimes."},"inss_patronal":{"type":"number","description":"Contribuição previdenciária patronal (20% no regime normal).","minimum":0},"rat":{"type":"number","description":"Risco Ambiental do Trabalho, de 1% a 3% conforme a atividade.","minimum":0},"sistema_s":{"type":"number","description":"Contribuições a terceiros. O 5,8% típico da indústria = salário-educação 2,5% + INCRA 0,2% + SENAI 1,0% + SESI 1,5% + SEBRAE 0,6%. Já inclui o Sistema S — não some de novo abaixo. Varia por setor (no comércio entram SESC/SENAC).","minimum":0},"fgts":{"type":"number","description":"Depósito mensal de FGTS (8%, ou 2% no contrato de aprendiz).","minimum":0},"beneficios_brl":{"type":"number","description":"Soma mensal de vale-transporte, vale-refeição, plano de saúde etc.","minimum":0},"contrib_sindical_patronal_brl":{"type":"number","description":"Facultativa desde a Reforma Trabalhista (Lei 13.467/2017) — só é devida com autorização/anuência prévia da empresa. Informe o valor mensal (rateie o anual por 12) se a sua empresa optou por recolher; senão deixe 0.","minimum":0},"contrib_assistencial_brl":{"type":"number","description":"Prevista em convenção/acordo coletivo (CCT) da categoria. Opcional — preencha o valor mensal só se a sua CCT a impõe ao empregador; senão deixe 0.","minimum":0},"pis_folha":{"type":"boolean","description":"Ative SOMENTE se a empresa for entidade sem fins lucrativos / imune / isenta — nesse caso paga 1% de PIS sobre a folha (Lei 9.715/1998). Empresas em geral pagam PIS sobre a receita (fora da folha): deixe desligado."},"multa_fgts_provisao":{"type":"boolean","description":"Reserva mensal para a multa rescisória de 40% do FGTS na demissão sem justa causa: 40% × 8% = 3,2% do salário por mês. Ative para incluir essa provisão no custo."}},"required":["salario_bruto_brl","regime","inss_patronal","rat","sistema_s","fgts","beneficios_brl","contrib_sindical_patronal_brl","contrib_assistencial_brl","pis_folha","multa_fgts_provisao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_total_brl":{"type":"number","title":"Custo mensal total","description":"Unidade: R$"},"encargos_brl":{"type":"number","title":"Encargos + FGTS","description":"Unidade: R$"},"provisoes_brl":{"type":"number","title":"Provisão 13º + férias + 1/3","description":"Unidade: R$"},"outras_contribuicoes_brl":{"type":"number","title":"Outras contribuições","description":"Unidade: R$"},"fator_custo":{"type":"number","title":"Custo / salário","description":"Unidade: %"}},"required":["custo_total_brl","encargos_brl","provisoes_brl","outras_contribuicoes_brl","fator_custo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-mensal-do-carro":{"post":{"summary":"Custo Mensal de Manter um Carro","description":"Some combustível, IPVA, seguro, manutenção e licenciamento para descobrir o custo real de manter um carro por mês.","operationId":"calc_custo_mensal_do_carro","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"km_por_mes":{"type":"number","description":"Quanto você roda por mês, em km. A média brasileira fica em torno de 1.000 km/mês.","minimum":0},"consumo_km_l":{"type":"number","description":"Consumo médio do carro em km/l. Use o valor de ciclo misto (cidade + estrada).","minimum":0.1},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível que você usa, em reais.","minimum":0},"ipva_anual_brl":{"type":"number","description":"Valor do IPVA do ano. Deixe em zero se for isento.","minimum":0},"seguro_anual_brl":{"type":"number","description":"Custo do seguro no ano. Deixe em zero se não tiver seguro.","minimum":0},"manutencao_anual_brl":{"type":"number","description":"Gasto anual com revisões, pneus, peças e o licenciamento.","minimum":0}},"required":["km_por_mes","consumo_km_l","preco_combustivel_brl","ipva_anual_brl","seguro_anual_brl","manutencao_anual_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-mensal-do-carro"},"inputs":{"type":"object","properties":{"km_por_mes":{"type":"number","description":"Quanto você roda por mês, em km. A média brasileira fica em torno de 1.000 km/mês.","minimum":0},"consumo_km_l":{"type":"number","description":"Consumo médio do carro em km/l. Use o valor de ciclo misto (cidade + estrada).","minimum":0.1},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível que você usa, em reais.","minimum":0},"ipva_anual_brl":{"type":"number","description":"Valor do IPVA do ano. Deixe em zero se for isento.","minimum":0},"seguro_anual_brl":{"type":"number","description":"Custo do seguro no ano. Deixe em zero se não tiver seguro.","minimum":0},"manutencao_anual_brl":{"type":"number","description":"Gasto anual com revisões, pneus, peças e o licenciamento.","minimum":0}},"required":["km_por_mes","consumo_km_l","preco_combustivel_brl","ipva_anual_brl","seguro_anual_brl","manutencao_anual_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"combustivel_mensal_brl":{"type":"number","title":"Combustível por mês","description":"Unidade: R$"},"custo_mensal_total_brl":{"type":"number","title":"Custo mensal total","description":"Unidade: R$"},"custo_anual_total_brl":{"type":"number","title":"Custo anual total","description":"Unidade: R$"}},"required":["combustivel_mensal_brl","custo_mensal_total_brl","custo_anual_total_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-por-km-carro-eletrico":{"post":{"summary":"Custo por Km de Carro Elétrico","description":"Calcule o custo por km de um carro elétrico e compare com um carro a combustão equivalente para ver a economia.","operationId":"calc_custo_por_km_carro_eletrico","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consumo_kwh_100km":{"type":"number","description":"Quantos kWh o carro elétrico gasta a cada 100 km. Típico 13–18 kWh/100km.","minimum":0},"tarifa_kwh_brl":{"type":"number","description":"Quanto você paga por kWh em casa, com impostos. Veja na sua conta de luz.","minimum":0},"consumo_combustao_km_l":{"type":"number","description":"Consumo do carro a combustão de referência, em km/l.","minimum":0.1},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível de referência (gasolina ou etanol), em reais.","minimum":0}},"required":["consumo_kwh_100km","tarifa_kwh_brl","consumo_combustao_km_l","preco_combustivel_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-por-km-carro-eletrico"},"inputs":{"type":"object","properties":{"consumo_kwh_100km":{"type":"number","description":"Quantos kWh o carro elétrico gasta a cada 100 km. Típico 13–18 kWh/100km.","minimum":0},"tarifa_kwh_brl":{"type":"number","description":"Quanto você paga por kWh em casa, com impostos. Veja na sua conta de luz.","minimum":0},"consumo_combustao_km_l":{"type":"number","description":"Consumo do carro a combustão de referência, em km/l.","minimum":0.1},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível de referência (gasolina ou etanol), em reais.","minimum":0}},"required":["consumo_kwh_100km","tarifa_kwh_brl","consumo_combustao_km_l","preco_combustivel_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_eletrico_km_brl":{"type":"number","title":"Custo por km (elétrico)","description":"Unidade: R$"},"custo_combustao_km_brl":{"type":"number","title":"Custo por km (combustão)","description":"Unidade: R$"},"economia_percent":{"type":"number","title":"Economia do elétrico","description":"Unidade: %"},"economia_por_1000km_brl":{"type":"number","title":"Economia a cada 1.000 km","description":"Unidade: R$"}},"required":["custo_eletrico_km_brl","custo_combustao_km_brl","economia_percent","economia_por_1000km_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-por-quilometro":{"post":{"summary":"Custo por Quilômetro Rodado (combustível)","description":"Calcula quanto custa cada km rodado a partir do consumo do carro e do preço do combustível.","operationId":"calc_custo_por_quilometro","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consumo_km_l":{"type":"number","description":"Consumo médio do carro em km/l.","minimum":0},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível usado.","minimum":0}},"required":["consumo_km_l","preco_combustivel_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-por-quilometro"},"inputs":{"type":"object","properties":{"consumo_km_l":{"type":"number","description":"Consumo médio do carro em km/l.","minimum":0},"preco_combustivel_brl":{"type":"number","description":"Preço do litro do combustível usado.","minimum":0}},"required":["consumo_km_l","preco_combustivel_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_por_km_brl":{"type":"number","title":"Custo por km","description":"Unidade: R$"},"custo_100km_brl":{"type":"number","title":"Custo a cada 100 km","description":"Unidade: R$"}},"required":["custo_por_km_brl","custo_100km_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/custo-recarga-carro-eletrico":{"post":{"summary":"Custo de Recarga de Carro Elétrico","description":"Calcule quanto custa recarregar um carro elétrico em casa a partir da capacidade da bateria, da tarifa de energia e da perda no carregamento.","operationId":"calc_custo_recarga_carro_eletrico","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"capacidade_bateria_kwh":{"type":"number","description":"Capacidade total da bateria do carro, em kWh (ex.: 40, 60, 75 kWh).","minimum":0},"percentual_recarga_percent":{"type":"number","description":"Quanto da bateria será recarregado nesta sessão. De 20% a 100% = 80%.","minimum":0,"maximum":100},"tarifa_kwh_brl":{"type":"number","description":"Quanto você paga por kWh em casa, com impostos. Veja na sua conta de luz.","minimum":0},"perda_carregamento_percent":{"type":"number","description":"Parte da energia que se perde como calor e não vira carga. Costuma ser 8–15%.","minimum":0,"maximum":100}},"required":["capacidade_bateria_kwh","percentual_recarga_percent","tarifa_kwh_brl","perda_carregamento_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"custo-recarga-carro-eletrico"},"inputs":{"type":"object","properties":{"capacidade_bateria_kwh":{"type":"number","description":"Capacidade total da bateria do carro, em kWh (ex.: 40, 60, 75 kWh).","minimum":0},"percentual_recarga_percent":{"type":"number","description":"Quanto da bateria será recarregado nesta sessão. De 20% a 100% = 80%.","minimum":0,"maximum":100},"tarifa_kwh_brl":{"type":"number","description":"Quanto você paga por kWh em casa, com impostos. Veja na sua conta de luz.","minimum":0},"perda_carregamento_percent":{"type":"number","description":"Parte da energia que se perde como calor e não vira carga. Costuma ser 8–15%.","minimum":0,"maximum":100}},"required":["capacidade_bateria_kwh","percentual_recarga_percent","tarifa_kwh_brl","perda_carregamento_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"energia_kwh":{"type":"number","title":"Energia consumida","description":"Unidade: kWh"},"custo_recarga_brl":{"type":"number","title":"Custo da recarga","description":"Unidade: R$"}},"required":["energia_kwh","custo_recarga_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/das-mei":{"post":{"summary":"Calculadora do DAS MEI (2026)","description":"Calcule o valor mensal do DAS do MEI conforme a atividade: comércio, serviço, comércio e serviço ou transportador autônomo de carga.","operationId":"calc_das_mei","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tipo_atividade":{"type":"string","enum":["0","1","2","3"],"description":"A atividade do CNPJ define os acréscimos: ICMS (R$ 1) para comércio/indústria, ISS (R$ 5) para serviço. O transportador autônomo de carga recolhe 12% de INSS em vez de 5%."},"salario_minimo_brl":{"type":"number","description":"Base do INSS do MEI (5% ou 12%). Já vem preenchido com o salário mínimo de 2026.","minimum":0}},"required":["tipo_atividade","salario_minimo_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"das-mei"},"inputs":{"type":"object","properties":{"tipo_atividade":{"type":"string","enum":["0","1","2","3"],"description":"A atividade do CNPJ define os acréscimos: ICMS (R$ 1) para comércio/indústria, ISS (R$ 5) para serviço. O transportador autônomo de carga recolhe 12% de INSS em vez de 5%."},"salario_minimo_brl":{"type":"number","description":"Base do INSS do MEI (5% ou 12%). Já vem preenchido com o salário mínimo de 2026.","minimum":0}},"required":["tipo_atividade","salario_minimo_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"das_total_brl":{"type":"number","title":"DAS mensal","description":"Unidade: R$"},"das_anual_brl":{"type":"number","title":"DAS no ano","description":"Unidade: R$"},"inss_brl":{"type":"number","title":"Parcela de INSS","description":"Unidade: R$"},"icms_iss_brl":{"type":"number","title":"ICMS + ISS","description":"Unidade: R$"}},"required":["das_total_brl","das_anual_brl","inss_brl","icms_iss_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/decimo-terceiro":{"post":{"summary":"Calculadora de 13º Salário (2026)","description":"Calcule o 13º salário proporcional aos meses trabalhados, bruto e líquido, com desconto de INSS e IRRF de 2026.","operationId":"calc_decimo_terceiro","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal, base do 13º.","minimum":0},"meses_trabalhados":{"type":"integer","description":"Meses trabalhados no ano (1 a 12). Cada mês vale 1/12 do 13º. Fração ≥ 15 dias conta como mês.","minimum":0,"maximum":12},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF (cada um abate R$ 189,59 da base).","minimum":0}},"required":["salario_bruto_brl","meses_trabalhados","dependentes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"decimo-terceiro"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal, base do 13º.","minimum":0},"meses_trabalhados":{"type":"integer","description":"Meses trabalhados no ano (1 a 12). Cada mês vale 1/12 do 13º. Fração ≥ 15 dias conta como mês.","minimum":0,"maximum":12},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF (cada um abate R$ 189,59 da base).","minimum":0}},"required":["salario_bruto_brl","meses_trabalhados","dependentes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"decimo_liquido_brl":{"type":"number","title":"13º líquido","description":"Unidade: R$"},"decimo_bruto_brl":{"type":"number","title":"13º bruto","description":"Unidade: R$"},"primeira_parcela_brl":{"type":"number","title":"1ª parcela","description":"Unidade: R$"},"inss_brl":{"type":"number","title":"INSS sobre o 13º","description":"Unidade: R$"},"irrf_brl":{"type":"number","title":"IRRF sobre o 13º","description":"Unidade: R$"}},"required":["decimo_liquido_brl","decimo_bruto_brl","primeira_parcela_brl","inss_brl","irrf_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/degraus-de-escada":{"post":{"summary":"Calculadora de Degraus de Escada (Blondel)","description":"Calcule o número de degraus, a altura do espelho e a profundidade do piso pela altura total, usando a regra de Blondel.","operationId":"calc_degraus_de_escada","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"altura_total_cm":{"type":"number","description":"Desnível total a vencer, de piso a piso, em centímetros.","minimum":0},"espelho_ideal_cm":{"type":"number","description":"Altura desejada de cada degrau (espelho).","minimum":1,"maximum":25}},"required":["altura_total_cm","espelho_ideal_cm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"degraus-de-escada"},"inputs":{"type":"object","properties":{"altura_total_cm":{"type":"number","description":"Desnível total a vencer, de piso a piso, em centímetros.","minimum":0},"espelho_ideal_cm":{"type":"number","description":"Altura desejada de cada degrau (espelho).","minimum":1,"maximum":25}},"required":["altura_total_cm","espelho_ideal_cm"],"additionalProperties":false},"outputs":{"type":"object","properties":{"num_degraus":{"type":"number","title":"Número de degraus","description":"Unidade: un"},"espelho_cm":{"type":"number","title":"Espelho real","description":"Unidade: cm"},"piso_cm":{"type":"number","title":"Piso (profundidade)","description":"Unidade: cm"},"comprimento_escada_m":{"type":"number","title":"Comprimento horizontal","description":"Unidade: m"},"blondel_2e_mais_p_cm":{"type":"number","title":"Verificação de Blondel","description":"Unidade: cm"}},"required":["num_degraus","espelho_cm","piso_cm","comprimento_escada_m","blondel_2e_mais_p_cm"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/depreciacao-de-veiculo":{"post":{"summary":"Calculadora de Depreciação de Veículo","description":"Estime o valor futuro de um carro aplicando uma taxa de depreciação anual sobre o preço atual e veja quanto ele perde de valor.","operationId":"calc_depreciacao_de_veiculo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_atual_brl":{"type":"number","description":"Quanto o veículo vale hoje, em reais (preço de mercado ou FIPE atual).","minimum":0},"taxa_depreciacao_ano_percent":{"type":"number","description":"Quanto o carro perde de valor por ano, em porcentagem. Típico 8–15% ao ano.","minimum":0,"maximum":100},"anos":{"type":"integer","description":"Por quantos anos projetar a perda de valor.","minimum":0}},"required":["valor_atual_brl","taxa_depreciacao_ano_percent","anos"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"depreciacao-de-veiculo"},"inputs":{"type":"object","properties":{"valor_atual_brl":{"type":"number","description":"Quanto o veículo vale hoje, em reais (preço de mercado ou FIPE atual).","minimum":0},"taxa_depreciacao_ano_percent":{"type":"number","description":"Quanto o carro perde de valor por ano, em porcentagem. Típico 8–15% ao ano.","minimum":0,"maximum":100},"anos":{"type":"integer","description":"Por quantos anos projetar a perda de valor.","minimum":0}},"required":["valor_atual_brl","taxa_depreciacao_ano_percent","anos"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_futuro_brl":{"type":"number","title":"Valor estimado no fim","description":"Unidade: R$"},"perda_total_brl":{"type":"number","title":"Perda total de valor","description":"Unidade: R$"},"perda_percentual":{"type":"number","title":"Perda percentual","description":"Unidade: %"}},"required":["valor_futuro_brl","perda_total_brl","perda_percentual"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/desvio-padrao":{"post":{"summary":"Calculadora de Desvio Padrão, Média, Mediana e Variância","description":"Calcule média, mediana, variância e desvio padrão (amostral e populacional) de até 10 valores informados.","operationId":"calc_desvio_padrao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quantidade":{"type":"integer","description":"Quantos valores serão usados no cálculo (de 2 a 10). Os campos além dessa quantidade são ignorados.","minimum":2,"maximum":10},"valor1":{"type":"number","description":"Primeiro valor."},"valor2":{"type":"number","description":"Segundo valor."},"valor3":{"type":"number","description":"Usado se a quantidade for ≥ 3."},"valor4":{"type":"number","description":"Usado se a quantidade for ≥ 4."},"valor5":{"type":"number","description":"Usado se a quantidade for ≥ 5."},"valor6":{"type":"number","description":"Usado se a quantidade for ≥ 6."},"valor7":{"type":"number","description":"Usado se a quantidade for ≥ 7."},"valor8":{"type":"number","description":"Usado se a quantidade for ≥ 8."},"valor9":{"type":"number","description":"Usado se a quantidade for ≥ 9."},"valor10":{"type":"number","description":"Usado se a quantidade for ≥ 10."}},"required":["quantidade","valor1","valor2","valor3","valor4","valor5","valor6","valor7","valor8","valor9","valor10"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"desvio-padrao"},"inputs":{"type":"object","properties":{"quantidade":{"type":"integer","description":"Quantos valores serão usados no cálculo (de 2 a 10). Os campos além dessa quantidade são ignorados.","minimum":2,"maximum":10},"valor1":{"type":"number","description":"Primeiro valor."},"valor2":{"type":"number","description":"Segundo valor."},"valor3":{"type":"number","description":"Usado se a quantidade for ≥ 3."},"valor4":{"type":"number","description":"Usado se a quantidade for ≥ 4."},"valor5":{"type":"number","description":"Usado se a quantidade for ≥ 5."},"valor6":{"type":"number","description":"Usado se a quantidade for ≥ 6."},"valor7":{"type":"number","description":"Usado se a quantidade for ≥ 7."},"valor8":{"type":"number","description":"Usado se a quantidade for ≥ 8."},"valor9":{"type":"number","description":"Usado se a quantidade for ≥ 9."},"valor10":{"type":"number","description":"Usado se a quantidade for ≥ 10."}},"required":["quantidade","valor1","valor2","valor3","valor4","valor5","valor6","valor7","valor8","valor9","valor10"],"additionalProperties":false},"outputs":{"type":"object","properties":{"desvio_padrao_amostral":{"type":"number","title":"Desvio padrão amostral (n−1)"},"desvio_padrao_populacional":{"type":"number","title":"Desvio padrão populacional (n)"},"media":{"type":"number","title":"Média aritmética"},"mediana":{"type":"number","title":"Mediana"},"variancia_amostral":{"type":"number","title":"Variância amostral (n−1)"},"variancia_populacional":{"type":"number","title":"Variância populacional (n)"},"amplitude":{"type":"number","title":"Amplitude (máx − mín)"}},"required":["desvio_padrao_amostral","desvio_padrao_populacional","media","mediana","variancia_amostral","variancia_populacional","amplitude"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/diagonais-de-poligono":{"post":{"summary":"Calculadora de Diagonais e Ângulos de Polígono","description":"Calcule o número de diagonais, a soma dos ângulos internos e o valor de cada ângulo interno de um polígono de N lados.","operationId":"calc_diagonais_de_poligono","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n_lados":{"type":"integer","description":"Quantos lados o polígono tem. Mínimo 3 (triângulo).","minimum":3}},"required":["n_lados"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"diagonais-de-poligono"},"inputs":{"type":"object","properties":{"n_lados":{"type":"integer","description":"Quantos lados o polígono tem. Mínimo 3 (triângulo).","minimum":3}},"required":["n_lados"],"additionalProperties":false},"outputs":{"type":"object","properties":{"diagonais":{"type":"number","title":"Número de diagonais","description":"Unidade: un"},"soma_angulos_internos":{"type":"number","title":"Soma dos ângulos internos","description":"Unidade: °"},"angulo_interno":{"type":"number","title":"Cada ângulo interno (se regular)","description":"Unidade: °"},"angulo_externo":{"type":"number","title":"Cada ângulo externo (se regular)","description":"Unidade: °"}},"required":["diagonais","soma_angulos_internos","angulo_interno","angulo_externo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/dias-uteis-entre-datas":{"post":{"summary":"Calculadora de Dias Úteis entre Datas","description":"Conta os dias úteis entre duas datas, descontando fins de semana e feriados nacionais.","operationId":"calc_dias_uteis_entre_datas","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_inicio":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A primeira data do intervalo (AAAA-MM-DD). Não é contada."},"data_fim":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A última data do intervalo (AAAA-MM-DD). É contada se for dia útil."},"incluir_feriados":{"type":"string","enum":["1","0"],"description":"Se ativado, feriados nacionais que caem em dia útil também são removidos."}},"required":["data_inicio","data_fim","incluir_feriados"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"dias-uteis-entre-datas"},"inputs":{"type":"object","properties":{"data_inicio":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A primeira data do intervalo (AAAA-MM-DD). Não é contada."},"data_fim":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A última data do intervalo (AAAA-MM-DD). É contada se for dia útil."},"incluir_feriados":{"type":"string","enum":["1","0"],"description":"Se ativado, feriados nacionais que caem em dia útil também são removidos."}},"required":["data_inicio","data_fim","incluir_feriados"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dias_uteis":{"type":"number","title":"Dias úteis","description":"Unidade: dias úteis"},"dias_corridos":{"type":"number","title":"Dias corridos","description":"Unidade: dias"},"feriados":{"type":"number","title":"Feriados no intervalo","description":"Unidade: un"}},"required":["dias_uteis","dias_corridos","feriados"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/diferenca-entre-datas":{"post":{"summary":"Calculadora de Diferença entre Datas","description":"Quantos dias, semanas e meses há entre duas datas, com a decomposição em anos, meses e dias.","operationId":"calc_diferenca_entre_datas","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_inicio":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A primeira data do intervalo (AAAA-MM-DD)."},"data_fim":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A segunda data do intervalo (AAAA-MM-DD)."}},"required":["data_inicio","data_fim"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"diferenca-entre-datas"},"inputs":{"type":"object","properties":{"data_inicio":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A primeira data do intervalo (AAAA-MM-DD)."},"data_fim":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A segunda data do intervalo (AAAA-MM-DD)."}},"required":["data_inicio","data_fim"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dias":{"type":"number","title":"Dias corridos","description":"Unidade: dias"},"semanas":{"type":"number","title":"Semanas","description":"Unidade: un"},"meses":{"type":"number","title":"Meses (calendário)","description":"Unidade: meses"},"anos":{"type":"number","title":"Anos completos","description":"Unidade: anos"},"meses_resto":{"type":"number","title":"Meses (resto)","description":"Unidade: meses"},"dias_resto":{"type":"number","title":"Dias (resto)","description":"Unidade: dias"}},"required":["dias","semanas","meses","anos","meses_resto","dias_resto"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/diluicao-de-defensivo-pulverizacao":{"post":{"summary":"Calculadora de Diluição de Defensivo / Adubo Foliar","description":"Calcule quanto produto adicionar ao tanque de pulverização a partir da dose por litro de calda.","operationId":"calc_diluicao_de_defensivo_pulverizacao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"volume_tanque_litro":{"type":"number","description":"Quantidade total de água (calda) no pulverizador, em litros.","minimum":0},"dose_ml_litro":{"type":"number","description":"Dose de produto por litro de água, conforme o rótulo do fabricante.","minimum":0}},"required":["volume_tanque_litro","dose_ml_litro"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"diluicao-de-defensivo-pulverizacao"},"inputs":{"type":"object","properties":{"volume_tanque_litro":{"type":"number","description":"Quantidade total de água (calda) no pulverizador, em litros.","minimum":0},"dose_ml_litro":{"type":"number","description":"Dose de produto por litro de água, conforme o rótulo do fabricante.","minimum":0}},"required":["volume_tanque_litro","dose_ml_litro"],"additionalProperties":false},"outputs":{"type":"object","properties":{"produto_ml":{"type":"number","title":"Produto a adicionar","description":"Unidade: mL"},"produto_litro":{"type":"number","title":"Produto em litros","description":"Unidade: L"}},"required":["produto_ml","produto_litro"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/dimensionamento-solar":{"post":{"summary":"Calculadora de Energia Solar (kWp e Número de Painéis)","description":"Dimensione um sistema solar fotovoltaico: potência em kWp e quantidade de painéis a partir do seu consumo.","operationId":"calc_dimensionamento_solar","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consumo_kwh_mes":{"type":"number","description":"Consumo médio mensal de energia, em kWh, conforme a conta de luz.","minimum":0},"horas_sol_pleno":{"type":"number","description":"HSP da sua região. Norte/Nordeste ~5,0–5,7; Sudeste/Centro-Oeste ~4,5–5,2; Sul ~4,0–4,5 h/dia.","minimum":0.1},"perdas_sistema":{"type":"number","description":"Perdas totais (sujeira, temperatura, inversor, cabeamento). Tipicamente ~20%.","minimum":0,"maximum":99},"potencia_painel_w":{"type":"number","description":"Potência de cada painel em watts. Módulos atuais ~550 W.","minimum":1}},"required":["consumo_kwh_mes","horas_sol_pleno","perdas_sistema","potencia_painel_w"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"dimensionamento-solar"},"inputs":{"type":"object","properties":{"consumo_kwh_mes":{"type":"number","description":"Consumo médio mensal de energia, em kWh, conforme a conta de luz.","minimum":0},"horas_sol_pleno":{"type":"number","description":"HSP da sua região. Norte/Nordeste ~5,0–5,7; Sudeste/Centro-Oeste ~4,5–5,2; Sul ~4,0–4,5 h/dia.","minimum":0.1},"perdas_sistema":{"type":"number","description":"Perdas totais (sujeira, temperatura, inversor, cabeamento). Tipicamente ~20%.","minimum":0,"maximum":99},"potencia_painel_w":{"type":"number","description":"Potência de cada painel em watts. Módulos atuais ~550 W.","minimum":1}},"required":["consumo_kwh_mes","horas_sol_pleno","perdas_sistema","potencia_painel_w"],"additionalProperties":false},"outputs":{"type":"object","properties":{"potencia_kwp":{"type":"number","title":"Potência do sistema","description":"Unidade: un"},"numero_paineis":{"type":"number","title":"Número de painéis","description":"Unidade: un"},"geracao_estimada_kwh_mes":{"type":"number","title":"Geração mensal estimada","description":"Unidade: kWh"},"area_estimada_m2":{"type":"number","title":"Área de telhado estimada","description":"Unidade: m²"}},"required":["potencia_kwp","numero_paineis","geracao_estimada_kwh_mes","area_estimada_m2"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/distancia-entre-pontos":{"post":{"summary":"Calculadora de Distância entre Dois Pontos","description":"Calcule a distância entre dois pontos no plano (2D) ou no espaço (3D) pelas coordenadas, com deltas e ponto médio.","operationId":"calc_distancia_entre_pontos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dimensao":{"type":"string","enum":["0","1"],"description":"Escolha 2D para o plano ou 3D para o espaço. Em 2D, a coordenada z é ignorada."},"x1":{"type":"number","description":"Coordenada X do ponto 1."},"y1":{"type":"number","description":"Coordenada Y do ponto 1."},"z1":{"type":"number","description":"Coordenada Z do ponto 1 (apenas no modo 3D)."},"x2":{"type":"number","description":"Coordenada X do ponto 2."},"y2":{"type":"number","description":"Coordenada Y do ponto 2."},"z2":{"type":"number","description":"Coordenada Z do ponto 2 (apenas no modo 3D)."}},"required":["dimensao","x1","y1","z1","x2","y2","z2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"distancia-entre-pontos"},"inputs":{"type":"object","properties":{"dimensao":{"type":"string","enum":["0","1"],"description":"Escolha 2D para o plano ou 3D para o espaço. Em 2D, a coordenada z é ignorada."},"x1":{"type":"number","description":"Coordenada X do ponto 1."},"y1":{"type":"number","description":"Coordenada Y do ponto 1."},"z1":{"type":"number","description":"Coordenada Z do ponto 1 (apenas no modo 3D)."},"x2":{"type":"number","description":"Coordenada X do ponto 2."},"y2":{"type":"number","description":"Coordenada Y do ponto 2."},"z2":{"type":"number","description":"Coordenada Z do ponto 2 (apenas no modo 3D)."}},"required":["dimensao","x1","y1","z1","x2","y2","z2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"distancia":{"type":"number","title":"Distância"},"delta_x":{"type":"number","title":"Δx (x2 − x1)"},"delta_y":{"type":"number","title":"Δy (y2 − y1)"},"delta_z":{"type":"number","title":"Δz (z2 − z1)"},"ponto_medio_x":{"type":"number","title":"Ponto médio X"},"ponto_medio_y":{"type":"number","title":"Ponto médio Y"}},"required":["distancia","delta_x","delta_y","delta_z","ponto_medio_x","ponto_medio_y"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/dividir-conta-com-gorjeta":{"post":{"summary":"Calculadora de Dividir a Conta com Gorjeta","description":"Rache a conta do bar ou restaurante entre várias pessoas já somando a gorjeta e o couvert, e veja quanto cada um paga.","operationId":"calc_dividir_conta_com_gorjeta","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_conta":{"type":"number","description":"Total da conta antes da gorjeta e do couvert, em reais.","minimum":0},"pessoas":{"type":"integer","description":"Entre quantas pessoas a conta será dividida por igual.","minimum":1},"gorjeta_percent":{"type":"number","description":"Taxa de serviço sobre a conta. No Brasil costuma ser 10% e é opcional.","minimum":0},"couvert_por_pessoa":{"type":"number","description":"Couvert artístico cobrado por pessoa, em reais. Deixe 0 se não houver.","minimum":0}},"required":["valor_conta","pessoas","gorjeta_percent","couvert_por_pessoa"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"dividir-conta-com-gorjeta"},"inputs":{"type":"object","properties":{"valor_conta":{"type":"number","description":"Total da conta antes da gorjeta e do couvert, em reais.","minimum":0},"pessoas":{"type":"integer","description":"Entre quantas pessoas a conta será dividida por igual.","minimum":1},"gorjeta_percent":{"type":"number","description":"Taxa de serviço sobre a conta. No Brasil costuma ser 10% e é opcional.","minimum":0},"couvert_por_pessoa":{"type":"number","description":"Couvert artístico cobrado por pessoa, em reais. Deixe 0 se não houver.","minimum":0}},"required":["valor_conta","pessoas","gorjeta_percent","couvert_por_pessoa"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_por_pessoa":{"type":"number","title":"Valor por pessoa","description":"Unidade: R$"},"total_com_gorjeta":{"type":"number","title":"Total final da mesa","description":"Unidade: R$"},"gorjeta_total":{"type":"number","title":"Gorjeta somada","description":"Unidade: R$"}},"required":["valor_por_pessoa","total_com_gorjeta","gorjeta_total"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/economia-troca-led":{"post":{"summary":"Calculadora de Economia ao Trocar para Lâmpadas LED","description":"Calcule quanto você economiza por ano trocando lâmpadas antigas por LED, a partir da potência e das horas de uso.","operationId":"calc_economia_troca_led","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"potencia_atual_w":{"type":"number","description":"Potência da lâmpada atual em watts. Incandescente comum 40–100 W; fluorescente 15–30 W.","minimum":0.1},"potencia_led_w":{"type":"number","description":"Potência da LED que substitui a atual, em watts. Uma LED de 9 W rende como uma incandescente de 60 W.","minimum":0},"numero_lampadas":{"type":"integer","description":"Quantas lâmpadas serão trocadas.","minimum":0},"horas_por_dia":{"type":"number","description":"Por quantas horas, em média, as lâmpadas ficam acesas por dia.","minimum":0,"maximum":24},"tarifa_kwh":{"type":"number","description":"Preço do kWh já com impostos. Média residencial BR 2026 ~R$0,78–0,85; edite com o da sua conta.","minimum":0}},"required":["potencia_atual_w","potencia_led_w","numero_lampadas","horas_por_dia","tarifa_kwh"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"economia-troca-led"},"inputs":{"type":"object","properties":{"potencia_atual_w":{"type":"number","description":"Potência da lâmpada atual em watts. Incandescente comum 40–100 W; fluorescente 15–30 W.","minimum":0.1},"potencia_led_w":{"type":"number","description":"Potência da LED que substitui a atual, em watts. Uma LED de 9 W rende como uma incandescente de 60 W.","minimum":0},"numero_lampadas":{"type":"integer","description":"Quantas lâmpadas serão trocadas.","minimum":0},"horas_por_dia":{"type":"number","description":"Por quantas horas, em média, as lâmpadas ficam acesas por dia.","minimum":0,"maximum":24},"tarifa_kwh":{"type":"number","description":"Preço do kWh já com impostos. Média residencial BR 2026 ~R$0,78–0,85; edite com o da sua conta.","minimum":0}},"required":["potencia_atual_w","potencia_led_w","numero_lampadas","horas_por_dia","tarifa_kwh"],"additionalProperties":false},"outputs":{"type":"object","properties":{"economia_anual":{"type":"number","title":"Economia por ano","description":"Unidade: R$"},"economia_mensal":{"type":"number","title":"Economia por mês","description":"Unidade: R$"},"reducao_kwh_ano":{"type":"number","title":"Energia economizada no ano","description":"Unidade: kWh"},"reducao_percent":{"type":"number","title":"Redução de consumo","description":"Unidade: %"}},"required":["economia_anual","economia_mensal","reducao_kwh_ano","reducao_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/equacao-2-grau-bhaskara":{"post":{"summary":"Calculadora de Equação do 2º Grau (Bhaskara)","description":"Resolve ax²+bx+c=0 pela fórmula de Bhaskara e mostra as raízes x₁ e x₂, o discriminante (delta) e as relações de Girard.","operationId":"calc_equacao_2_grau_bhaskara","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"Coeficiente de x². Não pode ser zero (a=0 vira equação do 1º grau e é rejeitado)."},"b":{"type":"number","description":"Coeficiente de x. Pode ser positivo, negativo ou zero."},"c":{"type":"number","description":"Termo constante da equação. Pode ser positivo, negativo ou zero."}},"required":["a","b","c"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"equacao-2-grau-bhaskara"},"inputs":{"type":"object","properties":{"a":{"type":"number","description":"Coeficiente de x². Não pode ser zero (a=0 vira equação do 1º grau e é rejeitado)."},"b":{"type":"number","description":"Coeficiente de x. Pode ser positivo, negativo ou zero."},"c":{"type":"number","description":"Termo constante da equação. Pode ser positivo, negativo ou zero."}},"required":["a","b","c"],"additionalProperties":false},"outputs":{"type":"object","properties":{"x1":{"type":"number","title":"Raiz x₁ (maior)"},"x2":{"type":"number","title":"Raiz x₂ (menor)"},"delta":{"type":"number","title":"Delta (discriminante)"},"num_raizes":{"type":"number","title":"Número de raízes reais","description":"Unidade: un"},"soma_raizes":{"type":"number","title":"Soma das raízes (−b/a)"},"produto_raizes":{"type":"number","title":"Produto das raízes (c/a)"}},"required":["x1","x2","delta","num_raizes","soma_raizes","produto_raizes"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/escala-do-universo":{"post":{"summary":"Escala do Universo: onde você está na régua de tudo","description":"Veja onde seu tamanho cai na escala logarítmica do universo: do comprimento de Planck ao universo observável.","operationId":"calc_escala_do_universo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"altura_m":{"type":"number","description":"Seu tamanho em metros — use qualquer comprimento humano (altura, palmo, passo) para se situar na régua.","minimum":0}},"required":["altura_m"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"escala-do-universo"},"inputs":{"type":"object","properties":{"altura_m":{"type":"number","description":"Seu tamanho em metros — use qualquer comprimento humano (altura, palmo, passo) para se situar na régua.","minimum":0}},"required":["altura_m"],"additionalProperties":false},"outputs":{"type":"object","properties":{"posicao_log_pct":{"type":"number","title":"Sua posição na régua logarítmica","description":"Unidade: %"},"ordens_ate_planck":{"type":"number","title":"Ordens de grandeza acima do Planck","description":"Unidade: un"},"ordens_ate_universo":{"type":"number","title":"Ordens de grandeza abaixo do universo","description":"Unidade: un"},"ordens_totais":{"type":"number","title":"Ordens de grandeza de tudo (Planck → universo)","description":"Unidade: un"},"planck_em_voce":{"type":"number","title":"Comprimentos de Planck na sua altura","description":"Unidade: un"},"voce_no_universo":{"type":"number","title":"Quantas \"vezes você\" cabem no universo","description":"Unidade: un"}},"required":["posicao_log_pct","ordens_ate_planck","ordens_ate_universo","ordens_totais","planck_em_voce","voce_no_universo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ferias-clt":{"post":{"summary":"Calculadora de Férias CLT + 1/3 (2026)","description":"Calcule o valor das férias proporcionais ou integrais com o terço constitucional, líquido de INSS e IRRF de 2026.","operationId":"calc_ferias_clt","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal, base do cálculo das férias.","minimum":0},"dias_de_ferias":{"type":"integer","description":"Dias de férias que serão usufruídos (até 30).","minimum":0,"maximum":30},"vender_ferias":{"type":"string","enum":["0","1"],"description":"Abono pecuniário: vender 1/3 das férias (10 dias), valor isento de INSS e IRRF."},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF (cada um abate R$ 189,59 da base).","minimum":0}},"required":["salario_bruto_brl","dias_de_ferias","vender_ferias","dependentes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ferias-clt"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal, base do cálculo das férias.","minimum":0},"dias_de_ferias":{"type":"integer","description":"Dias de férias que serão usufruídos (até 30).","minimum":0,"maximum":30},"vender_ferias":{"type":"string","enum":["0","1"],"description":"Abono pecuniário: vender 1/3 das férias (10 dias), valor isento de INSS e IRRF."},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF (cada um abate R$ 189,59 da base).","minimum":0}},"required":["salario_bruto_brl","dias_de_ferias","vender_ferias","dependentes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"ferias_liquido_brl":{"type":"number","title":"Total líquido de férias","description":"Unidade: R$"},"ferias_brutas_brl":{"type":"number","title":"Férias + 1/3 bruto","description":"Unidade: R$"},"abono_brl":{"type":"number","title":"Abono pecuniário","description":"Unidade: R$"},"inss_brl":{"type":"number","title":"INSS","description":"Unidade: R$"},"irrf_brl":{"type":"number","title":"IRRF","description":"Unidade: R$"}},"required":["ferias_liquido_brl","ferias_brutas_brl","abono_brl","inss_brl","irrf_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ferro-vergalhao":{"post":{"summary":"Calculadora de Ferro / Vergalhão","description":"Calcule o peso total de aço e o número de barras de vergalhão pela bitola e pelo comprimento total a comprar.","operationId":"calc_ferro_vergalhao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comprimento_total_m":{"type":"number","description":"Somatório do comprimento de todas as barras desta bitola, em metros.","minimum":0},"bitola_mm":{"type":"string","enum":["0","1","2","3","4"],"description":"Diâmetro do vergalhão — define a massa por metro (NBR 7480)."},"comprimento_barra_m":{"type":"number","description":"Comprimento comercial da barra vendida.","minimum":0.1}},"required":["comprimento_total_m","bitola_mm","comprimento_barra_m"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ferro-vergalhao"},"inputs":{"type":"object","properties":{"comprimento_total_m":{"type":"number","description":"Somatório do comprimento de todas as barras desta bitola, em metros.","minimum":0},"bitola_mm":{"type":"string","enum":["0","1","2","3","4"],"description":"Diâmetro do vergalhão — define a massa por metro (NBR 7480)."},"comprimento_barra_m":{"type":"number","description":"Comprimento comercial da barra vendida.","minimum":0.1}},"required":["comprimento_total_m","bitola_mm","comprimento_barra_m"],"additionalProperties":false},"outputs":{"type":"object","properties":{"peso_kg":{"type":"number","title":"Peso total de aço","description":"Unidade: kg"},"barras":{"type":"number","title":"Barras a comprar","description":"Unidade: un"}},"required":["peso_kg","barras"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/fgts-multa-rescisao":{"post":{"summary":"Calculadora de FGTS e Multa de 40% (2026)","description":"Calcule o depósito mensal de FGTS (8%) e a multa rescisória de 40% ou 20% sobre o saldo.","operationId":"calc_fgts_multa_rescisao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário que serve de base para o depósito mensal de FGTS.","minimum":0},"saldo_fgts_brl":{"type":"number","description":"Saldo atual da conta de FGTS, base da multa rescisória.","minimum":0},"tipo_rescisao":{"type":"string","enum":["0","1","2"],"description":"Define a multa sobre o saldo: 40%, 20% ou 0%."},"aliquota_deposito":{"type":"number","description":"8% no contrato padrão, 2% no contrato de aprendiz.","minimum":0}},"required":["salario_bruto_brl","saldo_fgts_brl","tipo_rescisao","aliquota_deposito"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"fgts-multa-rescisao"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário que serve de base para o depósito mensal de FGTS.","minimum":0},"saldo_fgts_brl":{"type":"number","description":"Saldo atual da conta de FGTS, base da multa rescisória.","minimum":0},"tipo_rescisao":{"type":"string","enum":["0","1","2"],"description":"Define a multa sobre o saldo: 40%, 20% ou 0%."},"aliquota_deposito":{"type":"number","description":"8% no contrato padrão, 2% no contrato de aprendiz.","minimum":0}},"required":["salario_bruto_brl","saldo_fgts_brl","tipo_rescisao","aliquota_deposito"],"additionalProperties":false},"outputs":{"type":"object","properties":{"multa_brl":{"type":"number","title":"Multa sobre o FGTS","description":"Unidade: R$"},"deposito_mensal_brl":{"type":"number","title":"Depósito mensal de FGTS","description":"Unidade: R$"},"deposito_anual_brl":{"type":"number","title":"Depósito anual de FGTS","description":"Unidade: R$"},"total_a_sacar_brl":{"type":"number","title":"Saldo + multa","description":"Unidade: R$"}},"required":["multa_brl","deposito_mensal_brl","deposito_anual_brl","total_a_sacar_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/financiamento-de-veiculo":{"post":{"summary":"Simulador de Financiamento de Veículo (Tabela Price)","description":"Calcule a parcela fixa, o total pago e os juros de um financiamento de carro pela Tabela Price a partir do valor financiado, da entrada, da taxa ao mês e do prazo.","operationId":"calc_financiamento_de_veiculo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_financiado_brl":{"type":"number","description":"Preço do veículo que será financiado, antes de descontar a entrada.","minimum":0},"entrada_brl":{"type":"number","description":"Quanto você dá de entrada à vista. O financiamento incide só sobre o valor menos a entrada.","minimum":0},"taxa_juros_mes_percent":{"type":"number","description":"Juros do contrato por mês, em porcentagem. Em 2026, financiamento de carro costuma ficar entre 1,3% e 2,5% ao mês.","minimum":0},"prazo_meses":{"type":"integer","description":"Número de parcelas do financiamento. O comum é 24, 36, 48 ou 60.","minimum":1,"maximum":120}},"required":["valor_financiado_brl","entrada_brl","taxa_juros_mes_percent","prazo_meses"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"financiamento-de-veiculo"},"inputs":{"type":"object","properties":{"valor_financiado_brl":{"type":"number","description":"Preço do veículo que será financiado, antes de descontar a entrada.","minimum":0},"entrada_brl":{"type":"number","description":"Quanto você dá de entrada à vista. O financiamento incide só sobre o valor menos a entrada.","minimum":0},"taxa_juros_mes_percent":{"type":"number","description":"Juros do contrato por mês, em porcentagem. Em 2026, financiamento de carro costuma ficar entre 1,3% e 2,5% ao mês.","minimum":0},"prazo_meses":{"type":"integer","description":"Número de parcelas do financiamento. O comum é 24, 36, 48 ou 60.","minimum":1,"maximum":120}},"required":["valor_financiado_brl","entrada_brl","taxa_juros_mes_percent","prazo_meses"],"additionalProperties":false},"outputs":{"type":"object","properties":{"parcela_brl":{"type":"number","title":"Valor da parcela","description":"Unidade: R$"},"total_pago_brl":{"type":"number","title":"Total pago","description":"Unidade: R$"},"total_juros_brl":{"type":"number","title":"Total de juros","description":"Unidade: R$"}},"required":["parcela_brl","total_pago_brl","total_juros_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/financiamento-price-sac":{"post":{"summary":"Simulador de Financiamento (Price, SAC, SAM e SAA)","description":"Compare parcela, total pago, juros e CET de um financiamento nos sistemas Price/Francês, SAC, SAM e SAA (americano), já com seguros (MIP/DFI) e taxas.","operationId":"calc_financiamento_price_sac","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_financiado":{"type":"number","description":"Quanto você vai financiar, em reais (preço menos a entrada).","minimum":0},"taxa_mensal":{"type":"number","description":"Juros ao mês do contrato. Financiamento imobiliário costuma ficar entre 0,8% e 1,2% ao mês.","minimum":0},"meses":{"type":"integer","description":"Em quantas parcelas mensais o financiamento será pago.","minimum":1},"sistema":{"type":"string","enum":["0","1","2","3"],"description":"Price/Francês (SAF) mantém a parcela fixa; SAC começa mais alta e diminui; SAM é a média dos dois; SAA paga só juros e quita o principal na última parcela."},"seguro_mip_pct":{"type":"number","description":"Seguro de Morte e Invalidez Permanente, % ao mês sobre o SALDO DEVEDOR (cai junto com o saldo). Varia muito por idade e seguradora.","minimum":0},"seguro_dfi_pct":{"type":"number","description":"Seguro de Danos Físicos ao Imóvel, % ao mês sobre o VALOR FINANCIADO (fixo todo mês).","minimum":0},"taxa_admin_brl":{"type":"number","description":"Taxa de administração fixa cobrada todo mês, em reais.","minimum":0},"outras_taxas_brl":{"type":"number","description":"Qualquer outra cobrança mensal fixa do contrato, em reais (catch-all).","minimum":0}},"required":["valor_financiado","taxa_mensal","meses","sistema","seguro_mip_pct","seguro_dfi_pct","taxa_admin_brl","outras_taxas_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"financiamento-price-sac"},"inputs":{"type":"object","properties":{"valor_financiado":{"type":"number","description":"Quanto você vai financiar, em reais (preço menos a entrada).","minimum":0},"taxa_mensal":{"type":"number","description":"Juros ao mês do contrato. Financiamento imobiliário costuma ficar entre 0,8% e 1,2% ao mês.","minimum":0},"meses":{"type":"integer","description":"Em quantas parcelas mensais o financiamento será pago.","minimum":1},"sistema":{"type":"string","enum":["0","1","2","3"],"description":"Price/Francês (SAF) mantém a parcela fixa; SAC começa mais alta e diminui; SAM é a média dos dois; SAA paga só juros e quita o principal na última parcela."},"seguro_mip_pct":{"type":"number","description":"Seguro de Morte e Invalidez Permanente, % ao mês sobre o SALDO DEVEDOR (cai junto com o saldo). Varia muito por idade e seguradora.","minimum":0},"seguro_dfi_pct":{"type":"number","description":"Seguro de Danos Físicos ao Imóvel, % ao mês sobre o VALOR FINANCIADO (fixo todo mês).","minimum":0},"taxa_admin_brl":{"type":"number","description":"Taxa de administração fixa cobrada todo mês, em reais.","minimum":0},"outras_taxas_brl":{"type":"number","description":"Qualquer outra cobrança mensal fixa do contrato, em reais (catch-all).","minimum":0}},"required":["valor_financiado","taxa_mensal","meses","sistema","seguro_mip_pct","seguro_dfi_pct","taxa_admin_brl","outras_taxas_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"parcela_inicial":{"type":"number","title":"Primeira parcela","description":"Unidade: R$"},"parcela_final":{"type":"number","title":"Última parcela","description":"Unidade: R$"},"total_pago":{"type":"number","title":"Total pago","description":"Unidade: R$"},"total_juros":{"type":"number","title":"Juros totais","description":"Unidade: R$"},"seguros_taxas_totais":{"type":"number","title":"Seguros + taxas totais","description":"Unidade: R$"},"cet_anual":{"type":"number","title":"CET ao ano","description":"Unidade: %"}},"required":["parcela_inicial","parcela_final","total_pago","total_juros","seguros_taxas_totais","cet_anual"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/folha-de-pagamento":{"post":{"summary":"Calculadora de Folha de Pagamento / Holerite CLT (2026)","description":"Monte o holerite completo do mês: salário, horas extras, adicionais, INSS, IRRF, VT, VR e pensão. Veja o líquido de 2026.","operationId":"calc_folha_de_pagamento","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário base mensal contratual, antes de horas extras, adicionais e descontos.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF — cada um abate R$ 189,59 da base de cálculo.","minimum":0},"horas_extras_qtd":{"type":"number","description":"Quantidade de horas extras trabalhadas no mês.","minimum":0},"horas_extras_pct":{"type":"number","description":"Adicional sobre o valor da hora normal: 50% em dia útil, 100% em domingo/feriado.","minimum":0},"jornada_mensal_horas":{"type":"number","description":"Horas mensais usadas como base do valor da hora (44h semanais = 220h/mês).","minimum":1},"adicional_risco":{"type":"string","enum":["nenhum","insal_10","insal_20","insal_40","peric_30"],"description":"Insalubridade (10%/20%/40%) incide sobre o salário mínimo; periculosidade (30%) sobre o salário base. São mutuamente exclusivos — escolha apenas um."},"filhos_salario_familia":{"type":"integer","description":"Filhos de até 14 anos (ou inválidos). O salário-família só é pago se a remuneração do mês ficar dentro do teto do benefício (R$ 1.980,38 em 2026).","minimum":0},"vale_transporte":{"type":"boolean","description":"Desconta 6% do salário base — o limite máximo legal da participação do empregado no VT. Se o custo real do transporte for menor, o desconto real é esse custo."},"vr_valor_mensal_brl":{"type":"number","description":"Valor total do vale-refeição/alimentação recebido no mês.","minimum":0},"vr_desconto_pct":{"type":"number","description":"Percentual do vale-refeição descontado do empregado (no PAT, em geral até 20%).","minimum":0,"maximum":100},"pensao_pct":{"type":"number","description":"Percentual de pensão alimentícia determinado judicialmente.","minimum":0,"maximum":100},"pensao_base":{"type":"string","enum":["nenhuma","bruto","liquido"],"description":"Sobre o que a pensão incide. A base sobre o líquido aqui é aproximada (bruto tributável menos INSS), pois o líquido judicial varia conforme a sentença."},"faltas_dias":{"type":"number","description":"Dias de falta sem justificativa no mês. Cada falta desconta o dia e reflete no DSR da semana.","minimum":0}},"required":["salario_bruto_brl","dependentes","horas_extras_qtd","horas_extras_pct","jornada_mensal_horas","adicional_risco","filhos_salario_familia","vale_transporte","vr_valor_mensal_brl","vr_desconto_pct","pensao_pct","pensao_base","faltas_dias"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"folha-de-pagamento"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário base mensal contratual, antes de horas extras, adicionais e descontos.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF — cada um abate R$ 189,59 da base de cálculo.","minimum":0},"horas_extras_qtd":{"type":"number","description":"Quantidade de horas extras trabalhadas no mês.","minimum":0},"horas_extras_pct":{"type":"number","description":"Adicional sobre o valor da hora normal: 50% em dia útil, 100% em domingo/feriado.","minimum":0},"jornada_mensal_horas":{"type":"number","description":"Horas mensais usadas como base do valor da hora (44h semanais = 220h/mês).","minimum":1},"adicional_risco":{"type":"string","enum":["nenhum","insal_10","insal_20","insal_40","peric_30"],"description":"Insalubridade (10%/20%/40%) incide sobre o salário mínimo; periculosidade (30%) sobre o salário base. São mutuamente exclusivos — escolha apenas um."},"filhos_salario_familia":{"type":"integer","description":"Filhos de até 14 anos (ou inválidos). O salário-família só é pago se a remuneração do mês ficar dentro do teto do benefício (R$ 1.980,38 em 2026).","minimum":0},"vale_transporte":{"type":"boolean","description":"Desconta 6% do salário base — o limite máximo legal da participação do empregado no VT. Se o custo real do transporte for menor, o desconto real é esse custo."},"vr_valor_mensal_brl":{"type":"number","description":"Valor total do vale-refeição/alimentação recebido no mês.","minimum":0},"vr_desconto_pct":{"type":"number","description":"Percentual do vale-refeição descontado do empregado (no PAT, em geral até 20%).","minimum":0,"maximum":100},"pensao_pct":{"type":"number","description":"Percentual de pensão alimentícia determinado judicialmente.","minimum":0,"maximum":100},"pensao_base":{"type":"string","enum":["nenhuma","bruto","liquido"],"description":"Sobre o que a pensão incide. A base sobre o líquido aqui é aproximada (bruto tributável menos INSS), pois o líquido judicial varia conforme a sentença."},"faltas_dias":{"type":"number","description":"Dias de falta sem justificativa no mês. Cada falta desconta o dia e reflete no DSR da semana.","minimum":0}},"required":["salario_bruto_brl","dependentes","horas_extras_qtd","horas_extras_pct","jornada_mensal_horas","adicional_risco","filhos_salario_familia","vale_transporte","vr_valor_mensal_brl","vr_desconto_pct","pensao_pct","pensao_base","faltas_dias"],"additionalProperties":false},"outputs":{"type":"object","properties":{"salario_liquido_brl":{"type":"number","title":"Salário líquido","description":"Unidade: R$"},"total_proventos_brl":{"type":"number","title":"Total de proventos","description":"Unidade: R$"},"total_descontos_brl":{"type":"number","title":"Total de descontos","description":"Unidade: R$"},"he_total_brl":{"type":"number","title":"Horas extras + DSR","description":"Unidade: R$"},"adicional_risco_brl":{"type":"number","title":"Adicional de risco","description":"Unidade: R$"},"salario_familia_brl":{"type":"number","title":"Salário-família","description":"Unidade: R$"},"inss_brl":{"type":"number","title":"Desconto de INSS","description":"Unidade: R$"},"irrf_brl":{"type":"number","title":"Desconto de IRRF","description":"Unidade: R$"},"vt_desconto_brl":{"type":"number","title":"Vale-transporte","description":"Unidade: R$"},"vr_desconto_brl":{"type":"number","title":"Vale-refeição","description":"Unidade: R$"},"pensao_brl":{"type":"number","title":"Pensão alimentícia","description":"Unidade: R$"},"faltas_desconto_brl":{"type":"number","title":"Faltas + reflexo no DSR","description":"Unidade: R$"},"fgts_mes_brl":{"type":"number","title":"FGTS do mês (informativo)","description":"Unidade: R$"}},"required":["salario_liquido_brl","total_proventos_brl","total_descontos_brl","he_total_brl","adicional_risco_brl","salario_familia_brl","inss_brl","irrf_brl","vt_desconto_brl","vr_desconto_brl","pensao_brl","faltas_desconto_brl","fgts_mes_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/folha-de-pagamento-empresario":{"post":{"summary":"Calculadora de Folha de Pagamento para o Empresário (2026)","description":"Some os encargos patronais sobre a folha dos colaboradores e o pró-labore do sócio para ver o custo mensal real da empresa.","operationId":"calc_folha_de_pagamento_empresario","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"folha_colaboradores_brl":{"type":"number","description":"Soma dos salários brutos mensais dos colaboradores CLT.","minimum":0},"inss_patronal_pct":{"type":"number","description":"Contribuição previdenciária patronal sobre a folha e sobre o pró-labore (20% no regime normal).","minimum":0},"terceiros_pct":{"type":"number","description":"Contribuições a terceiros sobre a folha (Sistema S, INCRA, salário-educação).","minimum":0},"sat_pct":{"type":"string","enum":["1","2","3"],"description":"Seguro de Acidente do Trabalho / Risco Ambiental do Trabalho sobre a folha: 1% a 3% conforme o grau de risco do CNAE."},"fgts_pct":{"type":"number","description":"Depósito mensal de FGTS sobre a folha (8%, ou 2% no contrato de aprendiz).","minimum":0},"pro_labore_brl":{"type":"number","description":"Pró-labore mensal do sócio (remuneração pela administração da empresa).","minimum":0},"pro_labore_inss_pct":{"type":"number","description":"INSS do sócio como contribuinte individual (11%, descontado do pró-labore e limitado ao teto).","minimum":0}},"required":["folha_colaboradores_brl","inss_patronal_pct","terceiros_pct","sat_pct","fgts_pct","pro_labore_brl","pro_labore_inss_pct"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"folha-de-pagamento-empresario"},"inputs":{"type":"object","properties":{"folha_colaboradores_brl":{"type":"number","description":"Soma dos salários brutos mensais dos colaboradores CLT.","minimum":0},"inss_patronal_pct":{"type":"number","description":"Contribuição previdenciária patronal sobre a folha e sobre o pró-labore (20% no regime normal).","minimum":0},"terceiros_pct":{"type":"number","description":"Contribuições a terceiros sobre a folha (Sistema S, INCRA, salário-educação).","minimum":0},"sat_pct":{"type":"string","enum":["1","2","3"],"description":"Seguro de Acidente do Trabalho / Risco Ambiental do Trabalho sobre a folha: 1% a 3% conforme o grau de risco do CNAE."},"fgts_pct":{"type":"number","description":"Depósito mensal de FGTS sobre a folha (8%, ou 2% no contrato de aprendiz).","minimum":0},"pro_labore_brl":{"type":"number","description":"Pró-labore mensal do sócio (remuneração pela administração da empresa).","minimum":0},"pro_labore_inss_pct":{"type":"number","description":"INSS do sócio como contribuinte individual (11%, descontado do pró-labore e limitado ao teto).","minimum":0}},"required":["folha_colaboradores_brl","inss_patronal_pct","terceiros_pct","sat_pct","fgts_pct","pro_labore_brl","pro_labore_inss_pct"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_total_empresa_brl":{"type":"number","title":"Custo mensal total da empresa","description":"Unidade: R$"},"encargos_folha_brl":{"type":"number","title":"Encargos sobre a folha","description":"Unidade: R$"},"inss_patronal_brl":{"type":"number","title":"INSS patronal total","description":"Unidade: R$"},"fgts_brl":{"type":"number","title":"FGTS sobre a folha","description":"Unidade: R$"},"sat_terceiros_brl":{"type":"number","title":"SAT + terceiros","description":"Unidade: R$"},"pro_labore_inss_brl":{"type":"number","title":"INSS do sócio","description":"Unidade: R$"},"pro_labore_irrf_brl":{"type":"number","title":"IRRF do pró-labore","description":"Unidade: R$"},"pro_labore_liquido_brl":{"type":"number","title":"Pró-labore líquido do sócio","description":"Unidade: R$"},"custo_pro_labore_empresa_brl":{"type":"number","title":"Custo do pró-labore para a empresa","description":"Unidade: R$"}},"required":["custo_total_empresa_brl","encargos_folha_brl","inss_patronal_brl","fgts_brl","sat_terceiros_brl","pro_labore_inss_brl","pro_labore_irrf_brl","pro_labore_liquido_brl","custo_pro_labore_empresa_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/forro-de-gesso-pvc":{"post":{"summary":"Calculadora de Forro (Gesso / PVC)","description":"Calcule quantas placas de gesso ou réguas de PVC e quanto roda-forro comprar a partir das dimensões do ambiente.","operationId":"calc_forro_de_gesso_pvc","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento do ambiente a forrar, em metros.","minimum":0},"largura_m":{"type":"number","description":"Largura do ambiente a forrar, em metros.","minimum":0},"tamanho_placa":{"type":"string","enum":["0","1"],"description":"Tipo de peça: placa de gesso quadrada ou régua de PVC."},"perda_percent":{"type":"number","description":"Margem para recortes e quebras nas bordas e cantos.","minimum":0,"maximum":100}},"required":["comprimento_m","largura_m","tamanho_placa","perda_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"forro-de-gesso-pvc"},"inputs":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento do ambiente a forrar, em metros.","minimum":0},"largura_m":{"type":"number","description":"Largura do ambiente a forrar, em metros.","minimum":0},"tamanho_placa":{"type":"string","enum":["0","1"],"description":"Tipo de peça: placa de gesso quadrada ou régua de PVC."},"perda_percent":{"type":"number","description":"Margem para recortes e quebras nas bordas e cantos.","minimum":0,"maximum":100}},"required":["comprimento_m","largura_m","tamanho_placa","perda_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"placas":{"type":"number","title":"Placas / réguas","description":"Unidade: un"},"area_m2":{"type":"number","title":"Área do forro","description":"Unidade: m²"},"area_com_perda_m2":{"type":"number","title":"Área com perda","description":"Unidade: m²"},"roda_forro_m":{"type":"number","title":"Roda-forro (perímetro)","description":"Unidade: m"}},"required":["placas","area_m2","area_com_perda_m2","roda_forro_m"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ganho-de-capital":{"post":{"summary":"Calculadora de Ganho de Capital na Venda de Imóvel (2026)","description":"Calcule o Imposto de Renda sobre o ganho de capital na venda de um imóvel ou bem por pessoa física, com as alíquotas progressivas e as principais isenções.","operationId":"calc_ganho_de_capital","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_venda_brl":{"type":"number","description":"Valor de alienação do bem (preço de venda recebido), em reais.","minimum":0},"valor_aquisicao_brl":{"type":"number","description":"Custo de aquisição do bem: o que você pagou por ele, conforme a declaração de bens.","minimum":0},"despesas_venda_brl":{"type":"number","description":"Corretagem e outras despesas dedutíveis pagas por você na venda, em reais.","minimum":0},"imovel_unico_ate_440k":{"type":"boolean","description":"Isenção do imóvel único: vale se este for o único imóvel e a venda for de até R$ 440.000, sem outra alienação de imóvel nos últimos 5 anos."},"reinvestiu_em_180_dias":{"type":"boolean","description":"Isenção do reinvestimento: venda de imóvel residencial reaplicada em outro imóvel residencial no Brasil em até 180 dias (usável 1× a cada 5 anos)."}},"required":["valor_venda_brl","valor_aquisicao_brl","despesas_venda_brl","imovel_unico_ate_440k","reinvestiu_em_180_dias"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ganho-de-capital"},"inputs":{"type":"object","properties":{"valor_venda_brl":{"type":"number","description":"Valor de alienação do bem (preço de venda recebido), em reais.","minimum":0},"valor_aquisicao_brl":{"type":"number","description":"Custo de aquisição do bem: o que você pagou por ele, conforme a declaração de bens.","minimum":0},"despesas_venda_brl":{"type":"number","description":"Corretagem e outras despesas dedutíveis pagas por você na venda, em reais.","minimum":0},"imovel_unico_ate_440k":{"type":"boolean","description":"Isenção do imóvel único: vale se este for o único imóvel e a venda for de até R$ 440.000, sem outra alienação de imóvel nos últimos 5 anos."},"reinvestiu_em_180_dias":{"type":"boolean","description":"Isenção do reinvestimento: venda de imóvel residencial reaplicada em outro imóvel residencial no Brasil em até 180 dias (usável 1× a cada 5 anos)."}},"required":["valor_venda_brl","valor_aquisicao_brl","despesas_venda_brl","imovel_unico_ate_440k","reinvestiu_em_180_dias"],"additionalProperties":false},"outputs":{"type":"object","properties":{"imposto_devido_brl":{"type":"number","title":"Imposto devido","description":"Unidade: R$"},"ganho_apuravel_brl":{"type":"number","title":"Ganho de capital apurável","description":"Unidade: R$"},"aliquota_efetiva":{"type":"number","title":"Alíquota efetiva sobre o ganho","description":"Unidade: %"},"isento":{"type":"integer","title":"Operação isenta","enum":[0,1],"description":"0 = Não, tributado; 1 = Sim, isento","x-enumLabels":{"0":"Não, tributado","1":"Sim, isento"}},"motivo_isencao":{"type":"integer","title":"Motivo da isenção","enum":[0,1,2],"description":"0 = Não isento — ganho tributado; 1 = Imóvel único até R$ 440.000; 2 = Reinvestimento residencial em 180 dias","x-enumLabels":{"0":"Não isento — ganho tributado","1":"Imóvel único até R$ 440.000","2":"Reinvestimento residencial em 180 dias"}}},"required":["imposto_devido_brl","ganho_apuravel_brl","aliquota_efetiva","isento","motivo_isencao"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/gasto-calorico-atividade":{"post":{"summary":"Calculadora de Gasto Calórico por Atividade","description":"Calcule quantas calorias você queima por atividade física a partir do seu peso, do tempo de exercício e do tipo de atividade.","operationId":"calc_gasto_calorico_atividade","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"atividade":{"type":"string","enum":["0","1","2","3","4","5","6"],"description":"O tipo de exercício define o MET (intensidade) usado no cálculo."},"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"minutos":{"type":"integer","description":"Quanto tempo durou a atividade, em minutos.","minimum":0}},"required":["atividade","peso_kg","minutos"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"gasto-calorico-atividade"},"inputs":{"type":"object","properties":{"atividade":{"type":"string","enum":["0","1","2","3","4","5","6"],"description":"O tipo de exercício define o MET (intensidade) usado no cálculo."},"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"minutos":{"type":"integer","description":"Quanto tempo durou a atividade, em minutos.","minimum":0}},"required":["atividade","peso_kg","minutos"],"additionalProperties":false},"outputs":{"type":"object","properties":{"calorias_kcal":{"type":"number","title":"Calorias gastas","description":"Unidade: kcal"},"calorias_por_minuto":{"type":"number","title":"Gasto por minuto","description":"Unidade: kcal"},"met_aplicado":{"type":"number","title":"MET aplicado"}},"required":["calorias_kcal","calorias_por_minuto","met_aplicado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/gasto-energia-aparelho":{"post":{"summary":"Calculadora de Gasto de Energia por Aparelho","description":"Descubra quanto um aparelho gasta de energia por mês a partir da potência em watts e das horas de uso.","operationId":"calc_gasto_energia_aparelho","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"potencia_w":{"type":"number","description":"Potência do aparelho em watts (W). Ex.: chuveiro 5500, geladeira 150, TV 100.","minimum":0},"horas_por_dia":{"type":"number","description":"Quantas horas por dia o aparelho fica ligado de fato.","minimum":0,"maximum":24},"dias_por_mes":{"type":"integer","description":"Em quantos dias do mês o aparelho é usado.","minimum":0,"maximum":31},"tarifa_kwh":{"type":"number","description":"Preço do kWh já com impostos. Média residencial BR 2026 ~R$0,78–0,85; edite com o da sua conta.","minimum":0}},"required":["potencia_w","horas_por_dia","dias_por_mes","tarifa_kwh"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"gasto-energia-aparelho"},"inputs":{"type":"object","properties":{"potencia_w":{"type":"number","description":"Potência do aparelho em watts (W). Ex.: chuveiro 5500, geladeira 150, TV 100.","minimum":0},"horas_por_dia":{"type":"number","description":"Quantas horas por dia o aparelho fica ligado de fato.","minimum":0,"maximum":24},"dias_por_mes":{"type":"integer","description":"Em quantos dias do mês o aparelho é usado.","minimum":0,"maximum":31},"tarifa_kwh":{"type":"number","description":"Preço do kWh já com impostos. Média residencial BR 2026 ~R$0,78–0,85; edite com o da sua conta.","minimum":0}},"required":["potencia_w","horas_por_dia","dias_por_mes","tarifa_kwh"],"additionalProperties":false},"outputs":{"type":"object","properties":{"custo_mensal":{"type":"number","title":"Gasto no mês","description":"Unidade: R$"},"consumo_kwh_mes":{"type":"number","title":"Consumo no mês","description":"Unidade: kWh"},"custo_diario":{"type":"number","title":"Gasto por dia","description":"Unidade: R$"},"custo_anual":{"type":"number","title":"Projeção anual","description":"Unidade: R$"}},"required":["custo_mensal","consumo_kwh_mes","custo_diario","custo_anual"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/hora-extra":{"post":{"summary":"Calculadora de Hora Extra (2026)","description":"Calcule o valor das horas extras com adicional de 50% ou 100% sobre o valor da hora normal.","operationId":"calc_hora_extra","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário mensal que serve de base para o valor da hora.","minimum":0},"jornada_mensal_h":{"type":"number","description":"Horas mensais usadas como base do valor-hora (44h semanais = 220h/mês).","minimum":1},"horas_extras":{"type":"number","description":"Quantidade de horas extras trabalhadas no período.","minimum":0},"adicional":{"type":"number","description":"Adicional sobre a hora: 50% em dia útil, 100% em domingo/feriado.","minimum":0}},"required":["salario_bruto_brl","jornada_mensal_h","horas_extras","adicional"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"hora-extra"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário mensal que serve de base para o valor da hora.","minimum":0},"jornada_mensal_h":{"type":"number","description":"Horas mensais usadas como base do valor-hora (44h semanais = 220h/mês).","minimum":1},"horas_extras":{"type":"number","description":"Quantidade de horas extras trabalhadas no período.","minimum":0},"adicional":{"type":"number","description":"Adicional sobre a hora: 50% em dia útil, 100% em domingo/feriado.","minimum":0}},"required":["salario_bruto_brl","jornada_mensal_h","horas_extras","adicional"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_extras_brl":{"type":"number","title":"Total das horas extras","description":"Unidade: R$"},"valor_hora_brl":{"type":"number","title":"Valor da hora normal","description":"Unidade: R$"},"valor_hora_extra_brl":{"type":"number","title":"Valor da hora extra","description":"Unidade: R$"}},"required":["valor_extras_brl","valor_hora_brl","valor_hora_extra_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/horas-entre-horarios":{"post":{"summary":"Calculadora de Horas entre Horários","description":"Calcule a duração entre um horário inicial e final, somando a jornada e descontando o intervalo.","operationId":"calc_horas_entre_horarios","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hora_inicio":{"type":"integer","description":"Hora cheia de início, de 0 a 23.","minimum":0,"maximum":23},"minuto_inicio":{"type":"integer","description":"Minutos do horário de início, de 0 a 59.","minimum":0,"maximum":59},"hora_fim":{"type":"integer","description":"Hora cheia de término, de 0 a 23.","minimum":0,"maximum":23},"minuto_fim":{"type":"integer","description":"Minutos do horário de término, de 0 a 59.","minimum":0,"maximum":59},"intervalo_min":{"type":"integer","description":"Intervalo ou almoço a descontar, em minutos.","minimum":0}},"required":["hora_inicio","minuto_inicio","hora_fim","minuto_fim","intervalo_min"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"horas-entre-horarios"},"inputs":{"type":"object","properties":{"hora_inicio":{"type":"integer","description":"Hora cheia de início, de 0 a 23.","minimum":0,"maximum":23},"minuto_inicio":{"type":"integer","description":"Minutos do horário de início, de 0 a 59.","minimum":0,"maximum":59},"hora_fim":{"type":"integer","description":"Hora cheia de término, de 0 a 23.","minimum":0,"maximum":23},"minuto_fim":{"type":"integer","description":"Minutos do horário de término, de 0 a 59.","minimum":0,"maximum":59},"intervalo_min":{"type":"integer","description":"Intervalo ou almoço a descontar, em minutos.","minimum":0}},"required":["hora_inicio","minuto_inicio","hora_fim","minuto_fim","intervalo_min"],"additionalProperties":false},"outputs":{"type":"object","properties":{"horas_decimais":{"type":"number","title":"Duração (horas decimais)","description":"Unidade: h"},"horas":{"type":"number","title":"Horas","description":"Unidade: h"},"minutos":{"type":"number","title":"Minutos","description":"Unidade: min"}},"required":["horas_decimais","horas","minutos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/idade-do-pet-em-anos-humanos":{"post":{"summary":"Calculadora de Idade do Pet em Anos Humanos","description":"Converta a idade do seu cão (por porte) ou gato para anos humanos usando a curva etária real, não a regra dos 7.","operationId":"calc_idade_do_pet_em_anos_humanos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idade_anos":{"type":"number","description":"Idade atual do cão ou gato em anos (use frações, ex.: 0,5 para 6 meses).","minimum":0},"especie":{"type":"string","enum":["0","1"],"description":"O porte só afeta o cálculo para cães; gatos usam +4/ano."},"porte":{"type":"string","enum":["0","1","2"],"description":"Cães grandes envelhecem mais rápido. Ignorado quando a espécie é gato."}},"required":["idade_anos","especie","porte"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"idade-do-pet-em-anos-humanos"},"inputs":{"type":"object","properties":{"idade_anos":{"type":"number","description":"Idade atual do cão ou gato em anos (use frações, ex.: 0,5 para 6 meses).","minimum":0},"especie":{"type":"string","enum":["0","1"],"description":"O porte só afeta o cálculo para cães; gatos usam +4/ano."},"porte":{"type":"string","enum":["0","1","2"],"description":"Cães grandes envelhecem mais rápido. Ignorado quando a espécie é gato."}},"required":["idade_anos","especie","porte"],"additionalProperties":false},"outputs":{"type":"object","properties":{"idade_humana_anos":{"type":"number","title":"Idade em anos humanos","description":"Unidade: anos"}},"required":["idade_humana_anos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/idade-exata":{"post":{"summary":"Calculadora de Idade","description":"Descubra sua idade exata em anos, meses e dias a partir da data de nascimento.","operationId":"calc_idade_exata","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_nascimento":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Sua data de nascimento (AAAA-MM-DD)."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data usada como 'hoje' no cálculo. A página preenche sozinha."}},"required":["data_nascimento","data_referencia"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"idade-exata"},"inputs":{"type":"object","properties":{"data_nascimento":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Sua data de nascimento (AAAA-MM-DD)."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data usada como 'hoje' no cálculo. A página preenche sozinha."}},"required":["data_nascimento","data_referencia"],"additionalProperties":false},"outputs":{"type":"object","properties":{"anos":{"type":"number","title":"Anos","description":"Unidade: anos"},"meses":{"type":"number","title":"Meses","description":"Unidade: meses"},"dias":{"type":"number","title":"Dias","description":"Unidade: dias"},"total_dias":{"type":"number","title":"Idade em dias","description":"Unidade: dias"},"proximo_aniversario_offset_dias":{"type":"number","title":"Dias até o próximo aniversário","description":"Unidade: dias"}},"required":["anos","meses","dias","total_dias","proximo_aniversario_offset_dias"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/idade-gestacional-dpp":{"post":{"summary":"Calculadora Gestacional (IG e DPP)","description":"Descubra as semanas de gestação e a data provável do parto (DPP) pela data da última menstruação, usando a regra de Naegele.","operationId":"calc_idade_gestacional_dpp","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_dum":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Primeiro dia da sua última menstruação."},"ciclo_dias":{"type":"integer","description":"Duração média do seu ciclo, em dias. O padrão de Naegele é 28.","minimum":1},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data de referência (hoje), assumida automaticamente."}},"required":["data_dum","ciclo_dias","data_referencia"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"idade-gestacional-dpp"},"inputs":{"type":"object","properties":{"data_dum":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Primeiro dia da sua última menstruação."},"ciclo_dias":{"type":"integer","description":"Duração média do seu ciclo, em dias. O padrão de Naegele é 28.","minimum":1},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data de referência (hoje), assumida automaticamente."}},"required":["data_dum","ciclo_dias","data_referencia"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dpp":{"type":"integer","title":"Data provável do parto (40 sem)","description":"Dia da época: dias inteiros desde 1970-01-01 (UTC). A página exibe a data do calendário."},"termo_inicio":{"type":"integer","title":"Início do termo (37 sem)","description":"Dia da época: dias inteiros desde 1970-01-01 (UTC). A página exibe a data do calendário."},"termo_fim":{"type":"integer","title":"Fim do termo (42 sem)","description":"Dia da época: dias inteiros desde 1970-01-01 (UTC). A página exibe a data do calendário."},"semanas":{"type":"number","title":"Semanas de gestação","description":"Unidade: semanas"},"dias_gestacao":{"type":"number","title":"Dias de gestação","description":"Unidade: dias"},"fase":{"type":"integer","title":"Fase da gestação","enum":[1,2,3,4,5],"description":"1 = 1º trimestre; 2 = 2º trimestre; 3 = 3º trimestre; 4 = A termo; 5 = Pós-termo","x-enumLabels":{"1":"1º trimestre","2":"2º trimestre","3":"3º trimestre","4":"A termo","5":"Pós-termo"}}},"required":["dpp","termo_inicio","termo_fim","semanas","dias_gestacao","fase"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/imc":{"post":{"summary":"Calculadora de IMC","description":"Calcule seu IMC dividindo o peso pela altura ao quadrado e veja a classificação da OMS e a faixa de peso saudável.","operationId":"calc_imc","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 175).","minimum":0}},"required":["peso_kg","altura_cm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"imc"},"inputs":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Seu peso corporal, em quilos.","minimum":0},"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 175).","minimum":0}},"required":["peso_kg","altura_cm"],"additionalProperties":false},"outputs":{"type":"object","properties":{"imc":{"type":"number","title":"IMC"},"faixa_codigo":{"type":"integer","title":"Faixa do IMC","enum":[0,1,2,3],"description":"0 = Abaixo do peso; 1 = Peso normal; 2 = Sobrepeso; 3 = Obesidade","x-enumLabels":{"0":"Abaixo do peso","1":"Peso normal","2":"Sobrepeso","3":"Obesidade"}},"peso_min_kg":{"type":"number","title":"Peso mínimo saudável","description":"Unidade: kg"},"peso_max_kg":{"type":"number","title":"Peso máximo saudável","description":"Unidade: kg"}},"required":["imc","faixa_codigo","peso_min_kg","peso_max_kg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/impermeabilizacao-m2":{"post":{"summary":"Calculadora de Impermeabilização","description":"Calcule quantos quilos (e litros) de impermeabilizante comprar pela área, número de demãos e consumo por m².","operationId":"calc_impermeabilizacao_m2","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área da superfície a impermeabilizar (laje, caixa d'água, box, sacada).","minimum":0},"demaos":{"type":"integer","description":"Quantas demãos serão aplicadas (cruzadas). O usual é 2 a 4.","minimum":1,"maximum":10},"consumo_kg_m2_demao":{"type":"number","description":"Consumo do produto por m² em cada demão.","minimum":0.1},"densidade_kg_litro":{"type":"number","description":"Massa por litro do produto (kg/L), para converter em litros.","minimum":0.1}},"required":["area_m2","demaos","consumo_kg_m2_demao","densidade_kg_litro"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"impermeabilizacao-m2"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área da superfície a impermeabilizar (laje, caixa d'água, box, sacada).","minimum":0},"demaos":{"type":"integer","description":"Quantas demãos serão aplicadas (cruzadas). O usual é 2 a 4.","minimum":1,"maximum":10},"consumo_kg_m2_demao":{"type":"number","description":"Consumo do produto por m² em cada demão.","minimum":0.1},"densidade_kg_litro":{"type":"number","description":"Massa por litro do produto (kg/L), para converter em litros.","minimum":0.1}},"required":["area_m2","demaos","consumo_kg_m2_demao","densidade_kg_litro"],"additionalProperties":false},"outputs":{"type":"object","properties":{"produto_kg":{"type":"number","title":"Impermeabilizante total","description":"Unidade: kg"},"produto_litros":{"type":"number","title":"Equivalente em litros","description":"Unidade: L"}},"required":["produto_kg","produto_litros"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/imposto-de-renda-2026":{"post":{"summary":"Simulador de Imposto de Renda 2026 (Declaração Anual)","description":"Simule o IRPF da declaração de 2026 (ano-calendário 2025): compara o modelo completo (deduções legais) com o desconto simplificado e mostra o saldo a pagar ou a restituir.","operationId":"calc_imposto_de_renda_2026","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rendimentos_tributaveis_brl":{"type":"number","description":"Soma anual dos rendimentos tributáveis (salários, pró-labore, aposentadoria, aluguéis), antes das deduções.","minimum":0},"inss_pago_brl":{"type":"number","description":"Contribuição oficial ao INSS recolhida no ano. Dedução integral, sem limite, no modelo completo.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes. Cada um deduz R$ 2.275,08 da base no modelo completo.","minimum":0},"despesas_educacao_brl":{"type":"number","description":"Gastos com instrução formal (titular e dependentes). Dedução limitada a R$ 3.561,50 por pessoa.","minimum":0},"despesas_saude_brl":{"type":"number","description":"Gastos médicos comprovados (titular e dependentes). Dedutíveis sem limite, mas exigem comprovante.","minimum":0},"previdencia_privada_brl":{"type":"number","description":"Aportes em PGBL/FAPI. Dedutíveis até 12% dos rendimentos tributáveis. VGBL não é dedutível.","minimum":0},"imposto_retido_brl":{"type":"number","description":"IRRF já retido ao longo do ano (informado na fonte pagadora). Abatido do imposto devido para apurar o saldo.","minimum":0}},"required":["rendimentos_tributaveis_brl","inss_pago_brl","dependentes","despesas_educacao_brl","despesas_saude_brl","previdencia_privada_brl","imposto_retido_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"imposto-de-renda-2026"},"inputs":{"type":"object","properties":{"rendimentos_tributaveis_brl":{"type":"number","description":"Soma anual dos rendimentos tributáveis (salários, pró-labore, aposentadoria, aluguéis), antes das deduções.","minimum":0},"inss_pago_brl":{"type":"number","description":"Contribuição oficial ao INSS recolhida no ano. Dedução integral, sem limite, no modelo completo.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes. Cada um deduz R$ 2.275,08 da base no modelo completo.","minimum":0},"despesas_educacao_brl":{"type":"number","description":"Gastos com instrução formal (titular e dependentes). Dedução limitada a R$ 3.561,50 por pessoa.","minimum":0},"despesas_saude_brl":{"type":"number","description":"Gastos médicos comprovados (titular e dependentes). Dedutíveis sem limite, mas exigem comprovante.","minimum":0},"previdencia_privada_brl":{"type":"number","description":"Aportes em PGBL/FAPI. Dedutíveis até 12% dos rendimentos tributáveis. VGBL não é dedutível.","minimum":0},"imposto_retido_brl":{"type":"number","description":"IRRF já retido ao longo do ano (informado na fonte pagadora). Abatido do imposto devido para apurar o saldo.","minimum":0}},"required":["rendimentos_tributaveis_brl","inss_pago_brl","dependentes","despesas_educacao_brl","despesas_saude_brl","previdencia_privada_brl","imposto_retido_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"imposto_devido_brl":{"type":"number","title":"Imposto devido","description":"Unidade: R$"},"saldo_a_pagar_ou_restituir_brl":{"type":"number","title":"Saldo a pagar (+) ou a restituir (−)","description":"Unidade: R$"},"aliquota_efetiva":{"type":"number","title":"Alíquota efetiva","description":"Unidade: %"},"modelo_recomendado":{"type":"integer","title":"Modelo recomendado","enum":[0,1],"description":"0 = Desconto simplificado; 1 = Deduções legais (completa)","x-enumLabels":{"0":"Desconto simplificado","1":"Deduções legais (completa)"}},"base_calculo_brl":{"type":"number","title":"Base de cálculo","description":"Unidade: R$"},"deducoes_aplicadas_brl":{"type":"number","title":"Deduções aplicadas","description":"Unidade: R$"}},"required":["imposto_devido_brl","saldo_a_pagar_ou_restituir_brl","aliquota_efetiva","modelo_recomendado","base_calculo_brl","deducoes_aplicadas_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/imposto-renda-aluguel":{"post":{"summary":"Imposto de Renda sobre Aluguel (Carnê-Leão 2026)","description":"Calcule o IR mensal sobre o aluguel recebido de pessoa física (carnê-leão), descontando comissão da imobiliária, IPTU e condomínio quando pagos pelo locador.","operationId":"calc_imposto_renda_aluguel","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"aluguel_mensal_brl":{"type":"number","description":"Valor cheio do aluguel recebido no mês, antes de qualquer dedução, em reais.","minimum":0},"comissao_imobiliaria_brl":{"type":"number","description":"Taxa de administração/intermediação paga à imobiliária pelo locador. Dedutível só se for ônus seu, não do inquilino.","minimum":0},"iptu_brl":{"type":"number","description":"Parcela mensal do IPTU paga por você (locador). Se o contrato repassa o IPTU ao inquilino, não é dedutível.","minimum":0},"condominio_brl":{"type":"number","description":"Condomínio pago por você (locador). Se quem paga é o inquilino, não entra na dedução.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes para o IR — cada um abate R$ 189,59 da base de cálculo mensal.","minimum":0}},"required":["aluguel_mensal_brl","comissao_imobiliaria_brl","iptu_brl","condominio_brl","dependentes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"imposto-renda-aluguel"},"inputs":{"type":"object","properties":{"aluguel_mensal_brl":{"type":"number","description":"Valor cheio do aluguel recebido no mês, antes de qualquer dedução, em reais.","minimum":0},"comissao_imobiliaria_brl":{"type":"number","description":"Taxa de administração/intermediação paga à imobiliária pelo locador. Dedutível só se for ônus seu, não do inquilino.","minimum":0},"iptu_brl":{"type":"number","description":"Parcela mensal do IPTU paga por você (locador). Se o contrato repassa o IPTU ao inquilino, não é dedutível.","minimum":0},"condominio_brl":{"type":"number","description":"Condomínio pago por você (locador). Se quem paga é o inquilino, não entra na dedução.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes para o IR — cada um abate R$ 189,59 da base de cálculo mensal.","minimum":0}},"required":["aluguel_mensal_brl","comissao_imobiliaria_brl","iptu_brl","condominio_brl","dependentes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"imposto_mensal_brl":{"type":"number","title":"IR mensal (carnê-leão)","description":"Unidade: R$"},"base_tributavel_brl":{"type":"number","title":"Base tributável","description":"Unidade: R$"},"despesas_dedutiveis_brl":{"type":"number","title":"Despesas dedutíveis","description":"Unidade: R$"},"aliquota_efetiva":{"type":"number","title":"Alíquota efetiva sobre o aluguel","description":"Unidade: %"}},"required":["imposto_mensal_brl","base_tributavel_brl","despesas_dedutiveis_brl","aliquota_efetiva"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/inclinacao-de-telhado":{"post":{"summary":"Calculadora de Inclinação de Telhado","description":"Converta o caimento do telhado de % para graus e calcule a altura da cumeeira e o comprimento de cada água pelo vão.","operationId":"calc_inclinacao_de_telhado","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"caimento_percent":{"type":"number","description":"Inclinação do telhado em porcentagem.","minimum":0,"maximum":200},"largura_vao_m":{"type":"number","description":"Largura total do telhado (vão a vencer), considerando duas águas simétricas.","minimum":0}},"required":["caimento_percent","largura_vao_m"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"inclinacao-de-telhado"},"inputs":{"type":"object","properties":{"caimento_percent":{"type":"number","description":"Inclinação do telhado em porcentagem.","minimum":0,"maximum":200},"largura_vao_m":{"type":"number","description":"Largura total do telhado (vão a vencer), considerando duas águas simétricas.","minimum":0}},"required":["caimento_percent","largura_vao_m"],"additionalProperties":false},"outputs":{"type":"object","properties":{"inclinacao_graus":{"type":"number","title":"Inclinação em graus","description":"Unidade: °"},"altura_cumeeira_m":{"type":"number","title":"Altura da cumeeira","description":"Unidade: m"},"comprimento_agua_m":{"type":"number","title":"Comprimento de cada água","description":"Unidade: m"}},"required":["inclinacao_graus","altura_cumeeira_m","comprimento_agua_m"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/inss-autonomo":{"post":{"summary":"Calculadora de INSS Autônomo / Contribuinte Individual (2026)","description":"Calcule a contribuição mensal do INSS para autônomo, MEI e facultativo nos planos de 20%, 11% e 5% sobre a base de contribuição.","operationId":"calc_inss_autonomo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_contribuicao_brl":{"type":"number","description":"Valor sobre o qual você quer contribuir, em reais. É limitado entre o salário mínimo e o teto do INSS.","minimum":0},"plano":{"type":"string","enum":["0","1","2"],"description":"20% dá direito à aposentadoria por tempo de contribuição; 11% e 5% recolhem só sobre o salário mínimo."},"salario_minimo_brl":{"type":"number","description":"Salário mínimo de referência (piso da base de contribuição).","minimum":0},"teto_inss_brl":{"type":"number","description":"Teto previdenciário (limite máximo da base de contribuição).","minimum":0}},"required":["salario_contribuicao_brl","plano","salario_minimo_brl","teto_inss_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"inss-autonomo"},"inputs":{"type":"object","properties":{"salario_contribuicao_brl":{"type":"number","description":"Valor sobre o qual você quer contribuir, em reais. É limitado entre o salário mínimo e o teto do INSS.","minimum":0},"plano":{"type":"string","enum":["0","1","2"],"description":"20% dá direito à aposentadoria por tempo de contribuição; 11% e 5% recolhem só sobre o salário mínimo."},"salario_minimo_brl":{"type":"number","description":"Salário mínimo de referência (piso da base de contribuição).","minimum":0},"teto_inss_brl":{"type":"number","description":"Teto previdenciário (limite máximo da base de contribuição).","minimum":0}},"required":["salario_contribuicao_brl","plano","salario_minimo_brl","teto_inss_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"contribuicao_brl":{"type":"number","title":"Contribuição mensal","description":"Unidade: R$"},"contribuicao_anual_brl":{"type":"number","title":"Contribuição anual","description":"Unidade: R$"},"aliquota_aplicada":{"type":"number","title":"Alíquota do plano","description":"Unidade: %"},"base_efetiva_brl":{"type":"number","title":"Base efetiva","description":"Unidade: R$"}},"required":["contribuicao_brl","contribuicao_anual_brl","aliquota_aplicada","base_efetiva_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ipva-estimado":{"post":{"summary":"Calculadora de IPVA Estimado","description":"Estime o IPVA do seu veículo aplicando a alíquota do estado sobre o valor venal (tabela FIPE).","operationId":"calc_ipva_estimado","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_venal_brl":{"type":"number","description":"Valor venal do veículo, normalmente o preço da tabela FIPE para o modelo e ano.","minimum":0},"aliquota_percent":{"type":"number","description":"Alíquota de IPVA da sua UF. Carro de passeio fica em torno de 4% (SP, MG), motos ~2%; varia de 1% a 4% por estado.","minimum":0,"maximum":100},"desconto_cota_unica_percent":{"type":"number","description":"Desconto oferecido pelo estado para pagamento em cota única, se houver (alguns estados dão 3% a 6%).","minimum":0,"maximum":100}},"required":["valor_venal_brl","aliquota_percent","desconto_cota_unica_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ipva-estimado"},"inputs":{"type":"object","properties":{"valor_venal_brl":{"type":"number","description":"Valor venal do veículo, normalmente o preço da tabela FIPE para o modelo e ano.","minimum":0},"aliquota_percent":{"type":"number","description":"Alíquota de IPVA da sua UF. Carro de passeio fica em torno de 4% (SP, MG), motos ~2%; varia de 1% a 4% por estado.","minimum":0,"maximum":100},"desconto_cota_unica_percent":{"type":"number","description":"Desconto oferecido pelo estado para pagamento em cota única, se houver (alguns estados dão 3% a 6%).","minimum":0,"maximum":100}},"required":["valor_venal_brl","aliquota_percent","desconto_cota_unica_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"ipva_brl":{"type":"number","title":"IPVA estimado no ano","description":"Unidade: R$"},"ipva_cota_unica_brl":{"type":"number","title":"IPVA com desconto (cota única)","description":"Unidade: R$"},"ipva_parcela_brl":{"type":"number","title":"Valor por parcela (até 5x)","description":"Unidade: R$"}},"required":["ipva_brl","ipva_cota_unica_brl","ipva_parcela_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/irrigacao-gotejamento":{"post":{"summary":"Calculadora de Irrigação por Gotejamento","description":"Calcule quantos emissores (gotejadores) são necessários para irrigar uma área com malha quadrada de espaçamento uniforme.","operationId":"calc_irrigacao_gotejamento","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do canteiro ou jardim a ser irrigado.","minimum":0},"espacamento_emissor_cm":{"type":"number","description":"Distância entre gotejadores em malha quadrada (mesma distância na linha e entre linhas).","minimum":1}},"required":["area_m2","espacamento_emissor_cm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"irrigacao-gotejamento"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do canteiro ou jardim a ser irrigado.","minimum":0},"espacamento_emissor_cm":{"type":"number","description":"Distância entre gotejadores em malha quadrada (mesma distância na linha e entre linhas).","minimum":1}},"required":["area_m2","espacamento_emissor_cm"],"additionalProperties":false},"outputs":{"type":"object","properties":{"emissores":{"type":"number","title":"Emissores necessários","description":"Unidade: un"}},"required":["emissores"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/juros-compostos":{"post":{"summary":"Calculadora de Juros Compostos","description":"Calcule quanto um investimento rende com juros compostos a partir do valor inicial, aportes mensais, taxa e prazo.","operationId":"calc_juros_compostos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_inicial":{"type":"number","description":"Quanto você já tem aplicado hoje, em reais.","minimum":0},"aporte_mensal":{"type":"number","description":"Quanto você pretende investir todo mês, em reais.","minimum":0},"taxa_mensal":{"type":"number","description":"Rendimento por mês, em porcentagem. Use a taxa mensal, não a anual.","minimum":0},"meses":{"type":"integer","description":"Por quantos meses o dinheiro fica aplicado.","minimum":1}},"required":["valor_inicial","aporte_mensal","taxa_mensal","meses"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"juros-compostos"},"inputs":{"type":"object","properties":{"valor_inicial":{"type":"number","description":"Quanto você já tem aplicado hoje, em reais.","minimum":0},"aporte_mensal":{"type":"number","description":"Quanto você pretende investir todo mês, em reais.","minimum":0},"taxa_mensal":{"type":"number","description":"Rendimento por mês, em porcentagem. Use a taxa mensal, não a anual.","minimum":0},"meses":{"type":"integer","description":"Por quantos meses o dinheiro fica aplicado.","minimum":1}},"required":["valor_inicial","aporte_mensal","taxa_mensal","meses"],"additionalProperties":false},"outputs":{"type":"object","properties":{"montante":{"type":"number","title":"Montante final","description":"Unidade: R$"},"total_investido":{"type":"number","title":"Total investido","description":"Unidade: R$"},"total_juros":{"type":"number","title":"Juros ganhos","description":"Unidade: R$"},"rentabilidade_percent":{"type":"number","title":"Rentabilidade","description":"Unidade: %"}},"required":["montante","total_investido","total_juros","rentabilidade_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/juros-simples":{"post":{"summary":"Calculadora de Juros Simples","description":"Calcule juros simples e montante a partir do capital, da taxa e do prazo.","operationId":"calc_juros_simples","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"capital":{"type":"number","description":"O valor inicial sobre o qual os juros incidem.","minimum":0},"taxa_mensal":{"type":"number","description":"Taxa por mês, em porcentagem. Mantenha taxa e prazo no mesmo período.","minimum":0},"meses":{"type":"integer","description":"Por quantos meses o capital rende juros.","minimum":1}},"required":["capital","taxa_mensal","meses"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"juros-simples"},"inputs":{"type":"object","properties":{"capital":{"type":"number","description":"O valor inicial sobre o qual os juros incidem.","minimum":0},"taxa_mensal":{"type":"number","description":"Taxa por mês, em porcentagem. Mantenha taxa e prazo no mesmo período.","minimum":0},"meses":{"type":"integer","description":"Por quantos meses o capital rende juros.","minimum":1}},"required":["capital","taxa_mensal","meses"],"additionalProperties":false},"outputs":{"type":"object","properties":{"juros":{"type":"number","title":"Juros acumulados","description":"Unidade: R$"},"montante":{"type":"number","title":"Montante","description":"Unidade: R$"}},"required":["juros","montante"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/lei-dos-cossenos":{"post":{"summary":"Calculadora da Lei dos Cossenos","description":"Encontre o terceiro lado a partir de dois lados e o ângulo entre eles, ou um ângulo a partir dos três lados de um triângulo.","operationId":"calc_lei_dos_cossenos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"modo":{"type":"string","enum":["0","1"],"description":"Modo 0: dois lados e o ângulo entre eles. Modo 1: os três lados do triângulo."},"lado_a":{"type":"number","description":"Comprimento do lado a.","minimum":0},"lado_b":{"type":"number","description":"Comprimento do lado b.","minimum":0},"angulo_ou_lado_c":{"type":"number","description":"No modo 0, informe o ângulo C entre a e b, em graus. No modo 1, informe o lado c.","minimum":0}},"required":["modo","lado_a","lado_b","angulo_ou_lado_c"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"lei-dos-cossenos"},"inputs":{"type":"object","properties":{"modo":{"type":"string","enum":["0","1"],"description":"Modo 0: dois lados e o ângulo entre eles. Modo 1: os três lados do triângulo."},"lado_a":{"type":"number","description":"Comprimento do lado a.","minimum":0},"lado_b":{"type":"number","description":"Comprimento do lado b.","minimum":0},"angulo_ou_lado_c":{"type":"number","description":"No modo 0, informe o ângulo C entre a e b, em graus. No modo 1, informe o lado c.","minimum":0}},"required":["modo","lado_a","lado_b","angulo_ou_lado_c"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Lado c ou ângulo C (graus)"},"area_triangulo":{"type":"number","title":"Área do triângulo"}},"required":["resultado","area_triangulo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/logaritmo":{"post":{"summary":"Calculadora de Logaritmo (qualquer base)","description":"Calcula o logaritmo na base escolhida — 10 (log), e (ln) ou base livre — de um número positivo.","operationId":"calc_logaritmo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"O número do qual você quer o logaritmo. Precisa ser maior que zero.","minimum":0},"tipo_base":{"type":"string","enum":["0","1","2"],"description":"Escolha a base 10, a base e (natural) ou uma base livre informada abaixo."},"base_livre":{"type":"number","description":"Usada só quando a base é 'livre'. Precisa ser maior que zero e diferente de 1.","minimum":0}},"required":["valor","tipo_base","base_livre"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"logaritmo"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"O número do qual você quer o logaritmo. Precisa ser maior que zero.","minimum":0},"tipo_base":{"type":"string","enum":["0","1","2"],"description":"Escolha a base 10, a base e (natural) ou uma base livre informada abaixo."},"base_livre":{"type":"number","description":"Usada só quando a base é 'livre'. Precisa ser maior que zero e diferente de 1.","minimum":0}},"required":["valor","tipo_base","base_livre"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Logaritmo"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/macronutrientes":{"post":{"summary":"Calculadora de Macronutrientes","description":"Divida suas calorias diárias em gramas de proteína, carboidrato e gordura a partir da meta calórica e da porcentagem de cada macro.","operationId":"calc_macronutrientes","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calorias_kcal":{"type":"number","description":"Quantas calorias por dia você quer consumir (use sua calculadora de calorias diárias).","minimum":0},"proteina_percent":{"type":"number","description":"Parte das calorias que vem da proteína. Proteína + carboidrato + gordura deve somar 100%.","minimum":0,"maximum":100},"carbo_percent":{"type":"number","description":"Parte das calorias que vem do carboidrato. Proteína + carboidrato + gordura deve somar 100%.","minimum":0,"maximum":100},"gordura_percent":{"type":"number","description":"Parte das calorias que vem da gordura. Proteína + carboidrato + gordura deve somar 100%.","minimum":0,"maximum":100}},"required":["calorias_kcal","proteina_percent","carbo_percent","gordura_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"macronutrientes"},"inputs":{"type":"object","properties":{"calorias_kcal":{"type":"number","description":"Quantas calorias por dia você quer consumir (use sua calculadora de calorias diárias).","minimum":0},"proteina_percent":{"type":"number","description":"Parte das calorias que vem da proteína. Proteína + carboidrato + gordura deve somar 100%.","minimum":0,"maximum":100},"carbo_percent":{"type":"number","description":"Parte das calorias que vem do carboidrato. Proteína + carboidrato + gordura deve somar 100%.","minimum":0,"maximum":100},"gordura_percent":{"type":"number","description":"Parte das calorias que vem da gordura. Proteína + carboidrato + gordura deve somar 100%.","minimum":0,"maximum":100}},"required":["calorias_kcal","proteina_percent","carbo_percent","gordura_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"proteina_g":{"type":"number","title":"Proteína por dia","description":"Unidade: g"},"carbo_g":{"type":"number","title":"Carboidrato por dia","description":"Unidade: g"},"gordura_g":{"type":"number","title":"Gordura por dia","description":"Unidade: g"}},"required":["proteina_g","carbo_g","gordura_g"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/margem-de-lucro-markup":{"post":{"summary":"Calculadora de Margem de Lucro e Markup","description":"Calcule a margem de lucro, o markup e o lucro por unidade a partir do custo e do preço de venda.","operationId":"calc_margem_de_lucro_markup","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"custo":{"type":"number","description":"Quanto você paga pelo produto ou serviço, em reais.","minimum":0},"preco_venda":{"type":"number","description":"Preço pelo qual você vende, em reais.","minimum":0}},"required":["custo","preco_venda"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"margem-de-lucro-markup"},"inputs":{"type":"object","properties":{"custo":{"type":"number","description":"Quanto você paga pelo produto ou serviço, em reais.","minimum":0},"preco_venda":{"type":"number","description":"Preço pelo qual você vende, em reais.","minimum":0}},"required":["custo","preco_venda"],"additionalProperties":false},"outputs":{"type":"object","properties":{"margem":{"type":"number","title":"Margem de lucro","description":"Unidade: %"},"markup":{"type":"number","title":"Markup","description":"Unidade: %"},"lucro":{"type":"number","title":"Lucro por unidade","description":"Unidade: R$"}},"required":["margem","markup","lucro"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/media-ponderada":{"post":{"summary":"Calculadora de Média Ponderada","description":"Calcula a média ponderada de até quatro notas, cada uma multiplicada pelo seu peso e dividida pela soma dos pesos.","operationId":"calc_media_ponderada","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nota1":{"type":"number","description":"Primeira nota.","minimum":0},"peso1":{"type":"number","description":"Quanto a nota 1 pesa no total. Use 0 para ignorar esta linha.","minimum":0},"nota2":{"type":"number","description":"Segunda nota.","minimum":0},"peso2":{"type":"number","description":"Quanto a nota 2 pesa no total. Use 0 para ignorar esta linha.","minimum":0},"nota3":{"type":"number","description":"Terceira nota. Deixe nota e peso em 0 para ignorar.","minimum":0},"peso3":{"type":"number","description":"Peso da nota 3. Use 0 para ignorar esta linha.","minimum":0},"nota4":{"type":"number","description":"Quarta nota. Deixe nota e peso em 0 para ignorar.","minimum":0},"peso4":{"type":"number","description":"Peso da nota 4. Use 0 para ignorar esta linha.","minimum":0}},"required":["nota1","peso1","nota2","peso2","nota3","peso3","nota4","peso4"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"media-ponderada"},"inputs":{"type":"object","properties":{"nota1":{"type":"number","description":"Primeira nota.","minimum":0},"peso1":{"type":"number","description":"Quanto a nota 1 pesa no total. Use 0 para ignorar esta linha.","minimum":0},"nota2":{"type":"number","description":"Segunda nota.","minimum":0},"peso2":{"type":"number","description":"Quanto a nota 2 pesa no total. Use 0 para ignorar esta linha.","minimum":0},"nota3":{"type":"number","description":"Terceira nota. Deixe nota e peso em 0 para ignorar.","minimum":0},"peso3":{"type":"number","description":"Peso da nota 3. Use 0 para ignorar esta linha.","minimum":0},"nota4":{"type":"number","description":"Quarta nota. Deixe nota e peso em 0 para ignorar.","minimum":0},"peso4":{"type":"number","description":"Peso da nota 4. Use 0 para ignorar esta linha.","minimum":0}},"required":["nota1","peso1","nota2","peso2","nota3","peso3","nota4","peso4"],"additionalProperties":false},"outputs":{"type":"object","properties":{"media":{"type":"number","title":"Média ponderada"},"soma_pesos":{"type":"number","title":"Soma dos pesos"}},"required":["media","soma_pesos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/medidas-culinarias-xicara-grama":{"post":{"summary":"Conversor de Medidas Culinárias (Xícara e Colher para Gramas e ml)","description":"Converta xícaras e colheres em gramas e mililitros por ingrediente: farinha, açúcar, manteiga, leite, arroz e cacau.","operationId":"calc_medidas_culinarias_xicara_grama","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quantidade":{"type":"number","description":"Quantas medidas (ex.: 2 xícaras, 3 colheres). Frações valem: 0,5 = meia.","minimum":0},"medida":{"type":"string","enum":["0","1","2"],"description":"Padrão brasileiro: xícara 240 ml, colher de sopa 15 ml, colher de chá 5 ml."},"ingrediente":{"type":"string","enum":["0","1","2","3","4","5","6"],"description":"A densidade muda o peso: a mesma xícara pesa diferente para cada ingrediente."}},"required":["quantidade","medida","ingrediente"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"medidas-culinarias-xicara-grama"},"inputs":{"type":"object","properties":{"quantidade":{"type":"number","description":"Quantas medidas (ex.: 2 xícaras, 3 colheres). Frações valem: 0,5 = meia.","minimum":0},"medida":{"type":"string","enum":["0","1","2"],"description":"Padrão brasileiro: xícara 240 ml, colher de sopa 15 ml, colher de chá 5 ml."},"ingrediente":{"type":"string","enum":["0","1","2","3","4","5","6"],"description":"A densidade muda o peso: a mesma xícara pesa diferente para cada ingrediente."}},"required":["quantidade","medida","ingrediente"],"additionalProperties":false},"outputs":{"type":"object","properties":{"gramas":{"type":"number","title":"Equivalente em gramas","description":"Unidade: g"},"mililitros":{"type":"number","title":"Equivalente em ml","description":"Unidade: mL"}},"required":["gramas","mililitros"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/mmc-mdc":{"post":{"summary":"Calculadora de MMC e MDC","description":"Calcula o mínimo múltiplo comum (MMC) e o máximo divisor comum (MDC) de até 4 números inteiros.","operationId":"calc_mmc_mdc","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"num1":{"type":"integer","description":"Primeiro número inteiro positivo.","minimum":1},"num2":{"type":"integer","description":"Segundo número inteiro positivo.","minimum":1},"num3":{"type":"integer","description":"Terceiro número. Deixe 0 para ignorar.","minimum":0},"num4":{"type":"integer","description":"Quarto número. Deixe 0 para ignorar.","minimum":0}},"required":["num1","num2","num3","num4"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"mmc-mdc"},"inputs":{"type":"object","properties":{"num1":{"type":"integer","description":"Primeiro número inteiro positivo.","minimum":1},"num2":{"type":"integer","description":"Segundo número inteiro positivo.","minimum":1},"num3":{"type":"integer","description":"Terceiro número. Deixe 0 para ignorar.","minimum":0},"num4":{"type":"integer","description":"Quarto número. Deixe 0 para ignorar.","minimum":0}},"required":["num1","num2","num3","num4"],"additionalProperties":false},"outputs":{"type":"object","properties":{"mmc":{"type":"number","title":"MMC (mínimo múltiplo comum)"},"mdc":{"type":"number","title":"MDC (máximo divisor comum)"}},"required":["mmc","mdc"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/mudas-por-m2":{"post":{"summary":"Calculadora de Mudas por m²","description":"Calcule quantas mudas são necessárias para cobrir uma área a partir do espaçamento em malha quadrada.","operationId":"calc_mudas_por_m2","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do canteiro ou maciço a ser coberto por mudas.","minimum":0},"espacamento_cm":{"type":"number","description":"Distância entre mudas em malha quadrada (igual nas duas direções).","minimum":1}},"required":["area_m2","espacamento_cm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"mudas-por-m2"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do canteiro ou maciço a ser coberto por mudas.","minimum":0},"espacamento_cm":{"type":"number","description":"Distância entre mudas em malha quadrada (igual nas duas direções).","minimum":1}},"required":["area_m2","espacamento_cm"],"additionalProperties":false},"outputs":{"type":"object","properties":{"mudas":{"type":"number","title":"Mudas necessárias","description":"Unidade: mudas"}},"required":["mudas"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/nota-para-passar":{"post":{"summary":"Calculadora de Nota para Passar","description":"Descubra quanto você precisa tirar na prova final para fechar a média e ser aprovado, a partir da média que já tem.","operationId":"calc_nota_para_passar","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"media_atual":{"type":"number","description":"A média que você já acumulou até agora (de 0 a 10).","minimum":0,"maximum":10},"peso_atual":{"type":"number","description":"Peso da média atual no total. O peso da prova final é 100 − este valor.","minimum":0,"maximum":100},"media_aprovacao":{"type":"number","description":"Média mínima exigida para aprovação.","minimum":0,"maximum":10}},"required":["media_atual","peso_atual","media_aprovacao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"nota-para-passar"},"inputs":{"type":"object","properties":{"media_atual":{"type":"number","description":"A média que você já acumulou até agora (de 0 a 10).","minimum":0,"maximum":10},"peso_atual":{"type":"number","description":"Peso da média atual no total. O peso da prova final é 100 − este valor.","minimum":0,"maximum":100},"media_aprovacao":{"type":"number","description":"Média mínima exigida para aprovação.","minimum":0,"maximum":10}},"required":["media_atual","peso_atual","media_aprovacao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"nota_necessaria":{"type":"number","title":"Nota mínima na prova final"},"nota_maxima_possivel":{"type":"number","title":"Maior média possível"},"situacao_codigo":{"type":"integer","title":"Situação","enum":[0,1,2],"description":"0 = Já aprovado; 1 = Possível; 2 = Impossível","x-enumLabels":{"0":"Já aprovado","1":"Possível","2":"Impossível"}}},"required":["nota_necessaria","nota_maxima_possivel","situacao_codigo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/notacao-cientifica":{"post":{"summary":"Calculadora de Notação Científica","description":"Converte um número para notação científica, devolvendo a mantissa (coeficiente) e o expoente de base 10.","operationId":"calc_notacao_cientifica","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"number","description":"O número a converter — pode ser muito grande, muito pequeno, positivo ou negativo."}},"required":["numero"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"notacao-cientifica"},"inputs":{"type":"object","properties":{"numero":{"type":"number","description":"O número a converter — pode ser muito grande, muito pequeno, positivo ou negativo."}},"required":["numero"],"additionalProperties":false},"outputs":{"type":"object","properties":{"mantissa":{"type":"number","title":"Mantissa (m)"},"expoente":{"type":"number","title":"Expoente (potência de 10)"}},"required":["mantissa","expoente"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/operacoes-com-fracoes":{"post":{"summary":"Calculadora de Operações com Frações","description":"Soma, subtrai, multiplica ou divide duas frações e devolve o resultado já simplificado.","operationId":"calc_operacoes_com_fracoes","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"num1":{"type":"integer","description":"Número de cima da primeira fração."},"den1":{"type":"integer","description":"Número de baixo da primeira fração. Não pode ser zero."},"num2":{"type":"integer","description":"Número de cima da segunda fração. Não pode ser zero ao dividir."},"den2":{"type":"integer","description":"Número de baixo da segunda fração. Não pode ser zero."},"operacao":{"type":"string","enum":["0","1","2","3"],"description":"Operação aplicada entre a 1ª e a 2ª fração."}},"required":["num1","den1","num2","den2","operacao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"operacoes-com-fracoes"},"inputs":{"type":"object","properties":{"num1":{"type":"integer","description":"Número de cima da primeira fração."},"den1":{"type":"integer","description":"Número de baixo da primeira fração. Não pode ser zero."},"num2":{"type":"integer","description":"Número de cima da segunda fração. Não pode ser zero ao dividir."},"den2":{"type":"integer","description":"Número de baixo da segunda fração. Não pode ser zero."},"operacao":{"type":"string","enum":["0","1","2","3"],"description":"Operação aplicada entre a 1ª e a 2ª fração."}},"required":["num1","den1","num2","den2","operacao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"numerador_resultado":{"type":"number","title":"Numerador do resultado"},"denominador_resultado":{"type":"number","title":"Denominador do resultado"},"decimal":{"type":"number","title":"Valor decimal"}},"required":["numerador_resultado","denominador_resultado","decimal"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/pace-de-corrida":{"post":{"summary":"Calculadora de Pace de Corrida e Tempo de Prova","description":"Converta entre pace (min/km) e velocidade (km/h) e estime o tempo total para 5 km, 10 km, meia maratona e maratona.","operationId":"calc_pace_de_corrida","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"modo_entrada":{"type":"string","enum":["0","1"],"description":"Escolha se vai informar o pace (minutos por km) ou a velocidade (km/h)."},"pace_min":{"type":"integer","description":"Parte em minutos do seu pace (use quando o modo for pace).","minimum":0},"pace_seg":{"type":"integer","description":"Parte em segundos do seu pace, de 0 a 59 (use quando o modo for pace).","minimum":0,"maximum":59},"velocidade_kmh":{"type":"number","description":"Velocidade média em km/h (use quando o modo for velocidade).","minimum":0}},"required":["modo_entrada","pace_min","pace_seg","velocidade_kmh"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"pace-de-corrida"},"inputs":{"type":"object","properties":{"modo_entrada":{"type":"string","enum":["0","1"],"description":"Escolha se vai informar o pace (minutos por km) ou a velocidade (km/h)."},"pace_min":{"type":"integer","description":"Parte em minutos do seu pace (use quando o modo for pace).","minimum":0},"pace_seg":{"type":"integer","description":"Parte em segundos do seu pace, de 0 a 59 (use quando o modo for pace).","minimum":0,"maximum":59},"velocidade_kmh":{"type":"number","description":"Velocidade média em km/h (use quando o modo for velocidade).","minimum":0}},"required":["modo_entrada","pace_min","pace_seg","velocidade_kmh"],"additionalProperties":false},"outputs":{"type":"object","properties":{"velocidade_kmh":{"type":"number","title":"Velocidade equivalente","description":"Unidade: km/h"},"pace_segundos_km":{"type":"number","title":"Pace (segundos por km)","description":"Unidade: s"},"tempo_5k_seg":{"type":"number","title":"Tempo nos 5 km","description":"Unidade: s"},"tempo_10k_seg":{"type":"number","title":"Tempo nos 10 km","description":"Unidade: s"},"tempo_21k_seg":{"type":"number","title":"Tempo na meia maratona","description":"Unidade: s"},"tempo_42k_seg":{"type":"number","title":"Tempo na maratona","description":"Unidade: s"}},"required":["velocidade_kmh","pace_segundos_km","tempo_5k_seg","tempo_10k_seg","tempo_21k_seg","tempo_42k_seg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/parcelamento-com-juros":{"post":{"summary":"Calculadora de Parcelamento com Juros","description":"Veja o valor de cada parcela, quanto você paga a mais em reais e em % ao parcelar uma compra com juros.","operationId":"calc_parcelamento_com_juros","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_a_vista":{"type":"number","description":"Quanto a compra custa pagando à vista, sem juros.","minimum":0},"taxa_mensal":{"type":"number","description":"Juros ao mês do parcelamento. Cartão e lojas costumam cobrar de 2% a 8% ao mês.","minimum":0},"parcelas":{"type":"integer","description":"Em quantas vezes você vai parcelar.","minimum":1}},"required":["valor_a_vista","taxa_mensal","parcelas"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"parcelamento-com-juros"},"inputs":{"type":"object","properties":{"valor_a_vista":{"type":"number","description":"Quanto a compra custa pagando à vista, sem juros.","minimum":0},"taxa_mensal":{"type":"number","description":"Juros ao mês do parcelamento. Cartão e lojas costumam cobrar de 2% a 8% ao mês.","minimum":0},"parcelas":{"type":"integer","description":"Em quantas vezes você vai parcelar.","minimum":1}},"required":["valor_a_vista","taxa_mensal","parcelas"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_parcela":{"type":"number","title":"Valor da parcela","description":"Unidade: R$"},"total_pago":{"type":"number","title":"Total parcelado","description":"Unidade: R$"},"juros_pagos":{"type":"number","title":"Juros pagos","description":"Unidade: R$"},"taxa_total_percent":{"type":"number","title":"Acréscimo total","description":"Unidade: %"}},"required":["valor_parcela","total_pago","juros_pagos","taxa_total_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/payback-energia-solar":{"post":{"summary":"Calculadora de Payback de Energia Solar","description":"Estime em quantos meses o investimento em energia solar se paga pela economia mensal na conta de luz.","operationId":"calc_payback_energia_solar","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investimento":{"type":"number","description":"Valor total investido no sistema solar (painéis, inversor, instalação).","minimum":0},"economia_mensal":{"type":"number","description":"Quanto você deixa de pagar por mês na conta de luz depois de instalar o sistema.","minimum":0},"reajuste_anual_energia":{"type":"number","description":"Aumento anual estimado da tarifa de energia. Eleva a economia ano a ano na projeção de 10 anos.","minimum":0}},"required":["investimento","economia_mensal","reajuste_anual_energia"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"payback-energia-solar"},"inputs":{"type":"object","properties":{"investimento":{"type":"number","description":"Valor total investido no sistema solar (painéis, inversor, instalação).","minimum":0},"economia_mensal":{"type":"number","description":"Quanto você deixa de pagar por mês na conta de luz depois de instalar o sistema.","minimum":0},"reajuste_anual_energia":{"type":"number","description":"Aumento anual estimado da tarifa de energia. Eleva a economia ano a ano na projeção de 10 anos.","minimum":0}},"required":["investimento","economia_mensal","reajuste_anual_energia"],"additionalProperties":false},"outputs":{"type":"object","properties":{"payback_meses":{"type":"number","title":"Payback em meses","description":"Unidade: meses"},"payback_anos":{"type":"number","title":"Payback em anos","description":"Unidade: anos"},"economia_10_anos":{"type":"number","title":"Economia em 10 anos","description":"Unidade: R$"},"roi_10_anos":{"type":"number","title":"Retorno em 10 anos","description":"Unidade: %"}},"required":["payback_meses","payback_anos","economia_10_anos","roi_10_anos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/pedras-decorativas-por-area":{"post":{"summary":"Calculadora de Pedras Decorativas por m²","description":"Calcule quantos quilos, sacos e toneladas de pedras decorativas (seixo, brita ou pedrisco) comprar para cobrir o jardim na espessura desejada.","operationId":"calc_pedras_decorativas_por_area","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do jardim ou caminho que receberá as pedras, em metros quadrados.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura da camada de pedras, em centímetros.","minimum":0},"densidade_kg_m3":{"type":"number","description":"Densidade aparente do material em kg/m³.","minimum":1},"peso_saco_kg":{"type":"number","description":"Peso de cada saco comercial de pedra.","minimum":1}},"required":["area_m2","espessura_cm","densidade_kg_m3","peso_saco_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"pedras-decorativas-por-area"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do jardim ou caminho que receberá as pedras, em metros quadrados.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura da camada de pedras, em centímetros.","minimum":0},"densidade_kg_m3":{"type":"number","description":"Densidade aparente do material em kg/m³.","minimum":1},"peso_saco_kg":{"type":"number","description":"Peso de cada saco comercial de pedra.","minimum":1}},"required":["area_m2","espessura_cm","densidade_kg_m3","peso_saco_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"peso_kg":{"type":"number","title":"Peso total a comprar","description":"Unidade: kg"},"sacos":{"type":"number","title":"Sacos a comprar","description":"Unidade: sacos"},"peso_ton":{"type":"number","title":"Peso em toneladas","description":"Unidade: t"},"volume_m3":{"type":"number","title":"Volume de pedras","description":"Unidade: m³"}},"required":["peso_kg","sacos","peso_ton","volume_m3"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/percentual-gordura-corporal":{"post":{"summary":"Calculadora de Percentual de Gordura Corporal","description":"Estime seu percentual de gordura corporal pelas circunferências do corpo com o método US Navy, usando fita métrica.","operationId":"calc_percentual_gordura_corporal","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sexo":{"type":"string","enum":["0","1"],"description":"A fórmula é diferente para cada sexo; o quadril só entra no cálculo feminino."},"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 175).","minimum":0},"pescoco_cm":{"type":"number","description":"Meça abaixo do pomo de adão, com a fita levemente inclinada para frente.","minimum":0},"cintura_cm":{"type":"number","description":"Homens medem na altura do umbigo; mulheres, na parte mais estreita do tronco.","minimum":0},"quadril_cm":{"type":"number","description":"Apenas para mulheres: meça na parte mais larga dos quadris. Homens podem deixar em 0.","minimum":0},"peso_kg":{"type":"number","description":"Opcional: informe o peso para separar massa de gordura e massa magra. Deixe 0 para ver só o percentual.","minimum":0}},"required":["sexo","altura_cm","pescoco_cm","cintura_cm","quadril_cm","peso_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"percentual-gordura-corporal"},"inputs":{"type":"object","properties":{"sexo":{"type":"string","enum":["0","1"],"description":"A fórmula é diferente para cada sexo; o quadril só entra no cálculo feminino."},"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 175).","minimum":0},"pescoco_cm":{"type":"number","description":"Meça abaixo do pomo de adão, com a fita levemente inclinada para frente.","minimum":0},"cintura_cm":{"type":"number","description":"Homens medem na altura do umbigo; mulheres, na parte mais estreita do tronco.","minimum":0},"quadril_cm":{"type":"number","description":"Apenas para mulheres: meça na parte mais larga dos quadris. Homens podem deixar em 0.","minimum":0},"peso_kg":{"type":"number","description":"Opcional: informe o peso para separar massa de gordura e massa magra. Deixe 0 para ver só o percentual.","minimum":0}},"required":["sexo","altura_cm","pescoco_cm","cintura_cm","quadril_cm","peso_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"gordura_percent":{"type":"number","title":"Percentual de gordura","description":"Unidade: %"},"massa_gorda_kg":{"type":"number","title":"Massa de gordura","description":"Unidade: kg"},"massa_magra_kg":{"type":"number","title":"Massa magra","description":"Unidade: kg"}},"required":["gordura_percent","massa_gorda_kg","massa_magra_kg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/periodo-fertil-ovulacao":{"post":{"summary":"Calculadora de Período Fértil e Ovulação","description":"Descubra seus dias férteis e o provável dia da ovulação a partir da última menstruação e da duração do ciclo.","operationId":"calc_periodo_fertil_ovulacao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_ultima_menstruacao":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Primeiro dia da sua última menstruação (DUM)."},"ciclo_dias":{"type":"integer","description":"Número de dias do seu ciclo, do 1º dia de uma menstruação ao 1º da próxima.","minimum":1},"fase_lutea_dias":{"type":"integer","description":"Dias entre a ovulação e a próxima menstruação. É bem constante — em geral 14 dias.","minimum":1}},"required":["data_ultima_menstruacao","ciclo_dias","fase_lutea_dias"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"periodo-fertil-ovulacao"},"inputs":{"type":"object","properties":{"data_ultima_menstruacao":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Primeiro dia da sua última menstruação (DUM)."},"ciclo_dias":{"type":"integer","description":"Número de dias do seu ciclo, do 1º dia de uma menstruação ao 1º da próxima.","minimum":1},"fase_lutea_dias":{"type":"integer","description":"Dias entre a ovulação e a próxima menstruação. É bem constante — em geral 14 dias.","minimum":1}},"required":["data_ultima_menstruacao","ciclo_dias","fase_lutea_dias"],"additionalProperties":false},"outputs":{"type":"object","properties":{"ovulacao_offset_dias":{"type":"number","title":"Dias até a ovulação","description":"Unidade: dias"},"fertil_inicio_offset_dias":{"type":"number","title":"Início da janela fértil","description":"Unidade: dias"},"fertil_fim_offset_dias":{"type":"number","title":"Fim da janela fértil","description":"Unidade: dias"},"proxima_menstruacao_offset_dias":{"type":"number","title":"Dias até a próxima menstruação","description":"Unidade: dias"}},"required":["ovulacao_offset_dias","fertil_inicio_offset_dias","fertil_fim_offset_dias","proxima_menstruacao_offset_dias"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/peso-ideal":{"post":{"summary":"Calculadora de Peso Ideal","description":"Estime seu peso ideal pela altura e pelo sexo com a fórmula de Devine e veja a faixa de peso saudável da OMS.","operationId":"calc_peso_ideal","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 170).","minimum":0},"sexo":{"type":"string","enum":["0","1"],"description":"Usado apenas pela base da fórmula de Devine."}},"required":["altura_cm","sexo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"peso-ideal"},"inputs":{"type":"object","properties":{"altura_cm":{"type":"number","description":"Sua altura, em centímetros (ex.: 170).","minimum":0},"sexo":{"type":"string","enum":["0","1"],"description":"Usado apenas pela base da fórmula de Devine."}},"required":["altura_cm","sexo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"peso_ideal_kg":{"type":"number","title":"Peso ideal (Devine)","description":"Unidade: kg"},"peso_min_kg":{"type":"number","title":"Peso mínimo saudável","description":"Unidade: kg"},"peso_max_kg":{"type":"number","title":"Peso máximo saudável","description":"Unidade: kg"}},"required":["peso_ideal_kg","peso_min_kg","peso_max_kg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/piso-ceramico":{"post":{"summary":"Calculadora de Piso Cerâmico","description":"Calcule quantas caixas de piso cerâmico e quanto rejunte comprar a partir da área e do rendimento por caixa.","operationId":"calc_piso_ceramico","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do piso que receberá o revestimento cerâmico.","minimum":0},"m2_por_caixa":{"type":"number","description":"Quantos m² cada caixa de piso cobre (ex.: 2,0 m²). Veja na embalagem.","minimum":0.1}},"required":["area_m2","m2_por_caixa"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"piso-ceramico"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total do piso que receberá o revestimento cerâmico.","minimum":0},"m2_por_caixa":{"type":"number","description":"Quantos m² cada caixa de piso cobre (ex.: 2,0 m²). Veja na embalagem.","minimum":0.1}},"required":["area_m2","m2_por_caixa"],"additionalProperties":false},"outputs":{"type":"object","properties":{"caixas":{"type":"number","title":"Caixas de piso","description":"Unidade: caixas"},"area_com_perda_m2":{"type":"number","title":"Área com perda","description":"Unidade: m²"},"rejunte_kg":{"type":"number","title":"Rejunte","description":"Unidade: kg"},"margem_perda_percent":{"type":"number","title":"Margem de perda","description":"Unidade: %"}},"required":["caixas","area_com_perda_m2","rejunte_kg","margem_perda_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/piso-intertravado":{"post":{"summary":"Calculadora de Piso Intertravado","description":"Calcule quantas peças de piso intertravado e quanto m³ de areia de assentamento você precisa para a sua área.","operationId":"calc_piso_intertravado","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total de piso intertravado a ser executada.","minimum":0},"pecas_por_m2":{"type":"integer","description":"Quantidade de bloquetes por metro quadrado, conforme o modelo (ex.: 50).","minimum":1},"areia_espessura_m":{"type":"number","description":"Camada de areia de assentamento sob os bloquetes.","minimum":0}},"required":["area_m2","pecas_por_m2","areia_espessura_m"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"piso-intertravado"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total de piso intertravado a ser executada.","minimum":0},"pecas_por_m2":{"type":"integer","description":"Quantidade de bloquetes por metro quadrado, conforme o modelo (ex.: 50).","minimum":1},"areia_espessura_m":{"type":"number","description":"Camada de areia de assentamento sob os bloquetes.","minimum":0}},"required":["area_m2","pecas_por_m2","areia_espessura_m"],"additionalProperties":false},"outputs":{"type":"object","properties":{"pecas":{"type":"number","title":"Peças de piso intertravado","description":"Unidade: un"},"areia_m3":{"type":"number","title":"Areia de assentamento","description":"Unidade: m³"}},"required":["pecas","areia_m3"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/ponto-de-equilibrio":{"post":{"summary":"Calculadora de Ponto de Equilíbrio","description":"Descubra quantas unidades você precisa vender para cobrir os custos fixos, dado o preço e o custo variável por unidade.","operationId":"calc_ponto_de_equilibrio","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"custos_fixos":{"type":"number","description":"Custos que não mudam com a quantidade vendida no período (aluguel, salários, etc.).","minimum":0},"preco_unitario":{"type":"number","description":"Preço de venda de cada unidade.","minimum":0},"custo_variavel":{"type":"number","description":"Custo que acompanha cada unidade vendida (matéria-prima, comissão, embalagem).","minimum":0}},"required":["custos_fixos","preco_unitario","custo_variavel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"ponto-de-equilibrio"},"inputs":{"type":"object","properties":{"custos_fixos":{"type":"number","description":"Custos que não mudam com a quantidade vendida no período (aluguel, salários, etc.).","minimum":0},"preco_unitario":{"type":"number","description":"Preço de venda de cada unidade.","minimum":0},"custo_variavel":{"type":"number","description":"Custo que acompanha cada unidade vendida (matéria-prima, comissão, embalagem).","minimum":0}},"required":["custos_fixos","preco_unitario","custo_variavel"],"additionalProperties":false},"outputs":{"type":"object","properties":{"unidades":{"type":"number","title":"Unidades para empatar","description":"Unidade: un"},"faturamento_equilibrio":{"type":"number","title":"Faturamento no equilíbrio","description":"Unidade: R$"},"margem_contribuicao":{"type":"number","title":"Margem de contribuição unitária","description":"Unidade: R$"}},"required":["unidades","faturamento_equilibrio","margem_contribuicao"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/porcentagem":{"post":{"summary":"Calculadora de Porcentagem","description":"Calcula X% de um valor, quanto um número é de outro em %, e a variação percentual entre dois valores.","operationId":"calc_porcentagem","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_base":{"type":"number","description":"Valor de referência. Nos modos 'quanto é em %' e 'variação' deve ser diferente de zero."},"segundo_valor":{"type":"number","description":"No modo 'porcentagem de' é o percentual (ex.: 15); nos outros modos é o segundo valor."},"modo":{"type":"string","enum":["0","1","2"],"description":"Escolha o tipo de conta de porcentagem."}},"required":["valor_base","segundo_valor","modo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"porcentagem"},"inputs":{"type":"object","properties":{"valor_base":{"type":"number","description":"Valor de referência. Nos modos 'quanto é em %' e 'variação' deve ser diferente de zero."},"segundo_valor":{"type":"number","description":"No modo 'porcentagem de' é o percentual (ex.: 15); nos outros modos é o segundo valor."},"modo":{"type":"string","enum":["0","1","2"],"description":"Escolha o tipo de conta de porcentagem."}},"required":["valor_base","segundo_valor","modo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Resultado","description":"Unidade: un"}},"required":["resultado"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/prazo-final-dias":{"post":{"summary":"Calculadora de Prazo Final (dias corridos ou úteis)","description":"Some N dias corridos ou úteis a uma data inicial e descubra a data de vencimento.","operationId":"calc_prazo_final_dias","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_inicio":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A data em que a contagem do prazo começa (AAAA-MM-DD)."},"quantidade_dias":{"type":"integer","description":"Quantos dias somar à data de início.","minimum":0},"tipo_contagem":{"type":"string","enum":["0","1"],"description":"Corridos contam todos os dias; úteis pulam fins de semana e feriados nacionais."}},"required":["data_inicio","quantidade_dias","tipo_contagem"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"prazo-final-dias"},"inputs":{"type":"object","properties":{"data_inicio":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A data em que a contagem do prazo começa (AAAA-MM-DD)."},"quantidade_dias":{"type":"integer","description":"Quantos dias somar à data de início.","minimum":0},"tipo_contagem":{"type":"string","enum":["0","1"],"description":"Corridos contam todos os dias; úteis pulam fins de semana e feriados nacionais."}},"required":["data_inicio","quantidade_dias","tipo_contagem"],"additionalProperties":false},"outputs":{"type":"object","properties":{"data_final_offset_dias":{"type":"number","title":"Dias até o vencimento","description":"Unidade: dias"},"dias_corridos":{"type":"number","title":"Dias corridos equivalentes","description":"Unidade: dias"},"dias_uteis_equivalentes":{"type":"number","title":"Dias úteis equivalentes","description":"Unidade: dias úteis"}},"required":["data_final_offset_dias","dias_corridos","dias_uteis_equivalentes"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/preco-por-m2":{"post":{"summary":"Calculadora de Preço por m²","description":"Calcule o preço por metro quadrado dividindo o valor total da obra ou serviço pela área em m².","operationId":"calc_preco_por_m2","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_total_brl":{"type":"number","description":"Valor total do orçamento, obra ou serviço, em reais.","minimum":0},"area_m2":{"type":"number","description":"Área de referência em metros quadrados.","minimum":0.01}},"required":["valor_total_brl","area_m2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"preco-por-m2"},"inputs":{"type":"object","properties":{"valor_total_brl":{"type":"number","description":"Valor total do orçamento, obra ou serviço, em reais.","minimum":0},"area_m2":{"type":"number","description":"Área de referência em metros quadrados.","minimum":0.01}},"required":["valor_total_brl","area_m2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"preco_m2":{"type":"number","title":"Preço por m²","description":"Unidade: R$"}},"required":["preco_m2"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/progressao-aritmetica":{"post":{"summary":"Calculadora de Progressão Aritmética (PA)","description":"Calcula o termo geral (aₙ) e a soma dos n primeiros termos de uma PA a partir do primeiro termo e da razão.","operationId":"calc_progressao_aritmetica","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"primeiro_termo":{"type":"number","description":"O primeiro termo da sequência. Pode ser negativo ou decimal."},"razao":{"type":"number","description":"A constante somada a cada termo para obter o próximo. Pode ser negativa (PA decrescente)."},"n":{"type":"integer","description":"A posição do termo que você quer (aₙ) e quantos termos a soma considera.","minimum":1}},"required":["primeiro_termo","razao","n"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"progressao-aritmetica"},"inputs":{"type":"object","properties":{"primeiro_termo":{"type":"number","description":"O primeiro termo da sequência. Pode ser negativo ou decimal."},"razao":{"type":"number","description":"A constante somada a cada termo para obter o próximo. Pode ser negativa (PA decrescente)."},"n":{"type":"integer","description":"A posição do termo que você quer (aₙ) e quantos termos a soma considera.","minimum":1}},"required":["primeiro_termo","razao","n"],"additionalProperties":false},"outputs":{"type":"object","properties":{"termo_geral":{"type":"number","title":"Termo aₙ"},"soma":{"type":"number","title":"Soma Sₙ"}},"required":["termo_geral","soma"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/progressao-geometrica":{"post":{"summary":"Calculadora de Progressão Geométrica (PG)","description":"Calcula o termo geral (aₙ), a soma finita dos n termos e a soma infinita de uma PG a partir do primeiro termo e da razão.","operationId":"calc_progressao_geometrica","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"primeiro_termo":{"type":"number","description":"O primeiro termo da sequência. Pode ser negativo ou decimal."},"razao":{"type":"number","description":"A constante pela qual cada termo é multiplicado para obter o próximo. Com |q| < 1 a soma infinita converge."},"n":{"type":"integer","description":"A posição do termo que você quer (aₙ) e quantos termos a soma finita considera.","minimum":1}},"required":["primeiro_termo","razao","n"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"progressao-geometrica"},"inputs":{"type":"object","properties":{"primeiro_termo":{"type":"number","description":"O primeiro termo da sequência. Pode ser negativo ou decimal."},"razao":{"type":"number","description":"A constante pela qual cada termo é multiplicado para obter o próximo. Com |q| < 1 a soma infinita converge."},"n":{"type":"integer","description":"A posição do termo que você quer (aₙ) e quantos termos a soma finita considera.","minimum":1}},"required":["primeiro_termo","razao","n"],"additionalProperties":false},"outputs":{"type":"object","properties":{"termo_geral":{"type":"number","title":"Termo aₙ"},"soma_finita":{"type":"number","title":"Soma Sₙ (n termos)"},"soma_infinita":{"type":"number","title":"Soma S∞"}},"required":["termo_geral","soma_finita","soma_infinita"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/quantidade-de-grama":{"post":{"summary":"Calculadora de Quantidade de Grama","description":"Calcula quantos rolos de grama esmeralda você precisa para uma área em m², já com 10% de perda.","operationId":"calc_quantidade_de_grama","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área a cobrir","minimum":0},"area_por_rolo_m2":{"type":"number","description":"Área coberta por um rolo/placa de grama.","minimum":0.05}},"required":["area_m2","area_por_rolo_m2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"quantidade-de-grama"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área a cobrir","minimum":0},"area_por_rolo_m2":{"type":"number","description":"Área coberta por um rolo/placa de grama.","minimum":0.05}},"required":["area_m2","area_por_rolo_m2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"rolos":{"type":"number","title":"Rolos necessários","description":"Unidade: rolos"},"area_com_perda_m2":{"type":"number","title":"Área com perda","description":"Unidade: m²"},"margem_perda_percent":{"type":"number","title":"Margem de perda","description":"Unidade: %"}},"required":["rolos","area_com_perda_m2","margem_perda_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/quanto-dura-o-botijao-de-gas":{"post":{"summary":"Calculadora de Duração do Botijão de Gás (P13)","description":"Estime quantos dias o botijão de cozinha dura e o custo mensal de gás pelo uso do fogão e do forno.","operationId":"calc_quanto_dura_o_botijao_de_gas","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bocas_acesas":{"type":"number","description":"Quantas bocas do fogão ficam acesas em média ao mesmo tempo.","minimum":0},"horas_fogao_dia":{"type":"number","description":"Tempo total de uso do fogão por dia, em horas.","minimum":0},"horas_forno_dia":{"type":"number","description":"Tempo de uso do forno por dia, em horas (0 se não usa).","minimum":0},"consumo_boca_kg_h":{"type":"number","description":"Quilos de gás por hora por boca de fogão.","minimum":0},"consumo_forno_kg_h":{"type":"number","description":"Quilos de gás por hora de forno.","minimum":0},"preco_botijao":{"type":"number","description":"Quanto custa o botijão na sua região (2026, edite com o seu).","minimum":0}},"required":["bocas_acesas","horas_fogao_dia","horas_forno_dia","consumo_boca_kg_h","consumo_forno_kg_h","preco_botijao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"quanto-dura-o-botijao-de-gas"},"inputs":{"type":"object","properties":{"bocas_acesas":{"type":"number","description":"Quantas bocas do fogão ficam acesas em média ao mesmo tempo.","minimum":0},"horas_fogao_dia":{"type":"number","description":"Tempo total de uso do fogão por dia, em horas.","minimum":0},"horas_forno_dia":{"type":"number","description":"Tempo de uso do forno por dia, em horas (0 se não usa).","minimum":0},"consumo_boca_kg_h":{"type":"number","description":"Quilos de gás por hora por boca de fogão.","minimum":0},"consumo_forno_kg_h":{"type":"number","description":"Quilos de gás por hora de forno.","minimum":0},"preco_botijao":{"type":"number","description":"Quanto custa o botijão na sua região (2026, edite com o seu).","minimum":0}},"required":["bocas_acesas","horas_fogao_dia","horas_forno_dia","consumo_boca_kg_h","consumo_forno_kg_h","preco_botijao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dias_de_duracao":{"type":"number","title":"Duração do botijão","description":"Unidade: dias"},"consumo_kg_dia":{"type":"number","title":"GLP por dia","description":"Unidade: kg"},"botijoes_por_mes":{"type":"number","title":"Botijões por mês","description":"Unidade: un"},"custo_mensal":{"type":"number","title":"Gasto de gás no mês","description":"Unidade: R$"}},"required":["dias_de_duracao","consumo_kg_dia","botijoes_por_mes","custo_mensal"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/racao-diaria-para-pet":{"post":{"summary":"Calculadora de Ração para Cão e Gato","description":"Calcule a ração diária e mensal do seu pet pelo peso, quantos sacos comprar por mês e o custo mensal.","operationId":"calc_racao_diaria_para_pet","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Peso atual do cão ou gato, em quilos.","minimum":0},"especie":{"type":"string","enum":["0","1"],"description":"Cão consome mais ração por quilo que o gato."},"fase":{"type":"string","enum":["0","1"],"description":"Filhotes comem proporcionalmente mais que adultos."},"g_por_kg":{"type":"number","description":"Gramas por quilo de peso. Deixe 0 para usar a tabela por espécie e fase; informe um valor para sobrepô-la (use a recomendação da embalagem).","minimum":0},"tamanho_saco_kg":{"type":"number","description":"Peso de cada saco de ração, em quilos. Comum: 1, 3, 7,5, 10,1 ou 15 kg.","minimum":0},"preco_saco_brl":{"type":"number","description":"Preço de um saco de ração, em reais. Deixe 0 para não calcular o custo.","minimum":0}},"required":["peso_kg","especie","fase","g_por_kg","tamanho_saco_kg","preco_saco_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"racao-diaria-para-pet"},"inputs":{"type":"object","properties":{"peso_kg":{"type":"number","description":"Peso atual do cão ou gato, em quilos.","minimum":0},"especie":{"type":"string","enum":["0","1"],"description":"Cão consome mais ração por quilo que o gato."},"fase":{"type":"string","enum":["0","1"],"description":"Filhotes comem proporcionalmente mais que adultos."},"g_por_kg":{"type":"number","description":"Gramas por quilo de peso. Deixe 0 para usar a tabela por espécie e fase; informe um valor para sobrepô-la (use a recomendação da embalagem).","minimum":0},"tamanho_saco_kg":{"type":"number","description":"Peso de cada saco de ração, em quilos. Comum: 1, 3, 7,5, 10,1 ou 15 kg.","minimum":0},"preco_saco_brl":{"type":"number","description":"Preço de um saco de ração, em reais. Deixe 0 para não calcular o custo.","minimum":0}},"required":["peso_kg","especie","fase","g_por_kg","tamanho_saco_kg","preco_saco_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"racao_g_dia":{"type":"number","title":"Ração por dia","description":"Unidade: g"},"racao_kg_mes":{"type":"number","title":"Ração por mês","description":"Unidade: kg"},"sacos_por_mes":{"type":"number","title":"Sacos por mês","description":"Unidade: sacos"},"custo_mensal_brl":{"type":"number","title":"Custo no mês","description":"Unidade: R$"}},"required":["racao_g_dia","racao_kg_mes","sacos_por_mes","custo_mensal_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/radiciacao-raiz-enesima":{"post":{"summary":"Calculadora de Raiz (Quadrada, Cúbica e Enésima)","description":"Calcula a raiz de índice n de um número: raiz quadrada (n=2), cúbica (n=3) ou de qualquer índice inteiro maior que 1.","operationId":"calc_radiciacao_raiz_enesima","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"radicando":{"type":"number","description":"O número dentro da raiz. Negativo só tem raiz real quando o índice é ímpar."},"indice":{"type":"integer","description":"Inteiro ≥ 2: 2 é raiz quadrada, 3 é cúbica, 4 é quarta, etc.","minimum":2}},"required":["radicando","indice"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"radiciacao-raiz-enesima"},"inputs":{"type":"object","properties":{"radicando":{"type":"number","description":"O número dentro da raiz. Negativo só tem raiz real quando o índice é ímpar."},"indice":{"type":"integer","description":"Inteiro ≥ 2: 2 é raiz quadrada, 3 é cúbica, 4 é quarta, etc.","minimum":2}},"required":["radicando","indice"],"additionalProperties":false},"outputs":{"type":"object","properties":{"resultado":{"type":"number","title":"Raiz de índice n"},"resultado_real":{"type":"integer","title":"Raiz real existe?","enum":[0,1],"description":"0 = Não; 1 = Sim","x-enumLabels":{"0":"Não","1":"Sim"}}},"required":["resultado","resultado_real"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/rampa-de-acesso":{"post":{"summary":"Calculadora de Rampa de Acesso","description":"Calcule o comprimento e a inclinação em graus de uma rampa de acesso pelo desnível, dentro do limite acessível de 8,33% da NBR 9050.","operationId":"calc_rampa_de_acesso","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"desnivel_cm":{"type":"number","description":"Altura a vencer entre o piso de baixo e o de cima, em centímetros.","minimum":0},"inclinacao_percent":{"type":"number","description":"Inclinação desejada da rampa, em porcentagem. A NBR 9050 limita rampas acessíveis a 8,33%.","minimum":0.1,"maximum":100}},"required":["desnivel_cm","inclinacao_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"rampa-de-acesso"},"inputs":{"type":"object","properties":{"desnivel_cm":{"type":"number","description":"Altura a vencer entre o piso de baixo e o de cima, em centímetros.","minimum":0},"inclinacao_percent":{"type":"number","description":"Inclinação desejada da rampa, em porcentagem. A NBR 9050 limita rampas acessíveis a 8,33%.","minimum":0.1,"maximum":100}},"required":["desnivel_cm","inclinacao_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"comprimento_m":{"type":"number","title":"Comprimento horizontal","description":"Unidade: m"},"comprimento_real_m":{"type":"number","title":"Comprimento da rampa (superfície)","description":"Unidade: m"},"inclinacao_graus":{"type":"number","title":"Inclinação em graus","description":"Unidade: °"}},"required":["comprimento_m","comprimento_real_m","inclinacao_graus"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/regra-de-tres-composta":{"post":{"summary":"Calculadora de Regra de Três Composta","description":"Resolve uma proporção com três grandezas (duas conhecidas + a procurada) indicando se cada grandeza é direta ou inversamente proporcional.","operationId":"calc_regra_de_tres_composta","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a1":{"type":"number","description":"Valor da grandeza que você quer descobrir, na 1ª situação (linha 1)."},"b1":{"type":"number","description":"Valor da segunda grandeza na 1ª situação. Não pode ser zero."},"b2":{"type":"number","description":"Valor da segunda grandeza na 2ª situação."},"tipo_b":{"type":"string","enum":["0","1"],"description":"Direta: razão b₂/b₁. Inversa: razão invertida b₁/b₂."},"c1":{"type":"number","description":"Valor da terceira grandeza na 1ª situação. Não pode ser zero."},"c2":{"type":"number","description":"Valor da terceira grandeza na 2ª situação."},"tipo_c":{"type":"string","enum":["0","1"],"description":"Direta: razão c₂/c₁. Inversa: razão invertida c₁/c₂."}},"required":["a1","b1","b2","tipo_b","c1","c2","tipo_c"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"regra-de-tres-composta"},"inputs":{"type":"object","properties":{"a1":{"type":"number","description":"Valor da grandeza que você quer descobrir, na 1ª situação (linha 1)."},"b1":{"type":"number","description":"Valor da segunda grandeza na 1ª situação. Não pode ser zero."},"b2":{"type":"number","description":"Valor da segunda grandeza na 2ª situação."},"tipo_b":{"type":"string","enum":["0","1"],"description":"Direta: razão b₂/b₁. Inversa: razão invertida b₁/b₂."},"c1":{"type":"number","description":"Valor da terceira grandeza na 1ª situação. Não pode ser zero."},"c2":{"type":"number","description":"Valor da terceira grandeza na 2ª situação."},"tipo_c":{"type":"string","enum":["0","1"],"description":"Direta: razão c₂/c₁. Inversa: razão invertida c₁/c₂."}},"required":["a1","b1","b2","tipo_b","c1","c2","tipo_c"],"additionalProperties":false},"outputs":{"type":"object","properties":{"x":{"type":"number","title":"Valor procurado","description":"Unidade: un"},"fator":{"type":"number","title":"Fator de proporcionalidade"}},"required":["x","fator"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/regra-de-tres-simples":{"post":{"summary":"Calculadora de Regra de Três Simples","description":"Resolve a regra de três simples (A está para B assim como C está para X), direta ou inversa, achando o valor que falta.","operationId":"calc_regra_de_tres_simples","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"Primeiro valor conhecido. Na proporção direta, A é o divisor e não pode ser zero.","minimum":0},"b":{"type":"number","description":"Valor que forma par com A (A está para B)."},"c":{"type":"number","description":"Terceiro valor conhecido, que forma par com X. Na inversa, C é o divisor e não pode ser zero.","minimum":0},"tipo":{"type":"string","enum":["0","1"],"description":"Direta: X = B × C ÷ A. Inversa: X = A × B ÷ C."}},"required":["a","b","c","tipo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"regra-de-tres-simples"},"inputs":{"type":"object","properties":{"a":{"type":"number","description":"Primeiro valor conhecido. Na proporção direta, A é o divisor e não pode ser zero.","minimum":0},"b":{"type":"number","description":"Valor que forma par com A (A está para B)."},"c":{"type":"number","description":"Terceiro valor conhecido, que forma par com X. Na inversa, C é o divisor e não pode ser zero.","minimum":0},"tipo":{"type":"string","enum":["0","1"],"description":"Direta: X = B × C ÷ A. Inversa: X = A × B ÷ C."}},"required":["a","b","c","tipo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"x":{"type":"number","title":"Valor X","description":"Unidade: un"}},"required":["x"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/rendimento-cdb-poupanca":{"post":{"summary":"Calculadora de Rendimento CDB x Poupança","description":"Compare quanto rende um CDB (% do CDI) frente à poupança, já descontando o IR regressivo, e veja quanto o CDB rende a mais.","operationId":"calc_rendimento_cdb_poupanca","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor":{"type":"number","description":"Quanto você vai aplicar, em reais.","minimum":0},"meses":{"type":"integer","description":"Por quantos meses o dinheiro fica aplicado. Define a faixa do IR regressivo.","minimum":1},"cdi_anual":{"type":"number","description":"Taxa CDI/Selic ao ano. O padrão é o patamar de 2026; ajuste se quiser.","minimum":0},"percentual_cdi":{"type":"number","description":"Percentual do CDI que o CDB paga. Bancos grandes pagam ~90–100%; corretoras, 100–120%.","minimum":0},"poupanca_mensal":{"type":"number","description":"Quanto a poupança rende por mês. A regra atual é cerca de 0,5% + TR.","minimum":0}},"required":["valor","meses","cdi_anual","percentual_cdi","poupanca_mensal"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"rendimento-cdb-poupanca"},"inputs":{"type":"object","properties":{"valor":{"type":"number","description":"Quanto você vai aplicar, em reais.","minimum":0},"meses":{"type":"integer","description":"Por quantos meses o dinheiro fica aplicado. Define a faixa do IR regressivo.","minimum":1},"cdi_anual":{"type":"number","description":"Taxa CDI/Selic ao ano. O padrão é o patamar de 2026; ajuste se quiser.","minimum":0},"percentual_cdi":{"type":"number","description":"Percentual do CDI que o CDB paga. Bancos grandes pagam ~90–100%; corretoras, 100–120%.","minimum":0},"poupanca_mensal":{"type":"number","description":"Quanto a poupança rende por mês. A regra atual é cerca de 0,5% + TR.","minimum":0}},"required":["valor","meses","cdi_anual","percentual_cdi","poupanca_mensal"],"additionalProperties":false},"outputs":{"type":"object","properties":{"liquido_cdb":{"type":"number","title":"Montante líquido do CDB","description":"Unidade: R$"},"montante_poupanca":{"type":"number","title":"Montante da poupança","description":"Unidade: R$"},"ir_cdb":{"type":"number","title":"IR retido no CDB","description":"Unidade: R$"},"vantagem_cdb_brl":{"type":"number","title":"Vantagem do CDB","description":"Unidade: R$"}},"required":["liquido_cdb","montante_poupanca","ir_cdb","vantagem_cdb_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/rescisao-clt":{"post":{"summary":"Calculadora de Rescisão Trabalhista CLT (2026)","description":"Estime as verbas rescisórias (saldo, aviso prévio, 13º e férias proporcionais, multa de 40% do FGTS) por tipo de demissão.","operationId":"calc_rescisao_clt","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Último salário mensal bruto, sem descontos.","minimum":0},"tipo_demissao":{"type":"string","enum":["0","1","2","3"],"description":"Define quais verbas são devidas: aviso, multa do FGTS e proporcionais variam por tipo."},"anos_de_casa":{"type":"integer","description":"Anos completos de empresa — cada ano acrescenta 3 dias ao aviso prévio (até 90 dias).","minimum":0,"maximum":60},"meses_trabalhados_ano":{"type":"integer","description":"Meses trabalhados no ano da saída (0–12) — avos do 13º e das férias proporcionais.","minimum":0,"maximum":12},"dias_trabalhados_mes":{"type":"integer","description":"Dias trabalhados no mês em que saiu (0–30) — base do saldo de salário.","minimum":0,"maximum":30},"saldo_fgts_brl":{"type":"number","description":"Saldo atual da conta do FGTS, base da multa rescisória.","minimum":0},"ferias_vencidas":{"type":"string","enum":["0","1"],"description":"Período de férias completo já adquirido e não gozado, pago integral + 1/3 em qualquer tipo."}},"required":["salario_bruto_brl","tipo_demissao","anos_de_casa","meses_trabalhados_ano","dias_trabalhados_mes","saldo_fgts_brl","ferias_vencidas"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"rescisao-clt"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Último salário mensal bruto, sem descontos.","minimum":0},"tipo_demissao":{"type":"string","enum":["0","1","2","3"],"description":"Define quais verbas são devidas: aviso, multa do FGTS e proporcionais variam por tipo."},"anos_de_casa":{"type":"integer","description":"Anos completos de empresa — cada ano acrescenta 3 dias ao aviso prévio (até 90 dias).","minimum":0,"maximum":60},"meses_trabalhados_ano":{"type":"integer","description":"Meses trabalhados no ano da saída (0–12) — avos do 13º e das férias proporcionais.","minimum":0,"maximum":12},"dias_trabalhados_mes":{"type":"integer","description":"Dias trabalhados no mês em que saiu (0–30) — base do saldo de salário.","minimum":0,"maximum":30},"saldo_fgts_brl":{"type":"number","description":"Saldo atual da conta do FGTS, base da multa rescisória.","minimum":0},"ferias_vencidas":{"type":"string","enum":["0","1"],"description":"Período de férias completo já adquirido e não gozado, pago integral + 1/3 em qualquer tipo."}},"required":["salario_bruto_brl","tipo_demissao","anos_de_casa","meses_trabalhados_ano","dias_trabalhados_mes","saldo_fgts_brl","ferias_vencidas"],"additionalProperties":false},"outputs":{"type":"object","properties":{"total_liquido_brl":{"type":"number","title":"Total a receber","description":"Unidade: R$"},"saldo_salario_brl":{"type":"number","title":"Saldo de salário","description":"Unidade: R$"},"aviso_previo_brl":{"type":"number","title":"Aviso prévio indenizado","description":"Unidade: R$"},"decimo_proporcional_brl":{"type":"number","title":"13º proporcional","description":"Unidade: R$"},"ferias_proporcionais_brl":{"type":"number","title":"Férias proporcionais + 1/3","description":"Unidade: R$"},"multa_fgts_brl":{"type":"number","title":"Multa sobre o FGTS","description":"Unidade: R$"},"fgts_a_sacar_brl":{"type":"number","title":"FGTS a sacar (saldo + multa)","description":"Unidade: R$"}},"required":["total_liquido_brl","saldo_salario_brl","aviso_previo_brl","decimo_proporcional_brl","ferias_proporcionais_brl","multa_fgts_brl","fgts_a_sacar_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/reserva-de-emergencia":{"post":{"summary":"Calculadora de Reserva de Emergência","description":"Saiba quanto guardar de reserva de emergência e em quanto tempo atingir a meta com aportes mensais.","operationId":"calc_reserva_de_emergencia","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gasto_mensal":{"type":"number","description":"Seu custo de vida por mês, em reais.","minimum":0},"meses_cobertura":{"type":"integer","description":"Quantos meses de despesas a reserva deve cobrir.","minimum":1},"ja_guardado":{"type":"number","description":"Quanto você já tem reservado hoje, em reais.","minimum":0},"aporte_mensal":{"type":"number","description":"Quanto você consegue guardar por mês, em reais.","minimum":0}},"required":["gasto_mensal","meses_cobertura","ja_guardado","aporte_mensal"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"reserva-de-emergencia"},"inputs":{"type":"object","properties":{"gasto_mensal":{"type":"number","description":"Seu custo de vida por mês, em reais.","minimum":0},"meses_cobertura":{"type":"integer","description":"Quantos meses de despesas a reserva deve cobrir.","minimum":1},"ja_guardado":{"type":"number","description":"Quanto você já tem reservado hoje, em reais.","minimum":0},"aporte_mensal":{"type":"number","description":"Quanto você consegue guardar por mês, em reais.","minimum":0}},"required":["gasto_mensal","meses_cobertura","ja_guardado","aporte_mensal"],"additionalProperties":false},"outputs":{"type":"object","properties":{"meta":{"type":"number","title":"Reserva recomendada","description":"Unidade: R$"},"falta":{"type":"number","title":"Quanto falta","description":"Unidade: R$"},"meses_para_meta":{"type":"number","title":"Meses até a meta","description":"Unidade: meses"}},"required":["meta","falta","meses_para_meta"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/roas-de-equilibrio":{"post":{"summary":"Calculadora de ROAS de Equilíbrio (Break-even)","description":"Descubra o ROAS mínimo para a campanha pagar a si mesma a partir da sua margem de lucro.","operationId":"calc_roas_de_equilibrio","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"margem_percent":{"type":"number","description":"Margem de contribuição do produto/serviço (%) — quanto sobra da venda depois dos custos variáveis.","minimum":0,"maximum":100}},"required":["margem_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"roas-de-equilibrio"},"inputs":{"type":"object","properties":{"margem_percent":{"type":"number","description":"Margem de contribuição do produto/serviço (%) — quanto sobra da venda depois dos custos variáveis.","minimum":0,"maximum":100}},"required":["margem_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"roas_equilibrio":{"type":"number","title":"ROAS de equilíbrio","description":"Unidade: x"},"acos_equilibrio_percent":{"type":"number","title":"ACoS de equilíbrio","description":"Unidade: %"}},"required":["roas_equilibrio","acos_equilibrio_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/rodape":{"post":{"summary":"Calculadora de Rodapé","description":"Calcule os metros lineares de rodapé e quantas barras comprar a partir do perímetro do ambiente, descontando os vãos de portas.","operationId":"calc_rodape","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"perimetro_m":{"type":"number","description":"Some o comprimento de todas as paredes que receberão rodapé.","minimum":0},"vaos_m":{"type":"number","description":"Soma da largura das portas e demais vãos sem rodapé.","minimum":0},"barra_m":{"type":"number","description":"Comprimento comercial da barra de rodapé que você vai comprar.","minimum":0.5}},"required":["perimetro_m","vaos_m","barra_m"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"rodape"},"inputs":{"type":"object","properties":{"perimetro_m":{"type":"number","description":"Some o comprimento de todas as paredes que receberão rodapé.","minimum":0},"vaos_m":{"type":"number","description":"Soma da largura das portas e demais vãos sem rodapé.","minimum":0},"barra_m":{"type":"number","description":"Comprimento comercial da barra de rodapé que você vai comprar.","minimum":0.5}},"required":["perimetro_m","vaos_m","barra_m"],"additionalProperties":false},"outputs":{"type":"object","properties":{"metros_lineares":{"type":"number","title":"Metros lineares de rodapé","description":"Unidade: m"},"barras":{"type":"number","title":"Barras","description":"Unidade: un"}},"required":["metros_lineares","barras"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/roi-retorno-investimento":{"post":{"summary":"Calculadora de ROI (Retorno sobre Investimento)","description":"Calcule o retorno percentual, o lucro e quantas vezes você multiplicou um investimento a partir do valor investido e do valor obtido.","operationId":"calc_roi_retorno_investimento","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investido":{"type":"number","description":"Quanto você aplicou no total, em reais.","minimum":0},"retorno_total":{"type":"number","description":"Quanto você recebeu de volta no total, em reais (inclui o capital).","minimum":0}},"required":["investido","retorno_total"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"roi-retorno-investimento"},"inputs":{"type":"object","properties":{"investido":{"type":"number","description":"Quanto você aplicou no total, em reais.","minimum":0},"retorno_total":{"type":"number","description":"Quanto você recebeu de volta no total, em reais (inclui o capital).","minimum":0}},"required":["investido","retorno_total"],"additionalProperties":false},"outputs":{"type":"object","properties":{"roi":{"type":"number","title":"ROI","description":"Unidade: %"},"lucro":{"type":"number","title":"Lucro","description":"Unidade: R$"},"multiplo":{"type":"number","title":"Múltiplo do capital","description":"Unidade: x"}},"required":["roi","lucro","multiplo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/salario-liquido-clt":{"post":{"summary":"Calculadora de Salário Líquido CLT (2026)","description":"Calcule o salário líquido descontando INSS e IRRF do salário bruto pelas tabelas progressivas de 2026.","operationId":"calc_salario_liquido_clt","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal antes de qualquer desconto, em reais.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF — cada um abate R$ 189,59 da base de cálculo.","minimum":0},"outros_descontos_brl":{"type":"number","description":"Vale-transporte, plano de saúde, pensão e demais descontos em folha, em reais.","minimum":0}},"required":["salario_bruto_brl","dependentes","outros_descontos_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"salario-liquido-clt"},"inputs":{"type":"object","properties":{"salario_bruto_brl":{"type":"number","description":"Salário bruto mensal antes de qualquer desconto, em reais.","minimum":0},"dependentes":{"type":"integer","description":"Número de dependentes para o IRRF — cada um abate R$ 189,59 da base de cálculo.","minimum":0},"outros_descontos_brl":{"type":"number","description":"Vale-transporte, plano de saúde, pensão e demais descontos em folha, em reais.","minimum":0}},"required":["salario_bruto_brl","dependentes","outros_descontos_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"salario_liquido_brl":{"type":"number","title":"Salário líquido","description":"Unidade: R$"},"inss_brl":{"type":"number","title":"Desconto de INSS","description":"Unidade: R$"},"irrf_brl":{"type":"number","title":"Desconto de IRRF","description":"Unidade: R$"},"base_calculo_irrf_brl":{"type":"number","title":"Base de cálculo do IRRF","description":"Unidade: R$"},"aliquota_efetiva":{"type":"number","title":"Carga sobre o bruto","description":"Unidade: %"}},"required":["salario_liquido_brl","inss_brl","irrf_brl","base_calculo_irrf_brl","aliquota_efetiva"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/seguro-desemprego":{"post":{"summary":"Calculadora do Seguro-Desemprego (2026)","description":"Estime o número de parcelas e o valor de cada parcela do seguro-desemprego pela média salarial.","operationId":"calc_seguro_desemprego","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"media_salarial_brl":{"type":"number","description":"Média dos três últimos salários antes da demissão.","minimum":0},"meses_trabalhados":{"type":"integer","description":"Meses trabalhados no período aquisitivo (a 1ª solicitação exige ≥12 meses nos últimos 18).","minimum":0},"numero_solicitacao":{"type":"string","enum":["0","1","2"],"description":"Muda o número de parcelas só quando o tempo é curto: a 1ª exige 12 meses (4 ou 5 parcelas), a 2ª libera 3 parcelas a partir de 9 meses e a 3ª a partir de 6. Com 24 meses ou mais são sempre 5, qualquer que seja a solicitação."}},"required":["media_salarial_brl","meses_trabalhados","numero_solicitacao"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"seguro-desemprego"},"inputs":{"type":"object","properties":{"media_salarial_brl":{"type":"number","description":"Média dos três últimos salários antes da demissão.","minimum":0},"meses_trabalhados":{"type":"integer","description":"Meses trabalhados no período aquisitivo (a 1ª solicitação exige ≥12 meses nos últimos 18).","minimum":0},"numero_solicitacao":{"type":"string","enum":["0","1","2"],"description":"Muda o número de parcelas só quando o tempo é curto: a 1ª exige 12 meses (4 ou 5 parcelas), a 2ª libera 3 parcelas a partir de 9 meses e a 3ª a partir de 6. Com 24 meses ou mais são sempre 5, qualquer que seja a solicitação."}},"required":["media_salarial_brl","meses_trabalhados","numero_solicitacao"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_parcela_brl":{"type":"number","title":"Valor de cada parcela","description":"Unidade: R$"},"numero_parcelas":{"type":"number","title":"Quantidade de parcelas","description":"Unidade: un"},"total_brl":{"type":"number","title":"Total a receber","description":"Unidade: R$"}},"required":["valor_parcela_brl","numero_parcelas","total_brl"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/sementes-de-grama-por-area":{"post":{"summary":"Calculadora de Sementes de Grama por m²","description":"Calcule quantos quilos e sacos de sementes de grama comprar para plantar um gramado a partir da taxa de semeadura.","operationId":"calc_sementes_de_grama_por_area","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total a semear, em metros quadrados.","minimum":0},"taxa_g_m2":{"type":"number","description":"Quantidade de sementes por metro quadrado, em gramas.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso de cada saco comercial de sementes, em quilos.","minimum":0.1}},"required":["area_m2","taxa_g_m2","peso_saco_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"sementes-de-grama-por-area"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total a semear, em metros quadrados.","minimum":0},"taxa_g_m2":{"type":"number","description":"Quantidade de sementes por metro quadrado, em gramas.","minimum":0},"peso_saco_kg":{"type":"number","description":"Peso de cada saco comercial de sementes, em quilos.","minimum":0.1}},"required":["area_m2","taxa_g_m2","peso_saco_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"sementes_kg":{"type":"number","title":"Sementes necessárias","description":"Unidade: kg"},"sacos":{"type":"number","title":"Sacos a comprar","description":"Unidade: sacos"}},"required":["sementes_kg","sacos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/simples-nacional":{"post":{"summary":"Calculadora do Simples Nacional","description":"Calcule a alíquota efetiva e o DAS do mês do Simples Nacional a partir do faturamento do mês, do RBT12 e do Anexo (I a V).","operationId":"calc_simples_nacional","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"anexo":{"type":"string","enum":["0","1","2","3","4"],"description":"Anexo da sua atividade. Serviços do Anexo V podem cair no III pelo Fator R (informe a folha)."},"faturamento_mes_brl":{"type":"number","description":"Receita bruta do mês a apurar — é a base do DAS deste mês.","minimum":0},"rbt12_brl":{"type":"number","description":"Soma da receita bruta dos 12 meses anteriores. Define a faixa e a alíquota.","minimum":0},"folha_12m_brl":{"type":"number","description":"Salários + pró-labore + encargos dos 12 meses. Só usada no Fator R do Anexo V.","minimum":0}},"required":["anexo","faturamento_mes_brl","rbt12_brl","folha_12m_brl"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"simples-nacional"},"inputs":{"type":"object","properties":{"anexo":{"type":"string","enum":["0","1","2","3","4"],"description":"Anexo da sua atividade. Serviços do Anexo V podem cair no III pelo Fator R (informe a folha)."},"faturamento_mes_brl":{"type":"number","description":"Receita bruta do mês a apurar — é a base do DAS deste mês.","minimum":0},"rbt12_brl":{"type":"number","description":"Soma da receita bruta dos 12 meses anteriores. Define a faixa e a alíquota.","minimum":0},"folha_12m_brl":{"type":"number","description":"Salários + pró-labore + encargos dos 12 meses. Só usada no Fator R do Anexo V.","minimum":0}},"required":["anexo","faturamento_mes_brl","rbt12_brl","folha_12m_brl"],"additionalProperties":false},"outputs":{"type":"object","properties":{"das_brl":{"type":"number","title":"DAS do mês","description":"Unidade: R$"},"aliquota_efetiva":{"type":"number","title":"Alíquota efetiva","description":"Unidade: %"},"aliquota_nominal":{"type":"number","title":"Alíquota nominal da faixa","description":"Unidade: %"},"fator_r":{"type":"number","title":"Fator R (folha 12m / RBT12)","description":"Unidade: %"}},"required":["das_brl","aliquota_efetiva","aliquota_nominal","fator_r"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/simplificar-fracao":{"post":{"summary":"Calculadora para Simplificar Fração","description":"Reduz uma fração à forma irredutível dividindo numerador e denominador pelo MDC e diz se ela já era irredutível.","operationId":"calc_simplificar_fracao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numerador":{"type":"integer","description":"Número de cima da fração (pode ser negativo)."},"denominador":{"type":"integer","description":"Número de baixo da fração. Não pode ser zero."}},"required":["numerador","denominador"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"simplificar-fracao"},"inputs":{"type":"object","properties":{"numerador":{"type":"integer","description":"Número de cima da fração (pode ser negativo)."},"denominador":{"type":"integer","description":"Número de baixo da fração. Não pode ser zero."}},"required":["numerador","denominador"],"additionalProperties":false},"outputs":{"type":"object","properties":{"numerador_simplificado":{"type":"number","title":"Numerador simplificado"},"denominador_simplificado":{"type":"number","title":"Denominador simplificado"},"mdc":{"type":"number","title":"MDC (fator comum)"},"decimal":{"type":"number","title":"Valor decimal"},"ja_irredutivel":{"type":"integer","title":"Já era irredutível?","enum":[0,1],"description":"0 = Não; 1 = Sim","x-enumLabels":{"0":"Não","1":"Sim"}}},"required":["numerador_simplificado","denominador_simplificado","mdc","decimal","ja_irredutivel"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/sistema-linear-2x2":{"post":{"summary":"Calculadora de Sistema Linear 2x2 (Regra de Cramer)","description":"Resolve um sistema de duas equações e duas incógnitas (a₁x+b₁y=c₁ / a₂x+b₂y=c₂) pela regra de Cramer, mostrando os determinantes D, Dx e Dy.","operationId":"calc_sistema_linear_2x2","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a1":{"type":"number","description":"Coeficiente de x na primeira equação."},"b1":{"type":"number","description":"Coeficiente de y na primeira equação."},"c1":{"type":"number","description":"Termo independente da primeira equação (lado direito da igualdade)."},"a2":{"type":"number","description":"Coeficiente de x na segunda equação."},"b2":{"type":"number","description":"Coeficiente de y na segunda equação."},"c2":{"type":"number","description":"Termo independente da segunda equação (lado direito da igualdade)."}},"required":["a1","b1","c1","a2","b2","c2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"sistema-linear-2x2"},"inputs":{"type":"object","properties":{"a1":{"type":"number","description":"Coeficiente de x na primeira equação."},"b1":{"type":"number","description":"Coeficiente de y na primeira equação."},"c1":{"type":"number","description":"Termo independente da primeira equação (lado direito da igualdade)."},"a2":{"type":"number","description":"Coeficiente de x na segunda equação."},"b2":{"type":"number","description":"Coeficiente de y na segunda equação."},"c2":{"type":"number","description":"Termo independente da segunda equação (lado direito da igualdade)."}},"required":["a1","b1","c1","a2","b2","c2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"x":{"type":"number","title":"Valor de x"},"y":{"type":"number","title":"Valor de y"},"determinante":{"type":"number","title":"Determinante D"},"dx":{"type":"number","title":"Determinante Dx"},"dy":{"type":"number","title":"Determinante Dy"}},"required":["x","y","determinante","dx","dy"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/substrato-para-vasos":{"post":{"summary":"Calculadora de Substrato para Vasos","description":"Calcule quantos litros de substrato cabem em um vaso a partir do diâmetro e da altura, e quantos sacos comprar.","operationId":"calc_substrato_para_vasos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"diametro_cm":{"type":"number","description":"Diâmetro interno do vaso na boca, em centímetros.","minimum":0},"altura_cm":{"type":"number","description":"Altura que será preenchida com substrato, em centímetros (geralmente um pouco abaixo da borda).","minimum":0},"quantidade_vasos":{"type":"integer","description":"Quantos vasos iguais você vai encher.","minimum":1},"volume_saco_litro":{"type":"number","description":"Volume de cada saco de substrato que você vai comprar.","minimum":0.1}},"required":["diametro_cm","altura_cm","quantidade_vasos","volume_saco_litro"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"substrato-para-vasos"},"inputs":{"type":"object","properties":{"diametro_cm":{"type":"number","description":"Diâmetro interno do vaso na boca, em centímetros.","minimum":0},"altura_cm":{"type":"number","description":"Altura que será preenchida com substrato, em centímetros (geralmente um pouco abaixo da borda).","minimum":0},"quantidade_vasos":{"type":"integer","description":"Quantos vasos iguais você vai encher.","minimum":1},"volume_saco_litro":{"type":"number","description":"Volume de cada saco de substrato que você vai comprar.","minimum":0.1}},"required":["diametro_cm","altura_cm","quantidade_vasos","volume_saco_litro"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume_total_litro":{"type":"number","title":"Substrato total","description":"Unidade: L"},"volume_por_vaso_litro":{"type":"number","title":"Substrato por vaso","description":"Unidade: L"},"sacos":{"type":"number","title":"Sacos a comprar","description":"Unidade: sacos"}},"required":["volume_total_litro","volume_por_vaso_litro","sacos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/tamanho-de-calcado-br-us-eu-uk":{"post":{"summary":"Conversor de Tamanho de Calçado (BR, US, EU, UK)","description":"Converta seu número de calçado entre Brasil, EUA, Europa e Reino Unido a partir de qualquer sistema ou do comprimento do pé em mm.","operationId":"calc_tamanho_de_calcado_br_us_eu_uk","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sistema_origem":{"type":"string","enum":["0","1","2","3","4"],"description":"Em qual sistema você já sabe o seu número. Escolha 'Comprimento do pé' para converter pela medida real."},"numero":{"type":"number","description":"O número informado no sistema escolhido. Se o sistema for 'Comprimento do pé', digite aqui o comprimento do pé em milímetros (ex.: 260).","minimum":0},"genero":{"type":"string","enum":["0","1","2"],"description":"Define a numeração US (o feminino é ~1,5 acima do masculino). BR e EU não mudam com o gênero."}},"required":["sistema_origem","numero","genero"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"tamanho-de-calcado-br-us-eu-uk"},"inputs":{"type":"object","properties":{"sistema_origem":{"type":"string","enum":["0","1","2","3","4"],"description":"Em qual sistema você já sabe o seu número. Escolha 'Comprimento do pé' para converter pela medida real."},"numero":{"type":"number","description":"O número informado no sistema escolhido. Se o sistema for 'Comprimento do pé', digite aqui o comprimento do pé em milímetros (ex.: 260).","minimum":0},"genero":{"type":"string","enum":["0","1","2"],"description":"Define a numeração US (o feminino é ~1,5 acima do masculino). BR e EU não mudam com o gênero."}},"required":["sistema_origem","numero","genero"],"additionalProperties":false},"outputs":{"type":"object","properties":{"tamanho_br":{"type":"number","title":"Brasil (BR)","description":"Unidade: un"},"tamanho_us":{"type":"number","title":"Estados Unidos (US)","description":"Unidade: un"},"tamanho_eu":{"type":"number","title":"Europa (EU)","description":"Unidade: un"},"tamanho_uk":{"type":"number","title":"Reino Unido (UK)","description":"Unidade: un"},"comprimento_pe_mm":{"type":"number","title":"Comprimento do pé","description":"Unidade: mm"}},"required":["tamanho_br","tamanho_us","tamanho_eu","tamanho_uk","comprimento_pe_mm"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/taxa-de-churn":{"post":{"summary":"Calculadora de Churn (Taxa de Cancelamento)","description":"Calcule a taxa de churn dividindo os clientes perdidos pelos clientes no início do período.","operationId":"calc_taxa_de_churn","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientes_inicio":{"type":"integer","description":"Número de clientes ativos no começo do período.","minimum":0},"clientes_perdidos":{"type":"integer","description":"Clientes que cancelaram durante o período.","minimum":0},"periodo":{"type":"string","enum":["mensal","trimestral","anual"],"description":"Em qual janela você mediu os cancelamentos. O churn da janela não muda; ele é convertido para um equivalente mensal para comparar com os benchmarks."}},"required":["clientes_inicio","clientes_perdidos","periodo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"taxa-de-churn"},"inputs":{"type":"object","properties":{"clientes_inicio":{"type":"integer","description":"Número de clientes ativos no começo do período.","minimum":0},"clientes_perdidos":{"type":"integer","description":"Clientes que cancelaram durante o período.","minimum":0},"periodo":{"type":"string","enum":["mensal","trimestral","anual"],"description":"Em qual janela você mediu os cancelamentos. O churn da janela não muda; ele é convertido para um equivalente mensal para comparar com os benchmarks."}},"required":["clientes_inicio","clientes_perdidos","periodo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"churn_percent":{"type":"number","title":"Taxa de churn","description":"Unidade: %"},"retencao_percent":{"type":"number","title":"Taxa de retenção","description":"Unidade: %"},"churn_mensal_equivalente":{"type":"number","title":"Churn mensal equivalente","description":"Unidade: %"}},"required":["churn_percent","retencao_percent","churn_mensal_equivalente"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/taxa-de-conversao":{"post":{"summary":"Calculadora de Taxa de Conversão","description":"Calcule a taxa de conversão dividindo o número de conversões pelo total de visitantes ou cliques.","operationId":"calc_taxa_de_conversao","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"conversoes":{"type":"integer","description":"Número de conversões no período (vendas, leads, cadastros).","minimum":0},"visitantes":{"type":"integer","description":"Total de visitantes ou cliques que chegaram à página/anúncio no mesmo período.","minimum":0}},"required":["conversoes","visitantes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"taxa-de-conversao"},"inputs":{"type":"object","properties":{"conversoes":{"type":"integer","description":"Número de conversões no período (vendas, leads, cadastros).","minimum":0},"visitantes":{"type":"integer","description":"Total de visitantes ou cliques que chegaram à página/anúncio no mesmo período.","minimum":0}},"required":["conversoes","visitantes"],"additionalProperties":false},"outputs":{"type":"object","properties":{"taxa_conversao_percent":{"type":"number","title":"Taxa de conversão","description":"Unidade: %"}},"required":["taxa_conversao_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/telhas-por-m2":{"post":{"summary":"Calculadora de Telhas por m²","description":"Calcule quantas telhas comprar pela área do telhado e pelo modelo (colonial, portuguesa, romana ou fibrocimento), já com a perda.","operationId":"calc_telhas_por_m2","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_telhado_m2":{"type":"number","description":"Área real do telhado, medida sobre a inclinação (não a projeção no chão).","minimum":0},"tipo":{"type":"string","enum":["0","1","2","3"],"description":"Modelo da telha — define quantas peças cabem por metro quadrado."},"perda_percent":{"type":"number","description":"Perda por quebra, recortes e cumeeiras.","minimum":0,"maximum":100}},"required":["area_telhado_m2","tipo","perda_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"telhas-por-m2"},"inputs":{"type":"object","properties":{"area_telhado_m2":{"type":"number","description":"Área real do telhado, medida sobre a inclinação (não a projeção no chão).","minimum":0},"tipo":{"type":"string","enum":["0","1","2","3"],"description":"Modelo da telha — define quantas peças cabem por metro quadrado."},"perda_percent":{"type":"number","description":"Perda por quebra, recortes e cumeeiras.","minimum":0,"maximum":100}},"required":["area_telhado_m2","tipo","perda_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"telhas":{"type":"number","title":"Telhas com perda","description":"Unidade: un"},"telhas_sem_perda":{"type":"number","title":"Telhas teóricas","description":"Unidade: un"},"perda_telhas":{"type":"number","title":"Telhas a mais (perda)","description":"Unidade: un"}},"required":["telhas","telhas_sem_perda","perda_telhas"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/tempo-de-viagem-distancia-velocidade":{"post":{"summary":"Calculadora de Tempo de Viagem","description":"Estime a duração de uma viagem a partir da distância e da velocidade média, somando o tempo de paradas.","operationId":"calc_tempo_de_viagem_distancia_velocidade","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"distancia_km":{"type":"number","description":"Distância total do trajeto, em quilômetros.","minimum":0},"velocidade_media_kmh":{"type":"number","description":"Velocidade média esperada no trajeto, em km/h.","minimum":0},"paradas_min":{"type":"number","description":"Soma das paradas (combustível, refeição, descanso), em minutos.","minimum":0}},"required":["distancia_km","velocidade_media_kmh","paradas_min"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"tempo-de-viagem-distancia-velocidade"},"inputs":{"type":"object","properties":{"distancia_km":{"type":"number","description":"Distância total do trajeto, em quilômetros.","minimum":0},"velocidade_media_kmh":{"type":"number","description":"Velocidade média esperada no trajeto, em km/h.","minimum":0},"paradas_min":{"type":"number","description":"Soma das paradas (combustível, refeição, descanso), em minutos.","minimum":0}},"required":["distancia_km","velocidade_media_kmh","paradas_min"],"additionalProperties":false},"outputs":{"type":"object","properties":{"duracao_total_h":{"type":"number","title":"Duração total","description":"Unidade: h"},"duracao_total_min":{"type":"number","title":"Duração total (minutos)","description":"Unidade: min"},"horas":{"type":"number","title":"Horas","description":"Unidade: h"},"minutos":{"type":"number","title":"Minutos","description":"Unidade: min"},"tempo_dirigindo_min":{"type":"number","title":"Tempo em movimento","description":"Unidade: min"}},"required":["duracao_total_h","duracao_total_min","horas","minutos","tempo_dirigindo_min"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/tempo-para-meta-financeira":{"post":{"summary":"Calculadora de Tempo para Atingir uma Meta (Primeiro Milhão)","description":"Descubra em quantos meses você atinge uma meta financeira a partir do valor inicial, dos aportes mensais e da taxa de juros.","operationId":"calc_tempo_para_meta_financeira","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valor_inicial":{"type":"number","description":"Quanto você já tem investido hoje, em reais.","minimum":0},"aporte_mensal":{"type":"number","description":"Quanto você guarda e investe todo mês, em reais.","minimum":0},"taxa_mensal":{"type":"number","description":"Rendimento por mês, em porcentagem. Use a taxa mensal, não a anual.","minimum":0},"meta":{"type":"number","description":"O valor que você quer acumular, em reais. Ex.: 1.000.000 para o primeiro milhão.","minimum":0}},"required":["valor_inicial","aporte_mensal","taxa_mensal","meta"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"tempo-para-meta-financeira"},"inputs":{"type":"object","properties":{"valor_inicial":{"type":"number","description":"Quanto você já tem investido hoje, em reais.","minimum":0},"aporte_mensal":{"type":"number","description":"Quanto você guarda e investe todo mês, em reais.","minimum":0},"taxa_mensal":{"type":"number","description":"Rendimento por mês, em porcentagem. Use a taxa mensal, não a anual.","minimum":0},"meta":{"type":"number","description":"O valor que você quer acumular, em reais. Ex.: 1.000.000 para o primeiro milhão.","minimum":0}},"required":["valor_inicial","aporte_mensal","taxa_mensal","meta"],"additionalProperties":false},"outputs":{"type":"object","properties":{"meses":{"type":"number","title":"Meses até a meta","description":"Unidade: meses"},"anos":{"type":"number","title":"Equivalente em anos","description":"Unidade: anos"},"total_aportado":{"type":"number","title":"Total aportado","description":"Unidade: R$"},"total_juros":{"type":"number","title":"Veio de juros","description":"Unidade: R$"},"total_juros_percent":{"type":"number","title":"% vindo de juros","description":"Unidade: %"}},"required":["meses","anos","total_aportado","total_juros","total_juros_percent"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/tempo-vivido":{"post":{"summary":"Sua Vida em Números: Tempo Vivido","description":"Veja sua vida em dias, semanas, horas, batimentos e até numa escala cósmica a partir da sua data de nascimento.","operationId":"calc_tempo_vivido","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data_nascimento":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Sua data de nascimento (AAAA-MM-DD)."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data usada como 'hoje' no cálculo. A página preenche sozinha."}},"required":["data_nascimento","data_referencia"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"tempo-vivido"},"inputs":{"type":"object","properties":{"data_nascimento":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Sua data de nascimento (AAAA-MM-DD)."},"data_referencia":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Data usada como 'hoje' no cálculo. A página preenche sozinha."}},"required":["data_nascimento","data_referencia"],"additionalProperties":false},"outputs":{"type":"object","properties":{"dias_vividos":{"type":"number","title":"Dias de vida","description":"Unidade: dias"},"semanas_vividas":{"type":"number","title":"Semanas de vida","description":"Unidade: un"},"meses_vividos":{"type":"number","title":"Meses de vida","description":"Unidade: meses"},"horas_vividas":{"type":"number","title":"Horas de vida","description":"Unidade: h"},"batimentos_estimados":{"type":"number","title":"Batimentos do coração (estimativa)","description":"Unidade: un"},"respiracoes_estimadas":{"type":"number","title":"Respirações (estimativa)","description":"Unidade: un"},"voltas_ao_redor_do_sol":{"type":"number","title":"Voltas completas ao redor do Sol","description":"Unidade: un"},"vida_no_ano_cosmico_seg":{"type":"number","title":"Sua vida no 'ano cósmico'","description":"Unidade: s"}},"required":["dias_vividos","semanas_vividas","meses_vividos","horas_vividas","batimentos_estimados","respiracoes_estimadas","voltas_ao_redor_do_sol","vida_no_ano_cosmico_seg"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/teorema-de-pitagoras":{"post":{"summary":"Calculadora do Teorema de Pitágoras","description":"Encontre a hipotenusa a partir dos dois catetos, ou um cateto a partir da hipotenusa e do outro cateto.","operationId":"calc_teorema_de_pitagoras","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"modo":{"type":"string","enum":["0","1"],"description":"Escolha se quer descobrir a hipotenusa ou um dos catetos."},"lado_1":{"type":"number","description":"No modo hipotenusa: o cateto A. No modo cateto: a hipotenusa (deve ser maior que o cateto conhecido).","minimum":0},"lado_2":{"type":"number","description":"No modo hipotenusa: o cateto B. No modo cateto: o cateto conhecido.","minimum":0}},"required":["modo","lado_1","lado_2"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"teorema-de-pitagoras"},"inputs":{"type":"object","properties":{"modo":{"type":"string","enum":["0","1"],"description":"Escolha se quer descobrir a hipotenusa ou um dos catetos."},"lado_1":{"type":"number","description":"No modo hipotenusa: o cateto A. No modo cateto: a hipotenusa (deve ser maior que o cateto conhecido).","minimum":0},"lado_2":{"type":"number","description":"No modo hipotenusa: o cateto B. No modo cateto: o cateto conhecido.","minimum":0}},"required":["modo","lado_1","lado_2"],"additionalProperties":false},"outputs":{"type":"object","properties":{"lado_calculado":{"type":"number","title":"Lado encontrado"},"area_triangulo":{"type":"number","title":"Área do triângulo"},"perimetro":{"type":"number","title":"Perímetro"}},"required":["lado_calculado","area_triangulo","perimetro"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/terra-vegetal":{"post":{"summary":"Calculadora de Terra Vegetal","description":"Calcule o volume de terra vegetal e o número de caçambas necessárias para preparar uma área de plantio ou jardim.","operationId":"calc_terra_vegetal","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total que receberá a camada de terra vegetal.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura desejada da camada de terra vegetal, em centímetros.","minimum":0},"cacamba_m3":{"type":"number","description":"Volume da caçamba de entrega que você vai contratar.","minimum":0.5}},"required":["area_m2","espessura_cm","cacamba_m3"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"terra-vegetal"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total que receberá a camada de terra vegetal.","minimum":0},"espessura_cm":{"type":"number","description":"Espessura desejada da camada de terra vegetal, em centímetros.","minimum":0},"cacamba_m3":{"type":"number","description":"Volume da caçamba de entrega que você vai contratar.","minimum":0.5}},"required":["area_m2","espessura_cm","cacamba_m3"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume_m3":{"type":"number","title":"Volume de terra vegetal","description":"Unidade: m³"},"cacambas":{"type":"number","title":"Caçambas","description":"Unidade: caçambas"}},"required":["volume_m3","cacambas"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/tijolos-por-parede":{"post":{"summary":"Calculadora de Tijolos/Blocos por Parede","description":"Calcule quantos tijolos furados ou blocos de concreto você precisa para levantar uma parede, já com perda.","operationId":"calc_tijolos_por_parede","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área líquida da parede, descontando portas e janelas.","minimum":0},"tipo":{"type":"string","enum":["tijolo_furado","bloco_concreto"],"description":"Tipo de unidade"}},"required":["area_m2","tipo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"tijolos-por-parede"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área líquida da parede, descontando portas e janelas.","minimum":0},"tipo":{"type":"string","enum":["tijolo_furado","bloco_concreto"],"description":"Tipo de unidade"}},"required":["area_m2","tipo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"tijolos":{"type":"number","title":"Quantidade de unidades","description":"Unidade: tijolos/blocos"}},"required":["tijolos"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/tinta-parede":{"post":{"summary":"Calculadora de Tinta de Parede","description":"Calcule quantos litros de tinta e quantas latas de 18 L você precisa para pintar suas paredes, considerando o número de demãos e o rendimento da tinta.","operationId":"calc_tinta_parede","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total das paredes a serem pintadas, em metros quadrados.","minimum":0},"demaos":{"type":"integer","description":"Quantidade de demãos de tinta (geralmente 2 a 3).","minimum":1},"rendimento_m2_litro":{"type":"number","description":"m²/L por demão, conforme a embalagem (ex.: 10).","minimum":1},"litros_por_lata":{"type":"number","description":"Volume da embalagem de tinta que você vai comprar.","minimum":1}},"required":["area_m2","demaos","rendimento_m2_litro","litros_por_lata"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"tinta-parede"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área total das paredes a serem pintadas, em metros quadrados.","minimum":0},"demaos":{"type":"integer","description":"Quantidade de demãos de tinta (geralmente 2 a 3).","minimum":1},"rendimento_m2_litro":{"type":"number","description":"m²/L por demão, conforme a embalagem (ex.: 10).","minimum":1},"litros_por_lata":{"type":"number","description":"Volume da embalagem de tinta que você vai comprar.","minimum":1}},"required":["area_m2","demaos","rendimento_m2_litro","litros_por_lata"],"additionalProperties":false},"outputs":{"type":"object","properties":{"litros":{"type":"number","title":"Litros de tinta","description":"Unidade: L"},"latas_18l":{"type":"number","title":"Latas","description":"Unidade: latas"}},"required":["litros","latas_18l"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/traco-de-concreto":{"post":{"summary":"Calculadora de Traço de Concreto","description":"Calcule sacos de cimento, areia (m³), brita (m³) e água para o volume de concreto a partir do traço escolhido.","operationId":"calc_traco_de_concreto","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"volume_m3":{"type":"number","description":"Volume de concreto desejado, em metros cúbicos.","minimum":0},"traco":{"type":"string","enum":["0","1","2"],"description":"Proporção cimento:areia:brita. Estrutural é o mais rico em cimento."},"peso_saco_kg":{"type":"number","description":"Peso da embalagem de cimento que você vai comprar.","minimum":1}},"required":["volume_m3","traco","peso_saco_kg"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"traco-de-concreto"},"inputs":{"type":"object","properties":{"volume_m3":{"type":"number","description":"Volume de concreto desejado, em metros cúbicos.","minimum":0},"traco":{"type":"string","enum":["0","1","2"],"description":"Proporção cimento:areia:brita. Estrutural é o mais rico em cimento."},"peso_saco_kg":{"type":"number","description":"Peso da embalagem de cimento que você vai comprar.","minimum":1}},"required":["volume_m3","traco","peso_saco_kg"],"additionalProperties":false},"outputs":{"type":"object","properties":{"cimento":{"type":"number","title":"Cimento","description":"Unidade: sacos"},"cimento_kg":{"type":"number","title":"Cimento (peso)","description":"Unidade: kg"},"areia_m3":{"type":"number","title":"Areia","description":"Unidade: m³"},"brita_m3":{"type":"number","title":"Brita","description":"Unidade: m³"},"agua_litros":{"type":"number","title":"Água estimada","description":"Unidade: L"}},"required":["cimento","cimento_kg","areia_m3","brita_m3","agua_litros"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/trigonometria-triangulo-retangulo":{"post":{"summary":"Calculadora de Trigonometria no Triângulo Retângulo","description":"A partir de um ângulo e da hipotenusa, encontre os catetos oposto e adjacente e as razões seno, cosseno e tangente.","operationId":"calc_trigonometria_triangulo_retangulo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"angulo_grau":{"type":"number","description":"Ângulo agudo do triângulo, em graus. Use um valor entre 0° e 90° (intervalo aberto).","minimum":0,"maximum":90},"hipotenusa":{"type":"number","description":"Comprimento da hipotenusa (o lado oposto ao ângulo reto).","minimum":0}},"required":["angulo_grau","hipotenusa"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"trigonometria-triangulo-retangulo"},"inputs":{"type":"object","properties":{"angulo_grau":{"type":"number","description":"Ângulo agudo do triângulo, em graus. Use um valor entre 0° e 90° (intervalo aberto).","minimum":0,"maximum":90},"hipotenusa":{"type":"number","description":"Comprimento da hipotenusa (o lado oposto ao ângulo reto).","minimum":0}},"required":["angulo_grau","hipotenusa"],"additionalProperties":false},"outputs":{"type":"object","properties":{"cateto_oposto":{"type":"number","title":"Cateto oposto"},"cateto_adjacente":{"type":"number","title":"Cateto adjacente"},"seno":{"type":"number","title":"Seno (sen θ)"},"cosseno":{"type":"number","title":"Cosseno (cos θ)"},"tangente":{"type":"number","title":"Tangente (tg θ)"}},"required":["cateto_oposto","cateto_adjacente","seno","cosseno","tangente"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/valor-da-hora-freelancer":{"post":{"summary":"Calculadora de Valor da Hora / Preço de Freelancer","description":"Calcule quanto cobrar por hora a partir da renda desejada, das horas faturáveis, dos custos fixos e de uma margem de impostos e ociosidade.","operationId":"calc_valor_da_hora_freelancer","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"renda_desejada_mensal":{"type":"number","description":"Quanto você quer receber líquido por mês, em reais.","minimum":0},"custos_fixos_mensais":{"type":"number","description":"Custos do negócio por mês: software, internet, contador, coworking.","minimum":0},"horas_faturaveis_dia":{"type":"number","description":"Horas que você realmente consegue cobrar por dia (raramente são as 8 cheias).","minimum":0.1,"maximum":24},"dias_por_semana":{"type":"number","description":"Dias trabalhados na semana.","minimum":0.5,"maximum":7},"impostos_percent":{"type":"number","description":"Impostos sobre o que você fatura. MEI/Simples costuma ficar em torno de 6%.","minimum":0,"maximum":99},"margem_ociosa_percent":{"type":"number","description":"Folga para horas não faturáveis (prospecção, retrabalho) e imprevistos.","minimum":0,"maximum":99}},"required":["renda_desejada_mensal","custos_fixos_mensais","horas_faturaveis_dia","dias_por_semana","impostos_percent","margem_ociosa_percent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"valor-da-hora-freelancer"},"inputs":{"type":"object","properties":{"renda_desejada_mensal":{"type":"number","description":"Quanto você quer receber líquido por mês, em reais.","minimum":0},"custos_fixos_mensais":{"type":"number","description":"Custos do negócio por mês: software, internet, contador, coworking.","minimum":0},"horas_faturaveis_dia":{"type":"number","description":"Horas que você realmente consegue cobrar por dia (raramente são as 8 cheias).","minimum":0.1,"maximum":24},"dias_por_semana":{"type":"number","description":"Dias trabalhados na semana.","minimum":0.5,"maximum":7},"impostos_percent":{"type":"number","description":"Impostos sobre o que você fatura. MEI/Simples costuma ficar em torno de 6%.","minimum":0,"maximum":99},"margem_ociosa_percent":{"type":"number","description":"Folga para horas não faturáveis (prospecção, retrabalho) e imprevistos.","minimum":0,"maximum":99}},"required":["renda_desejada_mensal","custos_fixos_mensais","horas_faturaveis_dia","dias_por_semana","impostos_percent","margem_ociosa_percent"],"additionalProperties":false},"outputs":{"type":"object","properties":{"valor_hora":{"type":"number","title":"Valor da hora","description":"Unidade: R$"},"valor_dia":{"type":"number","title":"Valor da diária","description":"Unidade: R$"},"horas_faturaveis_mes":{"type":"number","title":"Horas faturáveis no mês","description":"Unidade: h"},"faturamento_alvo_mensal":{"type":"number","title":"Faturamento bruto necessário","description":"Unidade: R$"}},"required":["valor_hora","valor_dia","horas_faturaveis_mes","faturamento_alvo_mensal"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/valor-seno-cosseno-tangente":{"post":{"summary":"Calculadora de Seno, Cosseno e Tangente de um Ângulo","description":"Informe um ângulo em graus e obtenha seno, cosseno, tangente, cotangente, secante e cossecante.","operationId":"calc_valor_seno_cosseno_tangente","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"angulo_grau":{"type":"number","description":"Ângulo em graus, normalmente entre 0° e 360°.","minimum":0,"maximum":360}},"required":["angulo_grau"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"valor-seno-cosseno-tangente"},"inputs":{"type":"object","properties":{"angulo_grau":{"type":"number","description":"Ângulo em graus, normalmente entre 0° e 360°.","minimum":0,"maximum":360}},"required":["angulo_grau"],"additionalProperties":false},"outputs":{"type":"object","properties":{"seno":{"type":"number","title":"Seno"},"cosseno":{"type":"number","title":"Cosseno"},"tangente":{"type":"number","title":"Tangente"},"cotangente":{"type":"number","title":"Cotangente (1/tan)"},"secante":{"type":"number","title":"Secante (1/cos)"},"cossecante":{"type":"number","title":"Cossecante (1/sen)"}},"required":["seno","cosseno","tangente","cotangente","secante","cossecante"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/vo2max-teste-de-cooper":{"post":{"summary":"Calculadora de VO₂máx (Teste de Cooper)","description":"Estime seu VO₂máx pela distância percorrida em 12 minutos de corrida (teste de Cooper) e veja sua faixa de aptidão por sexo e idade.","operationId":"calc_vo2max_teste_de_cooper","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"distancia_m":{"type":"number","description":"Metros percorridos correndo o mais rápido possível por 12 minutos.","minimum":0},"idade_anos":{"type":"integer","description":"Sua idade em anos completos (usada só para a classificação por faixa etária).","minimum":0,"maximum":120},"sexo":{"type":"string","enum":["0","1"],"description":"Usado apenas para escolher a tabela de classificação de referência."}},"required":["distancia_m","idade_anos","sexo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"vo2max-teste-de-cooper"},"inputs":{"type":"object","properties":{"distancia_m":{"type":"number","description":"Metros percorridos correndo o mais rápido possível por 12 minutos.","minimum":0},"idade_anos":{"type":"integer","description":"Sua idade em anos completos (usada só para a classificação por faixa etária).","minimum":0,"maximum":120},"sexo":{"type":"string","enum":["0","1"],"description":"Usado apenas para escolher a tabela de classificação de referência."}},"required":["distancia_m","idade_anos","sexo"],"additionalProperties":false},"outputs":{"type":"object","properties":{"vo2max":{"type":"number","title":"VO₂máx estimado (ml/kg/min)","description":"Unidade: un"},"velocidade_media_kmh":{"type":"number","title":"Velocidade média","description":"Unidade: km/h"},"classe_vo2max_codigo":{"type":"integer","title":"Faixa de aptidão","enum":[0,1,2,3],"description":"0 = Fraco; 1 = Regular; 2 = Bom; 3 = Excelente","x-enumLabels":{"0":"Fraco","1":"Regular","2":"Bom","3":"Excelente"}}},"required":["vo2max","velocidade_media_kmh","classe_vo2max_codigo"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/volume-area-solido":{"post":{"summary":"Calculadora de Volume e Área de Sólidos","description":"Calcule o volume e a área de superfície de cubo, paralelepípedo, esfera, cilindro, cone ou pirâmide de base quadrada.","operationId":"calc_volume_area_solido","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"solido":{"type":"string","enum":["0","1","2","3","4","5"],"description":"Tipo de sólido. As dimensões pedidas mudam conforme a escolha."},"dim_a":{"type":"number","description":"Aresta do cubo, comprimento do paralelepípedo ou lado da base da pirâmide.","minimum":0},"dim_b":{"type":"number","description":"Largura — apenas para o paralelepípedo.","minimum":0},"dim_c":{"type":"number","description":"Terceira aresta — apenas para o paralelepípedo.","minimum":0},"raio":{"type":"number","description":"Raio — para esfera, cilindro e cone.","minimum":0},"altura":{"type":"number","description":"Altura — para cilindro, cone e pirâmide.","minimum":0}},"required":["solido","dim_a","dim_b","dim_c","raio","altura"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"volume-area-solido"},"inputs":{"type":"object","properties":{"solido":{"type":"string","enum":["0","1","2","3","4","5"],"description":"Tipo de sólido. As dimensões pedidas mudam conforme a escolha."},"dim_a":{"type":"number","description":"Aresta do cubo, comprimento do paralelepípedo ou lado da base da pirâmide.","minimum":0},"dim_b":{"type":"number","description":"Largura — apenas para o paralelepípedo.","minimum":0},"dim_c":{"type":"number","description":"Terceira aresta — apenas para o paralelepípedo.","minimum":0},"raio":{"type":"number","description":"Raio — para esfera, cilindro e cone.","minimum":0},"altura":{"type":"number","description":"Altura — para cilindro, cone e pirâmide.","minimum":0}},"required":["solido","dim_a","dim_b","dim_c","raio","altura"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume":{"type":"number","title":"Volume"},"area_superficie":{"type":"number","title":"Área de superfície"}},"required":["volume","area_superficie"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/volume-aterro":{"post":{"summary":"Calculadora de Volume de Aterro","description":"Calcule o volume compactado e solto de aterro e o número de caçambas de 3 m³ necessárias para a área e altura informadas.","operationId":"calc_volume_aterro","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área da superfície que receberá o aterro.","minimum":0},"altura_cm":{"type":"number","description":"Espessura média de elevação do terreno.","minimum":0},"volume_cacamba_m3":{"type":"number","description":"Volume da caçamba que você vai contratar.","minimum":0.5}},"required":["area_m2","altura_cm","volume_cacamba_m3"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"volume-aterro"},"inputs":{"type":"object","properties":{"area_m2":{"type":"number","description":"Área da superfície que receberá o aterro.","minimum":0},"altura_cm":{"type":"number","description":"Espessura média de elevação do terreno.","minimum":0},"volume_cacamba_m3":{"type":"number","description":"Volume da caçamba que você vai contratar.","minimum":0.5}},"required":["area_m2","altura_cm","volume_cacamba_m3"],"additionalProperties":false},"outputs":{"type":"object","properties":{"volume_compactado_m3":{"type":"number","title":"Volume compactado","description":"Unidade: m³"},"volume_solto_m3":{"type":"number","title":"Volume solto (com empolamento)","description":"Unidade: m³"},"cacambas":{"type":"number","title":"Caçambas","description":"Unidade: caçambas"}},"required":["volume_compactado_m3","volume_solto_m3","cacambas"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/volume-de-piscina-e-cloro":{"post":{"summary":"Calculadora de Volume de Piscina e Dose de Cloro","description":"Calcule os litros da piscina pelas medidas e a dose de cloro de manutenção, de choque e de barrilha (pH) pelo volume.","operationId":"calc_volume_de_piscina_e_cloro","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento da piscina, em metros.","minimum":0},"largura_m":{"type":"number","description":"Largura da piscina, em metros.","minimum":0},"prof_rasa_m":{"type":"number","description":"Profundidade da parte mais rasa. Para fundo plano, é a profundidade única.","minimum":0},"prof_funda_m":{"type":"number","description":"Profundidade da parte mais funda. Deixe 0 para fundo plano (usa só a parte rasa).","minimum":0},"dose_manutencao_g_m3":{"type":"number","description":"Gramas de cloro de manutenção por m³ de água (cerca de 3 ppm).","minimum":0},"dose_choque_g_m3":{"type":"number","description":"Gramas de cloro de choque por m³, para recuperar água esverdeada.","minimum":0},"dose_ph_g_m3":{"type":"number","description":"Gramas de barrilha por m³ para elevar o pH da água.","minimum":0}},"required":["comprimento_m","largura_m","prof_rasa_m","prof_funda_m","dose_manutencao_g_m3","dose_choque_g_m3","dose_ph_g_m3"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"volume-de-piscina-e-cloro"},"inputs":{"type":"object","properties":{"comprimento_m":{"type":"number","description":"Comprimento da piscina, em metros.","minimum":0},"largura_m":{"type":"number","description":"Largura da piscina, em metros.","minimum":0},"prof_rasa_m":{"type":"number","description":"Profundidade da parte mais rasa. Para fundo plano, é a profundidade única.","minimum":0},"prof_funda_m":{"type":"number","description":"Profundidade da parte mais funda. Deixe 0 para fundo plano (usa só a parte rasa).","minimum":0},"dose_manutencao_g_m3":{"type":"number","description":"Gramas de cloro de manutenção por m³ de água (cerca de 3 ppm).","minimum":0},"dose_choque_g_m3":{"type":"number","description":"Gramas de cloro de choque por m³, para recuperar água esverdeada.","minimum":0},"dose_ph_g_m3":{"type":"number","description":"Gramas de barrilha por m³ para elevar o pH da água.","minimum":0}},"required":["comprimento_m","largura_m","prof_rasa_m","prof_funda_m","dose_manutencao_g_m3","dose_choque_g_m3","dose_ph_g_m3"],"additionalProperties":false},"outputs":{"type":"object","properties":{"litros":{"type":"number","title":"Volume em litros","description":"Unidade: L"},"volume_m3":{"type":"number","title":"Volume em m³","description":"Unidade: m³"},"cloro_manutencao_g":{"type":"number","title":"Cloro de manutenção/dia","description":"Unidade: g"},"cloro_choque_g":{"type":"number","title":"Cloro de choque","description":"Unidade: g"},"barrilha_g":{"type":"number","title":"Barrilha (pH)","description":"Unidade: g"}},"required":["litros","volume_m3","cloro_manutencao_g","cloro_choque_g","barrilha_g"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}},"/api/v1/calc/zonas-frequencia-cardiaca":{"post":{"summary":"Calculadora de Zonas de Frequência Cardíaca","description":"Calcule sua frequência cardíaca máxima e as cinco zonas de treino pelo método Karvonen, a partir da idade e da frequência cardíaca de repouso.","operationId":"calc_zonas_frequencia_cardiaca","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idade_anos":{"type":"integer","description":"Sua idade em anos. A FC máxima estimada é 220 menos a idade.","minimum":0,"maximum":120},"fc_repouso_bpm":{"type":"integer","description":"Batimentos por minuto em repouso, medidos ao acordar antes de levantar.","minimum":0,"maximum":220}},"required":["idade_anos","fc_repouso_bpm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Resultado do cálculo","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","const":"zonas-frequencia-cardiaca"},"inputs":{"type":"object","properties":{"idade_anos":{"type":"integer","description":"Sua idade em anos. A FC máxima estimada é 220 menos a idade.","minimum":0,"maximum":120},"fc_repouso_bpm":{"type":"integer","description":"Batimentos por minuto em repouso, medidos ao acordar antes de levantar.","minimum":0,"maximum":220}},"required":["idade_anos","fc_repouso_bpm"],"additionalProperties":false},"outputs":{"type":"object","properties":{"fc_maxima_bpm":{"type":"number","title":"FC máxima estimada","description":"Unidade: bpm"},"z1_max_bpm":{"type":"number","title":"Zona 1 — leve (60%)","description":"Unidade: bpm"},"z2_max_bpm":{"type":"number","title":"Zona 2 — moderada (70%)","description":"Unidade: bpm"},"z3_max_bpm":{"type":"number","title":"Zona 3 — aeróbica (80%)","description":"Unidade: bpm"},"z4_max_bpm":{"type":"number","title":"Zona 4 — intensa (90%)","description":"Unidade: bpm"},"z5_max_bpm":{"type":"number","title":"Zona 5 — máxima (100%)","description":"Unidade: bpm"}},"required":["fc_maxima_bpm","z1_max_bpm","z2_max_bpm","z3_max_bpm","z4_max_bpm","z5_max_bpm"],"additionalProperties":false},"meta":{"type":"object","properties":{"updatedAt":{"type":"string"},"source":{"type":"string"}},"required":["updatedAt","source"],"additionalProperties":false}},"required":["slug","inputs","outputs","meta"],"additionalProperties":false}}}},"422":{"description":"Entrada inválida"}}}}}}