---
title: "Study Plant"
method: POST
path: "/api/v1/study/plant"
tags: ["estudo"]
---

# Study Plant

`POST /api/v1/study/plant`

## 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/study/plant`
- Auth: none declared

A energia incidente de TODAS as barras da rede, de uma vez.

É o estudo por barra repetido pela cadeia que a rede já resolveu — o mesmo
número, a mesma geometria, o mesmo motor. Serve para ver a planta inteira
antes de emitir documento; o ZIP com as etiquetas é a rota irmã.

## Request body

- PlantaRequest: A planta INTEIRA a partir de UMA rede resolvida. O corpo é o do estudo por barra sem `barra_estudo`: a mesma rede, as mesmas proteções e os mesmos ajustes. A diferença é o produto — em vez da folha de uma barra, a tabela de energia incidente de TODAS as barras que a cadeia de proteção alcança, pronta para virar etiqueta.
  - `rede` NetworkRequest, required: 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
  - `protecoes` Protecao[]
    - `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)
  - `ajustes` object: por placement_key, como em study/bus
  - `geometria` object: por id de barra
  - `cb_open_ms` number: tempo de abertura do disjuntor (ms) — o MESMO da folha: a etiqueta tem de dizer a energia que o estudo da barra diz
  - `t_sem_atuacao_ms` number, nullable: OPÇÃO, desligada por padrão (nulo): o tempo máximo de arco, em ms, adotado na barra cuja proteção EXISTE e não vê nenhuma das correntes de arco (G329). Com ela a barra ganha energia no tempo declarado — sem somar abertura — e a marca `t_max_adotado = sem_atuacao`; sem ela, sai sem número, como sempre. Maior que zero e no máximo 2000 ms (IEEE 1584:2018 §6.9.1), senão 422. A barra sem proteção declarada continua sem número, e o alerta `retaguarda_cega` permanece
  - `banda_padrao` 'norma', nullable: a banda padrão do disparador de curto-circuito — a MESMA opção do estudo da barra (ver `StudyRequest.banda_padrao`): a etiqueta tem de dizer a energia que a folha diz. Nulo = a curva nominal
  - `base_ibf` 'pior_caso' | 'nominal', nullable: OPÇÃO, desligada por padrão (nulo = a corrente de curto MÁXIMA, como sempre): 'pior_caso' calcula cada barra também com a corrente MÍNIMA (IEC 60909-0 §7.1.2, ou a fonte mínima que a concessionária declara em `fonte.Icc_min_kA`) e fica com a que dá MAIS energia no cenário governante (NBR 17227 §4.2.1.3 e §5.1.12). O modo que governou sai em `ibf_base` de cada cenário; a corrente mínima que não pôde ser calculada é 422. 'nominal' (G328) calcula a energia com a corrente de TENSÃO NOMINAL — c = 1,0 no ponto de falta, sem K_T e os cabos em `t_cabo_C` (nulo = a temperatura de cada cabo): a base dos estudos feitos em tensão nominal, FORA do §7.1.2, dita no laudo; a máxima da norma segue dimensionando a barra
  - `t_cabo_C` number, nullable: a temperatura dos cabos (°C) na base `nominal` de Ibf (G328): nula = a temperatura declarada em cada cabo. Só vale com `base_ibf='nominal'`
  - `barras` string[], nullable: subconjunto de barras; None = todas as que têm estudo
  - `geometria_padrao` GeometriaPadrao: A geometria padrão da PLANTA por classe de tensão — o 'study case' do arco (W6). Cada classe é uma declaração PARCIAL sobre o padrão do núcleo (o campo nulo continua sendo o dele), e a declaração POR BARRA prevalece sobre as duas. Duas classes porque o padrão do núcleo tem duas (até 1 kV · acima).
    - `bt` Geometria: A geometria de arco DAQUELA barra — uma declaração PARCIAL sobre o padrão por tensão do núcleo (BT: G=32 · D=610 · MT: G=152 · D=914). Nenhum campo é obrigatório e nenhum tem default AQUI: quem sabe o padrão é o núcleo, e repeti-lo no contrato seria a segunda definição dele. O que vier nulo continua sendo o padrão — é o que permite declarar só a distância de trabalho de cinquenta barras sem afirmar medição do resto.
      - `G` number, nullable
      - `D` number, nullable
      - `W` number, nullable
      - `H` number, nullable
      - `P` number, nullable
      - `cfg` string, nullable
      - `confirmado` boolean, nullable: a geometria foi CONFERIDA em campo, e não assumida do padrão por tensão. Não muda cálculo nenhum — muda o que o memorial afirma, e afirmar que se mediu o que se herdou é o começo de um laudo errado
    - `mt` Geometria: A geometria de arco DAQUELA barra — uma declaração PARCIAL sobre o padrão por tensão do núcleo (BT: G=32 · D=610 · MT: G=152 · D=914). Nenhum campo é obrigatório e nenhum tem default AQUI: quem sabe o padrão é o núcleo, e repeti-lo no contrato seria a segunda definição dele. O que vier nulo continua sendo o padrão — é o que permite declarar só a distância de trabalho de cinquenta barras sem afirmar medição do resto.
      - `G` number, nullable
      - `D` number, nullable
      - `W` number, nullable
      - `H` number, nullable
      - `P` number, nullable
      - `cfg` string, nullable
      - `confirmado` boolean, nullable: a geometria foi CONFERIDA em campo, e não assumida do padrão por tensão. Não muda cálculo nenhum — muda o que o memorial afirma, e afirmar que se mediu o que se herdou é o começo de um laudo errado
  - `ciencia` CienciaIn: O que a tela declara ao pedir um documento assinável: o Termo aceito e o `hash` do conjunto de alertas de que deu ciência.
    - `termo_aceito` boolean
    - `hash` string
  - `projeto` string
  - `responsavel` string
  - `revisoes` Revisao[]: histórico de revisões da planta, na ordem em que foi escrito; a vigente é a ÚLTIMA
    - `n` string, required: identificação da revisão, como o emissor a escreve
    - `data` string
    - `motivo` string
  - `estudos` object: por slug de ESTUDOS_DA_PLANTA (arco, curto, coordenograma, seletividade, partida): a revisão contra a qual cada um foi feito
  - `emissao` EmissaoDocumento: A emissão do DOCUMENTO (C32) — NÃO é a revisão da INSTALAÇÃO (G155). Uma conta quantas vezes o documento saiu (0, 1, 2…, com histórico) e avança sozinha a cada save; a outra é a identificação que o engenheiro declara ('rev 3', 'Rev. C') e diz o que a instalação é hoje. Estavam no mesmo campo, e o contador de emissões saía carimbado no unifilar como revisão vigente — uma revisão que ninguém declarou.
    - `n` integer, nullable: número da emissão que produziu o arquivo; nulo = documento nunca emitido
    - `data` string
    - `emissoes` integer: quantas emissões o histórico registra
    - `anterior_data` string: a data da emissão que esta substitui (a n−1); vazia quando não há anterior ou o histórico não a guarda
  - `origem` string: procedência do MODELO (`_gerado_por`): rede montada por IA a partir dos documentos do engenheiro — a conferência é dele, e o documento registra de onde veio o modelo

## Response `200`

Successful Response

- PlantaOut
  - `duty` DutyDispositivo[]: a adequação de CADA proteção posicionada — a MESMA lista do modo Curto; é dela que saem os alertas de duty, nomeando a proteção
    - `idx` integer, required
    - `label` string, required
    - `kind` string
    - `barra` string: a barra onde a proteção OPERA
    - `I_ref_kA` number, nullable: max(Ik3″, Ik1″) — o §7.5 aponta a fase-terra quando Z0 < Z1
    - `Icu_kA` number, nullable
    - `status` 'ok' | 'inadequado' | 'nao_avaliavel'
    - `margem_pct` number, nullable: (Icu − I_ref)/Icu × 100 — negativa = inadequada
    - `motivo` string
  - `estudos_realizados` string[]: a planta inteira é o estudo de ARCO de todas as barras; a folha de coordenação é de UMA barra e sai pelo `study/bus`
  - `linhas` LinhaLoteOut[], required
    - `equipamento` string
    - `Voc_kV` number, nullable
    - `Ibf_kA` number, nullable
    - `Ei_cal` number, nullable
    - `LAS_mm` number, nullable
    - `categoria` string, nullable
    - `erro` string
    - `tempo_limitado` boolean: o tempo de eliminação desta barra foi LIMITADO a 2 s (IEEE 1584:2018 §6.9.1): a proteção levaria mais — a etiqueta e o memorial declaram
    - `t_max_adotado` string, nullable: a barra está no tempo MÁXIMO (IEEE 1584:2018 §6.9.1) por uma corrente de arco que a proteção não vê (reduzida_cega · plena_cega, G313) ou por nenhuma delas com a opção `t_sem_atuacao_ms` (sem_atuacao, G329); nulo = a proteção eliminou as duas
  - `tabela_mestra` LinhaMestraOut[]: a TABELA-MESTRA da planta — uma linha por barra, a do §11 do laudo
    - `bus_id` string, required
    - `label` string, required
    - `Vn_kV` number, required
    - `Ibf_kA` number, required
    - `Iarc_kA` number, nullable
    - `Ibf_arco_kA` number, nullable: a corrente de falta com que o Ei governante foi calculado (kA): a `Ibf_kA` sem o pior caso; com ele, a do modo que governou (G333)
    - `ibf_base` 'max' | 'min' | 'nominal', nullable: o modo que o pior caso escolheu; nulo sem a opção
    - `Imin_kA` number, nullable: a corrente de arco REDUZIDA da barra (kA)
    - `cenario_governante` string, nullable: o lado que governa (bus · line) e, no pior caso, o modo: 'line·min'
    - `dispositivo_gov` string, nullable: a proteção que elimina no cenário governante
    - `corrente_gov` 'plena' | 'reduzida', nullable: qual corrente de arco dá o Ei governante
    - `t_pleno_gov_ms` number, nullable: o tempo da corrente plena no cenário governante (ms)
    - `t_reduzido_gov_ms` number, nullable: o tempo da corrente reduzida no cenário governante (ms)
    - `AFB_gov_mm` number, nullable: a distância-limite de aproximação (AFB) governante (mm)
    - `estado_gov` string, nullable: o estado do lado governante (ver `Cenario.estado`)
    - `regiao_gov` 'instantanea' | 'curto_retardo' | 'inversa' | 'nao_atua' | 'banda', nullable: a região da curva de onde saiu o tempo da corrente que governa
    - `ip_kA` number, nullable
    - `Ith_kA` number, nullable
    - `bus` Cenario
      - `role` string, required
      - `device_label` string, required
      - `Ei_cal` number, nullable
      - `AFB_mm` number, nullable
      - `t_pleno_ms` number, nullable
      - `t_reduzido_ms` number, nullable
      - `capped_2s` boolean
      - `no_trip` boolean
      - `fora_escopo` string, nullable: acima de 15 kV: por que este lado não tem número do IEEE 1584
      - `t_max_adotado` 'reduzida_cega' | 'plena_cega' | 'sem_atuacao' | 'fusivel_abaixo_I3', nullable: este lado está no tempo MÁXIMO (IEEE 1584:2018 §6.9.1) porque a proteção não vê uma das correntes de arco (G313): reduzida_cega · plena_cega; ou nenhuma delas, com a opção `t_sem_atuacao_ms` ligada (G329): sem_atuacao; fusivel_abaixo_I3 reservado. NÃO é o `capped_2s`, que diz que a proteção levaria MAIS
      - `t_max_adotado_ms` number, nullable: o tempo adotado (ms) quando `t_max_adotado` está marcado: 2000 nas correntes cegas do D1, o `t_sem_atuacao_ms` declarado no sem_atuacao (G329) — é o número que o memorial e a etiqueta imprimem
      - `estado` 'ok' | 'tempo_limitado' | 'tempo_maximo_adotado' | 'sem_atuacao' | 'sem_protecao' | 'fora_escopo': o estado deste lado, derivado no núcleo (um só lugar: `topo_lineside.estado_do_cenario`) — a tela e o laudo leem daqui
      - `regiao_plena` 'instantanea' | 'curto_retardo' | 'inversa' | 'nao_atua' | 'banda', nullable: a região da curva em que o dispositivo elimina a corrente de arco PLENA, na borda lenta da banda — a mesma régua do tempo (G330): instantanea · curto_retardo · inversa · nao_atua (a corrente que ele não vê) · banda (fusível e MCB). Nulo sem dispositivo ou acima de 15 kV
      - `regiao_reduzida` 'instantanea' | 'curto_retardo' | 'inversa' | 'nao_atua' | 'banda', nullable: o mesmo para a corrente de arco REDUZIDA
      - `ibf_kA` number, nullable: a corrente de falta franca com que ESTA energia foi calculada (kA) — a máxima da barra, ou a mínima quando o pior caso a escolheu (G333)
      - `ibf_base` 'max' | 'min' | 'nominal', nullable: com a opção `base_ibf='pior_caso'`, de qual modo veio a corrente: max · min; nulo sem a opção (a máxima de sempre)
      - `rotulo_posicao` string, nullable: ONDE está a proteção deste lado (G317): a entrada da própria barra, o alimentador dela, a proteção de uma barra acima ou a retaguarda N níveis acima — a frase curta, pela barra que a proteção alimenta
      - `posicao_niveis` integer, nullable: quantos níveis acima da barra estudada fica a barra que a proteção deste lado alimenta (0 = a própria barra)
      - `corrente_governante` 'plena' | 'reduzida', nullable: qual corrente de arco dá o Ei deste lado (G318): plena · reduzida
    - `line` Cenario
      - `role` string, required
      - `device_label` string, required
      - `Ei_cal` number, nullable
      - `AFB_mm` number, nullable
      - `t_pleno_ms` number, nullable
      - `t_reduzido_ms` number, nullable
      - `capped_2s` boolean
      - `no_trip` boolean
      - `fora_escopo` string, nullable: acima de 15 kV: por que este lado não tem número do IEEE 1584
      - `t_max_adotado` 'reduzida_cega' | 'plena_cega' | 'sem_atuacao' | 'fusivel_abaixo_I3', nullable: este lado está no tempo MÁXIMO (IEEE 1584:2018 §6.9.1) porque a proteção não vê uma das correntes de arco (G313): reduzida_cega · plena_cega; ou nenhuma delas, com a opção `t_sem_atuacao_ms` ligada (G329): sem_atuacao; fusivel_abaixo_I3 reservado. NÃO é o `capped_2s`, que diz que a proteção levaria MAIS
      - `t_max_adotado_ms` number, nullable: o tempo adotado (ms) quando `t_max_adotado` está marcado: 2000 nas correntes cegas do D1, o `t_sem_atuacao_ms` declarado no sem_atuacao (G329) — é o número que o memorial e a etiqueta imprimem
      - `estado` 'ok' | 'tempo_limitado' | 'tempo_maximo_adotado' | 'sem_atuacao' | 'sem_protecao' | 'fora_escopo': o estado deste lado, derivado no núcleo (um só lugar: `topo_lineside.estado_do_cenario`) — a tela e o laudo leem daqui
      - `regiao_plena` 'instantanea' | 'curto_retardo' | 'inversa' | 'nao_atua' | 'banda', nullable: a região da curva em que o dispositivo elimina a corrente de arco PLENA, na borda lenta da banda — a mesma régua do tempo (G330): instantanea · curto_retardo · inversa · nao_atua (a corrente que ele não vê) · banda (fusível e MCB). Nulo sem dispositivo ou acima de 15 kV
      - `regiao_reduzida` 'instantanea' | 'curto_retardo' | 'inversa' | 'nao_atua' | 'banda', nullable: o mesmo para a corrente de arco REDUZIDA
      - `ibf_kA` number, nullable: a corrente de falta franca com que ESTA energia foi calculada (kA) — a máxima da barra, ou a mínima quando o pior caso a escolheu (G333)
      - `ibf_base` 'max' | 'min' | 'nominal', nullable: com a opção `base_ibf='pior_caso'`, de qual modo veio a corrente: max · min; nulo sem a opção (a máxima de sempre)
      - `rotulo_posicao` string, nullable: ONDE está a proteção deste lado (G317): a entrada da própria barra, o alimentador dela, a proteção de uma barra acima ou a retaguarda N níveis acima — a frase curta, pela barra que a proteção alimenta
      - `posicao_niveis` integer, nullable: quantos níveis acima da barra estudada fica a barra que a proteção deste lado alimenta (0 = a própria barra)
      - `corrente_governante` 'plena' | 'reduzida', nullable: qual corrente de arco dá o Ei deste lado (G318): plena · reduzida
    - `governing` string
    - `Ei_gov` number, nullable
    - `t_gov_ms` number, nullable
    - `categoria` Categoria
      - `n` integer, required: 1 = abaixo do LAS · 2 = Tab. 11 · 3 = Tab. 12 · 5 = proibido
      - `label` string, required
      - `faixa` string, required
    - `Icu_kA` number, nullable
    - `duty_status` string
    - `duty_margin_pct` number, nullable
    - `ajustes_do_estudo` boolean: todos os dispositivos da cadeia com os ajustes do ESTUDO (ou curva fixa); falso = os padrão de triagem
    - `geometria` object, nullable: a usada
    - `geo_declarada` string[]: os campos que ESTA barra declarou; vazio = o padrão por tensão
    - `geo_da_planta` string[]: os campos que vieram do padrão da PLANTA (a barra não os declarou)
    - `has_protection` boolean
    - `radial` boolean
    - `fora_escopo` string, nullable
    - `aviso_abertura` string, nullable
    - `notas` string[]
    - `operacao` string, nullable
    - `operacoes` object
  - `criterios` CriterioOut[]: os CRITÉRIOS DO ESTUDO declarados (G318) — os mesmos do estudo da barra, para a planta inteira
    - `chave` string, required
    - `rotulo` string, required
    - `valor` string, required
  - `ciencia` CienciaOut: O GATE DE EMISSÃO (C29 · W8): o Termo e o CONJUNTO de alertas em vigor, com a impressão dele. A ciência vale para o conjunto em que foi dada — mudou o conjunto, muda o `hash`, e ela cai. Conjunto vazio ainda exige o Termo.
    - `termo` string, required
    - `alertas` AlertaCiencia[]
      - `codigo` string, required
      - `severidade` string, required
      - `texto` string, required
    - `hash` string, required
    - `n` integer
  - `impressao_modelo` string, nullable: a IMPRESSÃO DO MODELO (W8) — a mesma do estudo da barra para o mesmo modelo; é a que a capa do caderno imprime
  - `sem_estudo` BarraSemEstudo[], required
    - `bus_id` string, required
    - `label` string, required
    - `Vn_kV` number, required
    - `Ibf_kA` number, nullable
    - `motivo` string, required
  - `alertas` AlertaRedeOut[]: o que a rede denuncia: energia alta, retaguarda cega e duty
    - `tipo` 'energia' | 'retaguarda_cega' | 'sem_retaguarda' | 'duty' | 'tempo_abertura', required
    - `severidade` 'critico' | 'alto' | 'atencao', required
    - `bus_id` string, required
    - `label` string, required
    - `valor` number, nullable
    - `texto` string, required
  - `n_ok` integer, required
  - `n_sem_estudo` integer, required
  - `indice` IndiceOut: O índice dos estudos da planta contra a revisão vigente (D3). `revisao` é `None` quando a planta não declara nenhuma — e nesse caso NENHUM estudo aparece como `em_dia`: sem régua não há medida, e apresentar como conforme uma comparação que não aconteceu é o defeito que este contrato existe para impedir.
    - `revisao` Revisao: Uma revisão do estudo da planta. O gatilho é o da NBR 17227 §11.3 — mudança na instalação ou publicação de norma —, e é por isso que o `motivo` existe: o que justifica a revisão é o fato, não a passagem do tempo.
      - `n` string, required: identificação da revisão, como o emissor a escreve
      - `data` string
      - `motivo` string
    - `revisoes` Revisao[]
      - `n` string, required: identificação da revisão, como o emissor a escreve
      - `data` string
      - `motivo` string
    - `linhas` LinhaIndice[]
      - `slug` string, required
      - `estudo` string, required
      - `norma` string, required
      - `estado` string, required: em_dia · defasado · revisao_desconhecida · sem_carimbo · sem_revisao · nao_realizado
      - `detalhe` string
      - `rev` string
      - `data` string
      - `obs` string
    - `contagem` object
    - `em_dia` boolean
    - `pendentes` string[]
  - `engine` string, required
  - `tier` string, required

## 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)
