openapi: 3.1.0
info:
  title: API de jurisprudência do Fontejus
  version: '0'
  description:
    Beta fechado, só por convite, ainda não disponível ao público. Três rotas sobre seis bases.
    Contrato baseado nas fontes de 11/10/2026; exemplos reais da versão 70e0123, sem alterações nos valores.
    A cobertura não garante ausência de lacunas nem todos os julgados de um tribunal. Status HTTP e estruturas
    sem confirmação são indicados expressamente.
servers:
  - url: https://api.fontejus.example
    description: Endereço reservado para exemplos; não é o endereço real da API.
security:
  - Bearer: []
paths:
  /v1/jurisprudencia/cobertura:
    get:
      operationId: lerCobertura
      summary: Consultar cobertura e catálogo de tribunais
      description:
        Não exige chave. Cobertura guardada em arquivo e recalculada a cada 24 horas; sem arquivo,
        o cálculo começa cinco minutos após o início do serviço. calculado=false enquanto não termina.
        O intervalo não promete atualização das decisões.
      security: []
      responses:
        '200':
          description: Cobertura e catálogo na data indicada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cobertura'
              examples:
                cobertura:
                  summary: cobertura.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    bases:
                      - base: tst
                        total: 1897934
                        periodo_do_julgamento:
                          de: '2015-12-02'
                          ate: '2026-09-23'
                        periodo_da_publicacao:
                          de: '1994-11-07'
                          ate: '2026-09-28'
                        tipos:
                          - acordao
                          - decisao_monocratica
                          - decisao_presidencia
                          - decisao_vice_presidencia
                          - decisao_corregedoria
                          - sumula
                          - orientacao_jurisprudencial
                          - precedente_normativo
                        calculado: true
                        calculado_em: '2026-10-11T20:35:23Z'
                      - base: stf
                        total: 929181
                        periodo_do_julgamento:
                          de: '1963-12-13'
                          ate: '2026-10-08'
                        periodo_da_publicacao:
                          de: '1951-06-14'
                          ate: '2026-10-09'
                        tipos:
                          - acordao
                          - decisao_monocratica
                          - sumula
                          - informativo
                        calculado: true
                        calculado_em: '2026-10-11T20:35:39Z'
                      - base: stj
                        total: 877099
                        periodo_do_julgamento:
                          de: '1989-02-19'
                          ate: '2026-08-26'
                        periodo_da_publicacao:
                          de: null
                          ate: null
                        tipos:
                          - acordao
                        calculado: true
                        calculado_em: '2026-10-11T20:35:40Z'
                      - base: tjmg
                        total: 951398
                        periodo_do_julgamento:
                          de: '2016-08-17'
                          ate: '2026-10-08'
                        periodo_da_publicacao:
                          de: '2023-06-20'
                          ate: '2026-10-09'
                        tipos:
                          - acordao
                        calculado: true
                        calculado_em: '2026-10-11T20:37:14Z'
                      - base: trt3
                        total: 589908
                        periodo_do_julgamento:
                          de: '2020-03-06'
                          ate: '2026-10-05'
                        periodo_da_publicacao:
                          de: '2021-09-15'
                          ate: '2026-10-06'
                        tipos:
                          - acordao
                        calculado: true
                        calculado_em: '2026-10-11T20:38:50Z'
                      - base: eproc
                        total: 271005
                        periodo_do_julgamento:
                          de: null
                          ate: null
                        periodo_da_publicacao:
                          de: null
                          ate: null
                        tipos:
                          - acordao
                          - decisao_monocratica
                          - sumula
                        calculado: true
                        calculado_em: '2026-10-11T20:39:04Z'
                    tipos_aceitos:
                      - acordao
                      - decisao_monocratica
                      - decisao_presidencia
                      - decisao_vice_presidencia
                      - decisao_corregedoria
                      - sumula
                      - orientacao_jurisprudencial
                      - precedente_normativo
                      - informativo
                    tribunais:
                      - codigo: tst
                        nome: Tribunal Superior do Trabalho
                        base: tst
                        ramo: trabalhista
                        uf: BR
                      - codigo: stf
                        nome: Supremo Tribunal Federal
                        base: stf
                        ramo: superior
                        uf: BR
                      - codigo: stj
                        nome: Superior Tribunal de Justiça
                        base: stj
                        ramo: superior
                        uf: BR
                      - codigo: tnu
                        nome: Turma Nacional de Uniformização dos Juizados Especiais Federais
                        base: eproc
                        ramo: federal
                        uf: BR
                      - codigo: trf6
                        nome: Tribunal Regional Federal da 6ª Região (e turmas recursais)
                        base: eproc
                        ramo: federal
                        uf: MG
                      - codigo: trt3
                        nome: Tribunal Regional do Trabalho da 3ª Região
                        base: trt3
                        ramo: trabalhista
                        uf: MG
                      - codigo: tjmg
                        nome: Tribunal de Justiça de Minas Gerais
                        base: tjmg
                        ramo: estadual
                        uf: MG
        '405': &id001
          description: Método não permitido. Cabeçalhos a confirmar nos exemplos fornecidos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
              examples:
                erro-405-metodo:
                  summary: erro-405-metodo.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    erro: método não permitido nesta rota
                    codigo: METODO_NAO_PERMITIDO
        '429': &id002
          description:
            Limite de velocidade por IP, aplicado antes da API. Resposta dessa camada sem o
            JSON com codigo da API; formato e valor do limite não definidos neste contrato.
        default:
          description:
            'Outros erros documentados: COTA_ESGOTADA, ROTA_NAO_ENCONTRADA e TEMPO_ESGOTADO
            na leitura de documento. Seus status HTTP estão a confirmar nas fontes fornecidas. Nenhum
            corpo de resposta foi inventado como exemplo.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
  /v1/jurisprudencia/busca:
    get:
      operationId: buscarDecisoes
      summary: Buscar decisões por texto e filtros
      description:
        Sem tribunal, uf ou ramo, consulta todas as bases atuais. Com mais de oito bases, essa
        busca sem escolha é recusada com 400. Resultados são intercalados entre bases. Uma base pode cair
        de relevancia para recentes e informa ordem_aplicada; a ordem é mantida no cursor. Contagem limitada
        a 1000 por base, só na primeira página e se houver tempo. Sem filtros por relator, órgão ou classe.
      parameters:
        - name: q
          in: query
          required: true
          description:
            De 2 a 300 caracteres Unicode. Palavras soltas são literais e exigidas em conjunto;
            aspas, parênteses, AND, OR, NOT, NEAR e * usam sintaxe FTS5.
          schema:
            type: string
            minLength: 2
            maxLength: 300
        - name: tribunal
          in: query
          required: false
          description: Códigos do catálogo, separados por vírgula.
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              enum:
                - tst
                - stf
                - stj
                - tnu
                - trf6
                - trt3
                - tjmg
        - name: uf
          in: query
          required: false
          description:
            Siglas separadas por vírgula; BR significa tribunais nacionais. uf=mg busca Minas
            Gerais; uf=mg,br inclui os nacionais.
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: ramo
          in: query
          required: false
          description: Ramos separados por vírgula. tribunal, uf e ramo combinam-se com E.
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              enum:
                - trabalhista
                - estadual
                - federal
                - superior
        - name: tipo
          in: query
          schema:
            $ref: '#/components/schemas/Tipo'
        - name: data_de
          in: query
          description:
            Data de julgamento, AAAA-MM-DD, existente no calendário. data_de não pode ser posterior
            a data_ate.
          schema:
            type: string
            format: date
        - name: data_ate
          in: query
          description:
            Data de julgamento, AAAA-MM-DD, existente no calendário. data_de não pode ser posterior
            a data_ate.
          schema:
            type: string
            format: date
        - name: ordem
          in: query
          schema:
            allOf:
              - $ref: '#/components/schemas/Ordem'
            default: relevancia
        - name: limite
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 20
        - name: cursor
          in: query
          description:
            proximo_cursor da resposta anterior; mantenha os demais parâmetros. Guarda posições,
            ordem aplicada e intercalação. Não monte manualmente.
          schema:
            type: string
      responses:
        '200':
          description: Resultados, informações por base e cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Busca'
              examples:
                busca-uf-mg:
                  summary: busca-uf-mg.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    itens:
                      - id: eproc:240666
                        base: eproc
                        fonte: TRF6
                        tipo: acordao
                        processo: 0012856-53.2014.4.01.3811
                        classe:
                          sigla: AC
                          descricao: Apelação Cível
                        orgao_julgador: 3ª Turma
                        relator: ALVARO RICARDO DE SOUZA CRUZ
                        data_julgamento: '2025-05-09'
                        data_publicacao: '2025-05-13'
                        ementa_status: completa
                        trecho_da_ementa:
                          'DIREITO TRIBUTÁRIO E PROCESSUAL CIVIL. EXECUÇÃO FISCAL. PRESCRIÇÃO
                          INTERCORRENTE. PEDIDO DE PARCELAMENTO. POSTERIOR AO TERMO FINAL DA PRESCRIÇÃO
                          INTERCORRENTE. AGRAVO INTERNO DESPROVIDO.

                          I. CASO EM EXAME

                          Agravo interno interposto pela União (Fazenda Nacional) contra decisão terminativa
                          que negou provimento à sua apelação, mantendo a sentença de primeiro grau que
                          extinguiu a execução fiscal em razã'
                      - id: trt3:189932
                        base: trt3
                        fonte: TRT3
                        tipo: acordao
                        processo: 0011502-38.2016.5.03.0107 (AP)
                        classe:
                          sigla: AP
                          descricao: null
                        orgao_julgador: Sexta Turma
                        relator: Anemar Pereira Amaral
                        data_julgamento: '2026-02-11'
                        data_publicacao: '2026-02-12'
                        ementa_status: completa
                        trecho_da_ementa:
                          'DIREITO PROCESSUAL DO TRABALHO. AGRAVO DE PETIÇÃO. PRESCRIÇÃO
                          INTERCORRENTE. INOCORRÊNCIA. PROVIMENTO.


                          I. Caso em exame. Agravo de petição interposto pelo exequente contra decisão que
                          reconheceu a prescrição intercorrente, extinguindo a execução. Alega o agravante
                          a inexistência de inércia, diante de diversos requerimentos de prosseguimento
                          da execução, e a não ocorrência do prazo bienal para a p'
                    por_base:
                      - base: eproc
                        ordem_aplicada: relevancia
                        encontrados_ate_1000: 1000
                        ha_mais_de_1000: true
                        ms: 364
                      - base: trt3
                        ordem_aplicada: relevancia
                        encontrados_ate_1000: 1000
                        ha_mais_de_1000: true
                        ms: 459
                      - base: tjmg
                        ordem_aplicada: relevancia
                        encontrados_ate_1000: 1000
                        ha_mais_de_1000: true
                        ms: 501
                    bases_sem_resposta: []
                    proximo_cursor: eyJvIjp7ImVwcm9jIjoxLCJ0cnQzIjoxfSwiciI6eyJlcHJvYyI6InJlbGV2YW5jaWEiLCJ0am1nIjoicmVsZXZhbmNpYSIsInRydDMiOiJyZWxldmFuY2lhIn0sInAiOjJ9
                busca-tjmg-com-filtros:
                  summary: busca-tjmg-com-filtros.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    itens:
                      - id: tjmg:10793
                        base: tjmg
                        fonte: TJMG
                        tipo: acordao
                        processo: 4124579-07.2026.8.13.0000
                        classe:
                          sigla: Agravo de Instrumento-Cv
                          descricao: null
                        orgao_julgador: 1º Núcleo de Justiça 4.0 - Cív
                        relator: Paulo Gastão de Abreu (JD)
                        data_julgamento: '2026-09-15'
                        data_publicacao: '2026-09-17'
                        ementa_status: completa
                        trecho_da_ementa:
                          'DIREITO PROCESSUAL CIVIL. AGRAVO DE INSTRUMENTO. EXECUÇÃO DE
                          TÍTULO EXTRAJUDICIAL. EXCEÇÃO DE PRÉ-EXECUTIVIDADE. PRESCRIÇÃO INTERCORRENTE.
                          AUSÊNCIA DE INÉRCIA DO EXEQUENTE. RECURSO DESPROVIDO.


                          I. CASO EM EXAME


                          Agravo de instrumento interposto contra decisão de rejeição da exceção de pré-executividade,
                          afastando a alegação de prescrição intercorrente em execução de título extrajudicial.


                          II. QUES'
                      - id: tjmg:823382
                        base: tjmg
                        fonte: TJMG
                        tipo: acordao
                        processo: 3061808-44.2025.8.13.0000
                        classe:
                          sigla: Agravo de Instrumento-Cv
                          descricao: null
                        orgao_julgador: 18ª CÂMARA CÍVEL
                        relator: Sérgio André da Fonseca Xavier
                        data_julgamento: '2025-10-21'
                        data_publicacao: '2025-10-22'
                        ementa_status: completa
                        trecho_da_ementa:
                          'DIREITO PROCESSUAL CIVIL. AGRAVO DE INSTRUMENTO. CUMPRIMENTO
                          DE SENTENÇA. PRESCRIÇÃO INTERCORRENTE. ATUAÇÃO PROCESSUAL DEMONSTRADA. NÃO CONFIGURAÇÃO.
                          RECURSO DESPROVIDO.


                          I. CASO EM EXAME


                          Agravo de instrumento interposto contra decisão que indeferiu pedido de reconhecimento
                          de prescrição intercorrente e determinou o prosseguimento da execução de título
                          extrajudicial. A agravante sustentou a ocorr'
                    por_base:
                      - base: tjmg
                        ordem_aplicada: relevancia
                        encontrados_ate_1000: 1000
                        ha_mais_de_1000: true
                        ms: 140
                    bases_sem_resposta: []
                    proximo_cursor: eyJvIjp7InRqbWciOjJ9LCJyIjp7InRqbWciOiJyZWxldmFuY2lhIn0sInAiOjB9
                busca-trf6:
                  summary: busca-trf6.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    itens:
                      - id: eproc:262765
                        base: eproc
                        fonte: TRF6
                        tipo: acordao
                        processo: 1000279-67.2023.4.06.3812
                        classe:
                          sigla: AC
                          descricao: Apelação Cível
                        orgao_julgador: 2ª Turma - PREV/SERV
                        relator: FLAVIO BOSON GAMBOGI
                        data_julgamento: '2024-11-27'
                        data_publicacao: '2024-12-03'
                        ementa_status: completa
                        trecho_da_ementa:
                          'DIREITO PREVIDENCIÁRIO. APELAÇÃO CÍVEL. PRESCRIÇÃO DO FUNDO DE
                          DIREITO AFASTADA. APLICAÇÃO DA PRESCRIÇÃO QUINQUENAL. ANULAÇÃO DA SENTENÇA. RETORNO
                          DOS AUTOS PARA INSTRUÇÃO PROBATÓRIA. APELAÇÃO PROVIDA.

                          I. Caso em Exame

                          1. Apelação cível contra sentença que reconheceu a prescrição do fundo de direito
                          em demanda previdenciária, referente a decisão administrativa de 18.06.2009, com
                          ação ajuizada em 2'
                    por_base:
                      - base: eproc
                        ordem_aplicada: relevancia
                        encontrados_ate_1000: 1000
                        ha_mais_de_1000: true
                        ms: 155
                    bases_sem_resposta: []
                    proximo_cursor: eyJvIjp7ImVwcm9jIjoxfSwiciI6eyJlcHJvYyI6InJlbGV2YW5jaWEifSwicCI6MH0
        '400':
          description: Parâmetro ou consulta de texto inválidos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
              examples:
                erro-400-data-impossivel:
                  summary: erro-400-data-impossivel.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    erro: datas no formato AAAA-MM-DD, existentes no calendário
                    codigo: PARAMETRO_INVALIDO
                erro-400-consulta-invalida:
                  summary: erro-400-consulta-invalida.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    erro: 'consulta de texto inválida: confira aspas e parênteses'
                    codigo: CONSULTA_INVALIDA
        '401': &id003
          description: Chave ausente ou inválida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
              examples:
                erro-401-sem-chave:
                  summary: erro-401-sem-chave.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    erro: chave de API ausente ou inválida
                    codigo: NAO_AUTORIZADO
        '405': *id001
        '429': *id002
        default:
          description:
            'Outros erros documentados: COTA_ESGOTADA, ROTA_NAO_ENCONTRADA e TEMPO_ESGOTADO
            na leitura de documento. Seus status HTTP estão a confirmar nas fontes fornecidas. Nenhum
            corpo de resposta foi inventado como exemplo.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
  /v1/jurisprudencia/{id}:
    get:
      operationId: lerDecisao
      summary: Ler o registro padrão de uma decisão
      description:
        Use o id devolvido pela busca. Campos sem informação vêm como null. Inclui ementa e
        metadados, sem servir o texto integral da decisão. Busca e documento compartilham um contador
        de cota diária por chave, ainda em memória e zerado ao reiniciar o serviço. Valor, renovação e
        cabeçalhos da cota a confirmar.
      parameters:
        - name: id
          in: path
          required: true
          description: Identificador base:numero devolvido pela busca, como tjmg:10793.
          schema:
            type: string
      responses:
        '200':
          description: Registro da decisão.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Documento'
              examples:
                documento-tjmg:
                  summary: documento-tjmg.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    id: tjmg:10793
                    base: tjmg
                    fonte: TJMG
                    tipo: acordao
                    processo: 4124579-07.2026.8.13.0000
                    classe:
                      sigla: Agravo de Instrumento-Cv
                      descricao: null
                    orgao_julgador: 1º Núcleo de Justiça 4.0 - Cív
                    relator: Paulo Gastão de Abreu (JD)
                    redator: null
                    data_julgamento: '2026-09-15'
                    data_publicacao: '2026-09-17'
                    ementa:
                      'DIREITO PROCESSUAL CIVIL. AGRAVO DE INSTRUMENTO. EXECUÇÃO DE TÍTULO EXTRAJUDICIAL.
                      EXCEÇÃO DE PRÉ-EXECUTIVIDADE. PRESCRIÇÃO INTERCORRENTE. AUSÊNCIA DE INÉRCIA DO EXEQUENTE.
                      RECURSO DESPROVIDO.


                      I. CASO EM EXAME


                      Agravo de instrumento interposto contra decisão de rejeição da exceção de pré-executividade,
                      afastando a alegação de prescrição intercorrente em execução de título extrajudicial.


                      II. QUESTÃO EM DISCUSSÃO


                      A questão em discussão consiste em definir se restou configurada a prescrição intercorrente
                      diante da alegada ausência de atos úteis do exequente.


                      III. RAZÕES DE DECIDIR


                      A prescrição intercorrente exige inércia qualificada do exequente pelo prazo da
                      prescrição do direito material. A atuação contínua do credor, com requerimentos
                      de diligências e efetivas constrições patrimoniais, afasta a caracterização da prescrição
                      intercorrente. Não comprovada a paralisação injustificada do processo, deve ser
                      mantida a rejeição da exceção de pré-executividade.


                      IV. DISPOSITIVO E TESE


                      Recurso desprovido.


                      Tese de julgamento: A prescrição intercorrente pressupõe inércia qualificada do
                      exequente. A prática de atos destinados à localização e constrição de bens impede
                      o reconhecimento da prescrição intercorrente. A efetiva atuação do exequente afasta
                      a extinção da execução por prescrição intercorrente.'
                    ementa_status: completa
                    tese:
                      A prescrição intercorrente pressupõe inércia qualificada do exequente. A prática
                      de atos destinados à localização e constrição de bens impede o reconhecimento da
                      prescrição intercorrente. A efetiva atuação do exequente afasta a extinção da execução
                      por prescrição intercorrente.
                    dispositivo: null
                    inteiro_teor:
                      existe_na_origem: null
                      caracteres: null
                    citacao:
                      '(TJMG - Agravo de Instrumento-Cv 1.0000.26.412456-1/001, Relator(a): Des.(a)
                      Paulo Gastão de Abreu (JD), 1º Núcleo de Justiça 4.0 - Cív, julgamento em 15/09/2026,
                      publicação da súmula em 17/09/2026)'
                    legislacao_citada: null
                    temas: null
                    extras:
                      flags: '[]'
        '401': *id003
        '404':
          description: Decisão não encontrada na base.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
              examples:
                erro-404-decisao:
                  summary: erro-404-decisao.json; resposta real de 11/10/2026, versão 70e0123
                  value:
                    erro: decisão não encontrada
                    codigo: DECISAO_NAO_ENCONTRADA
        '405': *id001
        '429': *id002
        default:
          description:
            'Outros erros documentados: COTA_ESGOTADA, ROTA_NAO_ENCONTRADA e TEMPO_ESGOTADO
            na leitura de documento. Seus status HTTP estão a confirmar nas fontes fornecidas. Nenhum
            corpo de resposta foi inventado como exemplo.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erro'
