---
title: "Network Validate"
method: POST
path: "/api/v1/network/validate"
tags: ["rede"]
---

# Network Validate

`POST /api/v1/network/validate`

## Request

- Base URL: `https://app.estudoseletricos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.estudoseletricos.com/api/v1/network/validate`
- Auth: none declared

A validação AO VIVO da instalação, sem calcular.

O motor recusa a física e diz por quê — mas só quando se manda calcular, e
numa planta de cinquenta barras isso é tarde: a pessoa digitou trinta linhas
antes de descobrir que a primeira estava errada. Quem responde aqui é o
NÚCLEO (`mb_assembly.validar_rede`), e cada item nomeia o elemento.

## Request body

- NetworkRequest: Os registros dos data_editors (o mesmo contrato da tool `montar_rede`).
  - `unifilar_interativo` boolean: marca cada símbolo com `data-elem` para o clique (G126). É OPT-IN: o SVG default continua byte a byte o do laudo
  - `protecoes` Protecao[]: as proteções posicionadas, só para o DESENHO — elas não entram no cálculo de curto-circuito. Sem elas o diagrama sai sem os símbolos de proteção, e quem acabou de pôr um disjuntor pelo desenho não o veria aparecer. Lista vazia = o SVG de sempre.
    - `kind` 'bus' | 'edge', required
    - `ref` union, required: id da barra ('bus') ou [from_id, to_id] ('edge')
      - string
      - string[]
    - `label` string
    - `model_id` string, nullable: id no devices_db; None = ajuste manual
    - `color` string
    - `ajustes` object, nullable: ajustes DESTA proteção (curve, in, ir, tms, isden, isd, tsd, iien, ii, tinst, tab) e a tolerância DIGITADA de quem o banco não declara banda: toli (± % nos pickups), tolt (± % no tempo das curvas L e S) e tolii (± % só na instantânea — vence o toli no Ii). A identidade (placement_key) é resolvida no servidor, onde ela é definida — o cliente não a calcula. Fusível e MCB são de BANDA: aqui não há ajuste a fazer e o que vier é ignorado pelo núcleo. A curva TÉRMICA tabelada (G325), para o modelo cujo banco não a declara: `pts` (pontos [múltiplo, t_s] da borda lenta), `pts_rapida` (a rápida, opcional), `pts_base` ('Ir' ou 'In', obrigatória) e `pts_fonte` (de onde vieram)
  - `datablock` 'curto' | 'arco' | 'adequacao' | 'protecao': O QUE cabe no bloco de dados de cada barra, decidido no SERVIDOR — não é filtro de tela. `curto` traz as quatro correntes; `arco` traz só a Ik3φ, porque a energia e o tempo entram pelo estudo e quatro correntes ao lado deles tornam o bloco ilegível; `adequacao` traz Ik3φ e ip, que são as duas que o duty compara; `protecao` traz a máxima e a MÍNIMA, que são os limites entre os quais o pickup vive
  - `unifilar_subrede` string, nullable: id de barra: desenha só a ÁREA dela (a barra e o que está a jusante). As áreas da rede vêm em `areas`; None = a folha da rede inteira
  - `barras` object[], required: as barras (id, label, Vn_kV) — até 500 por rede (G342)
  - `elementos` object[], required: transformadores, cabos, barramentos e reatores — até 1000 por rede (G342)
  - `fonte` object, nullable: a concessionária no ponto de conexão. Ausente (ou nula) só na rede alimentada por gerador — sem nenhum dos dois é recusa de forma
  - `motores` object[], nullable
  - `geradores` object[], nullable: geradores síncronos por barra (G334, IEC 60909-0 §6.6.1): bus_id, label, Sn_kVA, xd2_pu, cos_phi e os opcionais U_rG_kV, x0_pu, aterramento, Rn_ohm
  - `cenarios` object[], nullable: os cenários de OPERAÇÃO (G336): nome, `fontes` em serviço ('concessionaria' e as barras com gerador; ausente = todas) e `abertas` (os elementos abertos, [DE, PARA] ou 'DE→PARA'). Com eles o estudo de arco de cada barra é o do cenário de MAIS energia
  - `lang` string
  - `unifilar` boolean
  - `folha` Folha: Carimbo do unifilar (sheet_meta): o que a UI sabe do estudo.
    - `local` string
    - `equip` string
    - `resp` string
    - `crea` string: registro do responsável no CREA
    - `art` string: nº da ART do estudo
    - `rev` string: identificação da revisão (ex.: 'rev 3')
    - `rev_data` string: data da revisão, como o emissor a escreve
    - `wl_name` string

## Response `200`

Successful Response

- ValidacaoOut: O que a instalação já é, o que ainda não é, e o que o motor recusaria — SEM calcular. Não substitui o motor: recusa que só o cálculo revela continua saindo de lá, com a mensagem da norma.
  - `prontas` object
  - `pendentes` string[]: linha em digitação ainda não é rede (G130), declarada com o id
  - `recusas` AchadoRede[]
    - `ref` string: o elemento — id de barra, `de→para` ou 'fonte'
    - `campo` string
    - `motivo` string, required
  - `avisos` AchadoRede[]: o motor aceita, e provavelmente não é o que se quis
    - `ref` string: o elemento — id de barra, `de→para` ou 'fonte'
    - `campo` string
    - `motivo` string, required
  - `sugestoes` SugestaoRede[]
    - `id` string, required
    - `ref` string
    - `titulo` string, required
    - `descricao` string
    - `campos` object: o que aplicar nas barras de `ref`

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/estudoseletricos/apis/arc-flash-platform-api.md) · [All operations](https://skmtc.dev/estudoseletricos/apis/arc-flash-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/estudoseletricos/apis/arc-flash-platform-api/revisions/5877d717cb1b?raw)