components:
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      description: Chave do beta fechado. Não há chave real neste contrato.
  schemas:
    Tipo:
      type: string
      enum:
        - acordao
        - decisao_monocratica
        - decisao_presidencia
        - decisao_vice_presidencia
        - decisao_corregedoria
        - sumula
        - orientacao_jurisprudencial
        - precedente_normativo
        - informativo
    Ordem:
      type: string
      enum:
        - relevancia
        - recentes
      description: recentes ordena pela inclusão na base, não pela data do julgamento.
    StatusEmenta:
      type: string
      enum:
        - completa
        - truncada
        - suspeita
        - ausente
    Classe:
      type: object
      properties:
        sigla:
          type:
            - string
            - 'null'
        descricao:
          type:
            - string
            - 'null'
      required:
        - sigla
        - descricao
    DataOuNulo:
      type:
        - string
        - 'null'
      format: date
      description: AAAA-MM-DD; informação ausente ou data inexistente no calendário vem como null.
    Periodo:
      type: object
      properties:
        de:
          $ref: '#/components/schemas/DataOuNulo'
        ate:
          $ref: '#/components/schemas/DataOuNulo'
      required:
        - de
        - ate
    InteiroTeor:
      type: object
      description: Informações sobre o texto na origem. A API não fornece o texto integral.
      properties:
        existe_na_origem:
          type:
            - boolean
            - 'null'
        caracteres:
          type:
            - integer
            - 'null'
      required:
        - existe_na_origem
        - caracteres
    ListaTextoOuNulo:
      type:
        - array
        - 'null'
      items:
        type: string
      description: Texto como publicado pela fonte, sem padronizar a citação.
    Resumo:
      type: object
      properties:
        id: &id004
          type: string
          description: Identificador base:numero. Preserve o valor recebido na busca.
        base: &id005
          type: string
          description: Base onde o registro está guardado.
        fonte: &id006
          type: string
          description: Origem da decisão; não é uma URL.
        tipo: &id007
          $ref: '#/components/schemas/Tipo'
        processo: &id008
          type:
            - string
            - 'null'
        classe: &id009
          $ref: '#/components/schemas/Classe'
        orgao_julgador: &id010
          type:
            - string
            - 'null'
        relator: &id011
          type:
            - string
            - 'null'
        data_julgamento: &id012
          $ref: '#/components/schemas/DataOuNulo'
        data_publicacao: &id013
          $ref: '#/components/schemas/DataOuNulo'
        ementa_status: &id014
          $ref: '#/components/schemas/StatusEmenta'
        trecho_da_ementa:
          type:
            - string
            - 'null'
          description: Trecho para triagem; não é o texto integral.
      required:
        - id
        - base
        - fonte
        - tipo
        - processo
        - classe
        - orgao_julgador
        - relator
        - data_julgamento
        - data_publicacao
        - ementa_status
        - trecho_da_ementa
    Documento:
      type: object
      properties:
        id: *id004
        base: *id005
        fonte: *id006
        tipo: *id007
        processo: *id008
        classe: *id009
        orgao_julgador: *id010
        relator: *id011
        data_julgamento: *id012
        data_publicacao: *id013
        ementa_status: *id014
        redator:
          type:
            - string
            - 'null'
        ementa:
          type:
            - string
            - 'null'
        tese:
          type:
            - string
            - 'null'
        dispositivo:
          type:
            - string
            - 'null'
          description: Resultado separado da ementa, quando fornecido. No STF, vem da ata.
        inteiro_teor:
          $ref: '#/components/schemas/InteiroTeor'
        citacao:
          type:
            - string
            - 'null'
          description: Citação fornecida pela fonte, quando houver.
        legislacao_citada:
          $ref: '#/components/schemas/ListaTextoOuNulo'
        temas:
          $ref: '#/components/schemas/ListaTextoOuNulo'
        extras:
          type: object
          additionalProperties: true
          description: Campos próprios da fonte, fora do contrato estável. Preserve os valores como recebidos.
      required:
        - id
        - base
        - fonte
        - tipo
        - processo
        - classe
        - orgao_julgador
        - relator
        - data_julgamento
        - data_publicacao
        - ementa_status
        - redator
        - ementa
        - tese
        - dispositivo
        - inteiro_teor
        - citacao
        - legislacao_citada
        - temas
        - extras
    PorBase:
      type: object
      properties:
        base:
          type: string
        ordem_aplicada:
          $ref: '#/components/schemas/Ordem'
        encontrados_ate_1000:
          type: integer
          minimum: 0
          maximum: 1000
          description: Somente na primeira página e quando houver tempo para contar.
        ha_mais_de_1000:
          type: boolean
          description: Pode ser omitido junto da contagem.
        ms:
          type: integer
          description: Tempo daquela consulta na base, em milissegundos.
      required:
        - base
        - ordem_aplicada
        - ms
    Busca:
      type: object
      properties:
        itens:
          type: array
          items:
            $ref: '#/components/schemas/Resumo'
        por_base:
          type: array
          items:
            $ref: '#/components/schemas/PorBase'
        bases_sem_resposta:
          type: array
          items: {}
          description:
            'Bases sem resposta no prazo. A estrutura dos itens está a confirmar: todos os
            exemplos fornecidos têm a lista vazia.'
        proximo_cursor:
          type:
            - string
            - 'null'
          description: Envie como cursor na chamada seguinte. Sem novo cursor, não há mais páginas.
      required:
        - itens
        - por_base
        - bases_sem_resposta
        - proximo_cursor
    Tribunal:
      type: object
      properties:
        codigo:
          type: string
        nome:
          type: string
        base:
          type: string
        ramo:
          type: string
          enum:
            - trabalhista
            - estadual
            - federal
            - superior
        uf:
          type: string
          description: BR identifica os tribunais nacionais.
      required:
        - codigo
        - nome
        - base
        - ramo
        - uf
    BaseCobertura:
      type: object
      properties:
        base:
          type: string
        total:
          type: integer
        periodo_do_julgamento:
          $ref: '#/components/schemas/Periodo'
        periodo_da_publicacao:
          $ref: '#/components/schemas/Periodo'
        tipos:
          type: array
          items:
            $ref: '#/components/schemas/Tipo'
        calculado:
          type: boolean
        calculado_em:
          type: string
          format: date-time
      required:
        - base
        - calculado
    Cobertura:
      type: object
      properties:
        bases:
          type: array
          items:
            $ref: '#/components/schemas/BaseCobertura'
        tipos_aceitos:
          type: array
          items:
            $ref: '#/components/schemas/Tipo'
        tribunais:
          type: array
          items:
            $ref: '#/components/schemas/Tribunal'
      required:
        - bases
        - tipos_aceitos
        - tribunais
    Erro:
      type: object
      properties:
        erro:
          type: string
        codigo:
          type: string
          enum:
            - PARAMETRO_INVALIDO
            - CONSULTA_INVALIDA
            - DECISAO_NAO_ENCONTRADA
            - TEMPO_ESGOTADO
            - NAO_AUTORIZADO
            - COTA_ESGOTADA
            - ROTA_NAO_ENCONTRADA
            - METODO_NAO_PERMITIDO
      required:
        - erro
        - codigo
