openapi: 3.1.0
info:
  title: DataBolsa API
  description: >-
    API aberta de dados financeiros locais e globais, com maior profundidade no
    Brasil.


    Convenções:

    - Datas em ISO 8601; valores monetários em BRL salvo campo `currency`.

    - Preços de ações **ajustados por proventos por default** (`adjusted=true`).

    - Indicadores fundamentalistas **TTM por default**, de demonstrações
    consolidadas.

    - **Toda listagem e toda série** respondem `{ data, meta }`: os itens em
    `data` e, em `meta`,
      sempre a paginação (`next_cursor`, `count`). Parte das rotas ecoa também o contexto da
      consulta em `meta` (ticker, sessão, indicador, data-base...) — confira o schema da
      operação antes de depender disso, porque não é universal. Rotas sem cursor trazem
      `next_cursor: null` — nunca um envelope diferente.
    - Paginação por cursor onde ela existe: `?cursor=&limit=`; siga
    `meta.next_cursor` até null.

    - Recursos singulares (um papel, uma companhia, um fundo, uma thread de
    eventos, a saúde da
      ingestão) respondem o objeto direto, sem `data`.
    - Erros seguem RFC 9457 (`application/problem+json`).

    - Toda métrica é rastreável à fonte primária (campo `lineage`).
  version: 4.3.0
  contact:
    name: DataBolsa
  license:
    name: Apache-2.0
servers:
  - url: https://api.databolsa.com
    description: Produção
  - url: http://localhost:8080
    description: Self-hosted
security:
  - bearerApiKey: []
components:
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
  schemas:
    Health:
      type: object
      properties:
        status:
          type: string
          enum:
            - ok
            - degraded
        version:
          type: string
        build:
          type:
            - string
            - "null"
          description: SHA do commit da imagem que respondeu.
        instance:
          type:
            - string
            - "null"
          description: Identificador do processo/pod que respondeu.
        serving_loaded_at:
          type:
            - string
            - "null"
          description: Quando a base servida foi carregada (timestamp da carga noturna).
            Dois números lidos em cargas diferentes não são comparáveis sem esta
            data.
        data_freshness:
          type: object
          additionalProperties:
            type: string
      required:
        - status
        - version
        - build
        - instance
        - serving_loaded_at
        - data_freshness
    Problem:
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        instance:
          type: string
        details:
          type: object
          additionalProperties: {}
          description: O erro em forma LEGÍVEL POR PROGRAMA (membro de extensão do RFC
            9457). `detail` é a frase humana e pode mudar; o que um cliente
            precisa decidir por ele mora aqui — `code` (`not_found`, `split`,
            `budget_exceeded`…), `successors` num 409 de cisão, os números
            recebidos e os tetos num 422 de orçamento.
      required:
        - type
        - title
        - status
    EntityListRow:
      type: object
      properties:
        id:
          type: string
          description: Id aceito por `getObject`, `getObjectFacts` e `listObjectLinks`.
        kind:
          type: string
        subkind:
          type:
            - string
            - "null"
        name:
          type:
            - string
            - "null"
          description: Nulo é objeto sem nome resolvido.
        anchor_type:
          type: string
          description: Tipo da chave âncora (cnpj, ticker, isin).
        anchor_value:
          type: string
          description: A chave âncora, identificador estável do objeto.
        tickers:
          type:
            - array
            - "null"
          items:
            type: string
          description: Códigos de negociação do objeto (BDR, ETF, papel, FII), quando os
            tem. A âncora do BDR é o ISIN e a do ETF é o CNPJ; o ticker viaja
            aqui para o catálogo linkar sem pedir a série de cada um.
        properties:
          type: object
          additionalProperties:
            type:
              - string
              - "null"
          description: As propriedades pedidas em `props`, por nome, como texto. Nulo é
            folha sem a linha. Ausente quando `props` não foi pedido.
      required:
        - id
        - kind
        - subkind
        - name
        - anchor_type
        - anchor_value
        - tickers
    EntityLinkObservationRow:
      type: object
      properties:
        rel:
          type: string
          description: Verbo da relação como o servidor o publica; `string`, não enum,
            para que verbo novo não derrube a resposta. `listObjectRelations`
            lista os vigentes.
        shape:
          type: string
          enum:
            - snapshot
            - event
          description: "`snapshot`: a magnitude publicada numa competência (uma linha por
            competência). `event`: uma DECISÃO datada — ação de agência de
            rating com rótulo, perspectiva, aviso e o recorte de série avaliado;
            duas camadas do mesmo fundo no mesmo dia são duas linhas."
        direction:
          type: string
          enum:
            - out
            - in
        other_id:
          type: string
        other_kind:
          type: string
          description: Tipo do objeto como o servidor o publica; `string`, não enum.
            `getObjectCensus` lista os vigentes.
        other_name:
          type:
            - string
            - "null"
        other_key_type:
          type:
            - string
            - "null"
          description: Tipo de identificador como o servidor o publica; `string`, não
            enum. `getObjectCensus` lista os vigentes.
        other_key:
          type:
            - string
            - "null"
        source:
          type: string
        observed_at:
          type: string
          description: Competência da magnitude publicada (`snapshot`) ou data da decisão
            da agência (`event`).
        magnitude:
          type:
            - number
            - "null"
          description: Tamanho publicado na competência (`snapshot`) ou notch da nota na
            escala (`event`). Nulo não é zero; em `event` é ação sem número.
        magnitude_unit:
          type:
            - string
            - "null"
          description: Unidade da magnitude; em `rates` é a escala (`national_br`,
            `global`), e notch só compara dentro da mesma escala.
        label:
          type:
            - string
            - "null"
          description: "`event`: a nota como a agência a escreveu (`brAAA(sf)`, `AA+`).
            Nulo em `snapshot`."
        outlook:
          type:
            - string
            - "null"
          description: "`event`: perspectiva declarada (`stable`, `positive`, `negative`,
            `developing`). Nulo quando a fonte não a afirma."
        watch:
          type:
            - string
            - "null"
          description: "`event`: aviso de revisão (`positive`, `negative`). Nulo quando
            não há."
        action:
          type:
            - string
            - "null"
          description: "`event`: a ação (`assigned`, `affirmed`, `upgraded`, `downgraded`,
            `withdrawn`, `watch_placed`). Nulo quando o documento não a nomeia."
        series:
          type:
            - string
            - "null"
          description: "`event`: o recorte avaliado dentro do sujeito, como
            `classe:número:tranche:emissão` (`senior:1::`, `mezzanine::A:`).
            Nulo quando a decisão é sobre o sujeito inteiro; separa as camadas
            avaliadas no mesmo dia."
        confidence:
          type: string
          enum:
            - high
            - medium
            - low
          description: "Confiança da afirmação: `high` quando a fonte é cadastral ou uma
            competência a afirma com chave forte; `medium` para extração
            revisada (as ações de rating); `low` quando nenhuma afirmação passou
            do palpite."
      required:
        - rel
        - shape
        - direction
        - other_id
        - other_kind
        - other_name
        - other_key_type
        - other_key
        - source
        - observed_at
        - magnitude
        - magnitude_unit
        - label
        - outlook
        - watch
        - action
        - series
        - confidence
    EntityEvidence:
      type: object
      properties:
        protocol:
          type: string
          description: Protocolo do documento na fonte; identifica o documento em
            `readDocument`.
        source:
          type: string
          description: Conector que trouxe o documento (IPE da CVM, FNET, DFP/ITR).
        url:
          type:
            - string
            - "null"
          description: Link da fonte, quando publicado.
        category:
          type:
            - string
            - "null"
        type:
          type:
            - string
            - "null"
        reference_date:
          type:
            - string
            - "null"
        filed_at:
          type:
            - string
            - "null"
          description: Data de protocolo; é a que vale para leitura point-in-time.
        page_start:
          type:
            - integer
            - "null"
        page_end:
          type:
            - integer
            - "null"
        heading:
          type:
            - string
            - "null"
          description: Caminho de títulos até o trecho, quando o documento tem estrutura.
        excerpt:
          type: string
          description: Texto do documento, não resumo.
      required:
        - protocol
        - source
        - url
        - category
        - type
        - reference_date
        - filed_at
        - page_start
        - page_end
        - heading
        - excerpt
    PriceProvenance:
      type: object
      properties:
        adjust_type:
          type:
            - string
            - "null"
          description: "Como a série é ajustada. `events_only`: desdobramento, grupamento
            e bonificação aplicados, PROVENTO NÃO subtraído — quem espera preço
            ex-dividendo aqui lê uma queda que não existe; `close_tr` é a série
            que reinveste os proventos."
        adjust_quality:
          type:
            - string
            - "null"
          description: "A PIOR qualidade entre os pontos servidos, para que a janela que
            encosta num trecho suspeito diga isso: `full` tem a cadeia de
            eventos inteira, `suspect_unrecorded_event` viu um salto que nenhum
            evento explica, `no_event_source` não tem fonte de evento para o
            código. Nos dois últimos, comparar as pontas da janela pode errar
            por um fator de desdobramento inteiro."
      required:
        - adjust_type
        - adjust_quality
    FactAxes:
      type:
        - object
        - "null"
      properties:
        dimension:
          type:
            - string
            - "null"
          description: "O que o número é: `currency`, `rate`, `share`, `ratio`, `index`,
            `points`, `count`, `duration`."
        scale:
          type:
            - string
            - "null"
          description: "Escala em que o valor é servido: `unit`, `percent`, `bps`,
            `thousand`, `million`, `billion`, `business_days`. O valor vem como
            publicado; a escala diz como lê-lo."
        period:
          type:
            - string
            - "null"
          description: "Janela coberta pelo número: `none`, `daily`, `monthly`,
            `quarterly`, `annual`, `ttm_12m`, `cagr_3y`. Não é a cadência de
            publicação. `none` indica nível, sem janela."
        seasonal_adjustment:
          type:
            - string
            - "null"
          description: "`nsa` sem ajuste, `sa` com ajuste, `saar` ajustado e anualizado.
            Nulo fora das séries macro."
        expected_range:
          type:
            - object
            - "null"
          properties:
            min:
              type: number
            max:
              type: number
          required:
            - min
            - max
          description: Faixa plausível declarada, na mesma escala do valor. Alimenta
            `out_of_prior`.
        concept:
          type: string
          description: O conceito medido, sem a régua. Medidas com o mesmo `concept`
            compartilham `dimension` e `period`; moeda e escala podem divergir.
            O vocabulário é `x-ontology.concepts`.
        aggregation:
          type:
            - string
            - "null"
          description: "Como as observações se juntam no tempo: `flow` (quantidade por
            período: soma), `rate_compound` (variação % do período: compõe),
            `rate_level` (taxa que é nível: média ou diferença em p.p.), `level`
            (estoque ou índice: média, variação %, diferença). Decide quais
            `transform` de `getObjectHistory` a série aceita. Nulo quando a
            medida não declara."
      required:
        - dimension
        - scale
        - period
        - seasonal_adjustment
        - expected_range
        - concept
        - aggregation
    PublicMarketEvent:
      type: object
      properties:
        event_id:
          type:
            - number
            - "null"
        event_key:
          type: string
          description: A chave do objeto no grafo — `resolveObject(event_key,
            kind=market_event)`. O `event_id` é serial da folha e não resolve, e
            é nulo no evento que não vem do ledger.
        type:
          type: string
          description: Que tipo de evento do objeto é este. `market_event` é o evento
            editorial do ledger de mercado — o único que tem `score`,
            detectores, thread e fontes. `renamed` é a troca de código de
            negociação do papel, derivada do acervo de sucessões, com as duas
            pontas em `details`.
        day:
          type: string
          description: Dia do evento (YYYY-MM-DD, BRT).
        layer:
          type: string
          description: estrutural | setorial | corporativa
        category:
          type: string
          description: macro | politica | internacional | commodities | corporate | fii |
            cripto | mercado | outros
        title:
          type: string
        summary:
          type:
            - string
            - "null"
        entities:
          type: array
          items:
            type: string
          description: Atores/empresas citados (ticker NÃO é obrigatório).
        tickers:
          type: array
          items:
            type: string
        transmission_channels:
          type: array
          items:
            type: string
          description: "Canais de transmissão a preço: dolar | ibov | brent | curva |
            selic."
        score:
          type:
            - number
            - "null"
          x-unit: native
        detectors:
          type: array
          items:
            type: string
          description: "Quais detectores confirmaram: official | press | market. 2+ =
            evento forte."
        thread_slug:
          type:
            - string
            - "null"
          description: Thread (evento-pai) quando o evento faz parte de uma história em
            curso.
        source_refs:
          type: array
          items:
            $ref: "#/components/schemas/MarketEventSourceRef"
        details:
          oneOf:
            - $ref: "#/components/schemas/ObjectEventDetails"
            - type: "null"
          description: "Só em `type: renamed`: o código anterior e o novo. Nulo no evento
            do ledger."
      required:
        - event_id
        - event_key
        - type
        - day
        - layer
        - category
        - title
        - summary
        - entities
        - tickers
        - transmission_channels
        - score
        - detectors
        - thread_slug
        - source_refs
        - details
    MarketEventSourceRef:
      type: object
      properties:
        kind:
          type: string
          description: "Origem da evidência: dou | rss | copom | fedreg | camara | gdelt |
            price | successions"
        id:
          anyOf:
            - type: string
            - type: number
        url:
          type:
            - string
            - "null"
        title:
          type: string
      required:
        - kind
        - id
        - url
        - title
    ObjectEventDetails:
      type: object
      properties:
        from:
          type: string
          description: O código de negociação ANTERIOR.
        to:
          type: string
          description: O código que passou a valer a partir de `day`.
      required:
        - from
        - to
    CapabilityDescriptor:
      type: object
      properties:
        id:
          type: string
          description: "Id qualificado e estável: `market.indicators.latest`,
            `wallet.portfolio.create`, `getObjectFacts`."
        type:
          type: string
          enum:
            - primitive
            - function
            - action
            - system
          description: "`primitive` é uma operação de Objects (a álgebra do grafo);
            `function` é cálculo ou composição executável por `POST
            /v1/functions/{id}/execute`; `action` é escrita de um módulo, com
            preview e confirmação; `system` é saúde, catálogo e resolução de
            capacidades."
        module:
          type: string
          description: "Módulo responsável: `core` ou o id da extensão
            (`databolsa.wallet`)."
        domain:
          type: string
          description: "O assunto: o primeiro segmento do id (`market`, `credit`,
            `wallet`) ou, nas primitivas, o grupo (`objects`, `system`)."
        title:
          type: string
        description:
          type: string
          description: O que a capacidade devolve ou faz, em uma ou duas frases.
        criterio:
          type: string
          description: Quando escolher esta capacidade em vez das primitivas de Objects.
        subject:
          oneOf:
            - type: object
              properties:
                mode:
                  type: string
                  const: object
                kinds:
                  type: array
                  items:
                    type: string
                    enum:
                      - company
                      - equity_security
                      - fund
                      - service_provider
                      - instrument
                      - index
                      - crypto_asset
                      - commodity
                      - country
                      - indicator
                      - data_series
                      - offering
                      - fund_share_class
                      - market_event
                      - role
                      - sector
                      - securitization
                      - norm
                      - person
                    description: Tipo canônico do objeto. `equity_security` é o papel, separado de
                      `company`; `securitization` é a emissão, separada da série
                      negociável (`instrument`); e `fund_share_class` é a
                      subclasse, separada da classe com CNPJ (`fund`).
                      `indicator` representa o conceito medido, enquanto
                      `data_series` representa uma publicação ou cálculo
                      específico. `offering`, `market_event` e `norm` são
                      objetos porque possuem identidade, atributos e relações
                      próprias. `person` é a pessoa física nomeada em papel
                      regulado (administrador, conselheiro, acionista
                      relevante), chaveada por `person_key`, um hash
                      irreversível; o documento nunca é publicado.
                  minItems: 1
                  description: Tipos de objeto que a capacidade aceita como sujeito.
                subkinds:
                  type: array
                  items:
                    type: string
                  description: "Quando só um subtipo tem a capacidade (ex.: `fidc`)."
                grain:
                  type: string
                  enum:
                    - object
                    - paper
                  description: "O TETO do grão: `paper` diz que algum tipo responde por papel e
                    pode exigir `series` (uma companhia com dois papéis); no
                    próprio papel o mesmo capítulo é de objeto."
              required:
                - mode
                - kinds
                - grain
            - type: object
              properties:
                mode:
                  type: string
                  const: none
              required:
                - mode
            - type: object
              properties:
                mode:
                  type: string
                  const: resource
                type:
                  type: string
                  description: "Tipo do recurso do módulo que a Action altera (ex.:
                    `wallet.portfolio`)."
              required:
                - mode
                - type
        lifecycle:
          type: string
          enum:
            - default
            - preview
            - deprecated
        stability:
          type: string
          enum:
            - stable
            - preview
        scopes:
          type: array
          items:
            type: string
          description: Scopes que a credencial precisa carregar.
        confirmation:
          type: string
          enum:
            - required
            - conditional
            - none
        execute:
          type: object
          properties:
            method:
              type: string
              enum:
                - GET
                - POST
            path:
              type: string
          required:
            - method
            - path
          description: Rota de execução (Functions e Actions) ou de leitura (primitivas).
        describe:
          type: string
          description: Rota que devolve o spec completo, com schemas.
        legacy_operation:
          type: string
          description: Operação do contrato que ainda serve o mesmo, enquanto a migração
            não fecha.
      required:
        - id
        - type
        - module
        - domain
        - title
        - description
        - subject
        - lifecycle
        - stability
        - scopes
        - describe
    FunctionDescriptor:
      type: object
      properties:
        id:
          type: string
          description: "Id qualificado e estável: `market.indicators.latest`,
            `wallet.portfolio.create`, `getObjectFacts`."
        type:
          type: string
          const: function
        module:
          type: string
          description: "Módulo responsável: `core` ou o id da extensão
            (`databolsa.wallet`)."
        domain:
          type: string
          description: "O assunto: o primeiro segmento do id (`market`, `credit`,
            `wallet`) ou, nas primitivas, o grupo (`objects`, `system`)."
        title:
          type: string
        description:
          type: string
          description: O que a capacidade devolve ou faz, em uma ou duas frases.
        criterio:
          type: string
          description: Quando escolher esta capacidade em vez das primitivas de Objects.
        subject:
          oneOf:
            - type: object
              properties:
                mode:
                  type: string
                  const: object
                kinds:
                  type: array
                  items:
                    type: string
                    enum:
                      - company
                      - equity_security
                      - fund
                      - service_provider
                      - instrument
                      - index
                      - crypto_asset
                      - commodity
                      - country
                      - indicator
                      - data_series
                      - offering
                      - fund_share_class
                      - market_event
                      - role
                      - sector
                      - securitization
                      - norm
                      - person
                    description: Tipo canônico do objeto. `equity_security` é o papel, separado de
                      `company`; `securitization` é a emissão, separada da série
                      negociável (`instrument`); e `fund_share_class` é a
                      subclasse, separada da classe com CNPJ (`fund`).
                      `indicator` representa o conceito medido, enquanto
                      `data_series` representa uma publicação ou cálculo
                      específico. `offering`, `market_event` e `norm` são
                      objetos porque possuem identidade, atributos e relações
                      próprias. `person` é a pessoa física nomeada em papel
                      regulado (administrador, conselheiro, acionista
                      relevante), chaveada por `person_key`, um hash
                      irreversível; o documento nunca é publicado.
                  minItems: 1
                  description: Tipos de objeto que a capacidade aceita como sujeito.
                subkinds:
                  type: array
                  items:
                    type: string
                  description: "Quando só um subtipo tem a capacidade (ex.: `fidc`)."
                grain:
                  type: string
                  enum:
                    - object
                    - paper
                  description: "O TETO do grão: `paper` diz que algum tipo responde por papel e
                    pode exigir `series` (uma companhia com dois papéis); no
                    próprio papel o mesmo capítulo é de objeto."
              required:
                - mode
                - kinds
                - grain
            - type: object
              properties:
                mode:
                  type: string
                  const: none
              required:
                - mode
            - type: object
              properties:
                mode:
                  type: string
                  const: resource
                type:
                  type: string
                  description: "Tipo do recurso do módulo que a Action altera (ex.:
                    `wallet.portfolio`)."
              required:
                - mode
                - type
        lifecycle:
          type: string
          enum:
            - default
            - preview
            - deprecated
        stability:
          type: string
          enum:
            - stable
            - preview
        scopes:
          type: array
          items:
            type: string
          description: Scopes que a credencial precisa carregar.
        execute:
          type: object
          properties:
            method:
              type: string
              enum:
                - GET
                - POST
            path:
              type: string
          required:
            - method
            - path
          description: Rota de execução (Functions e Actions) ou de leitura (primitivas).
        describe:
          type: string
          description: Rota que devolve o spec completo, com schemas.
        legacy_operation:
          type: string
          description: Operação do contrato que ainda serve o mesmo, enquanto a migração
            não fecha.
        version:
          type: number
          const: 1
        temporal:
          type: object
          properties:
            shape:
              type: string
              enum:
                - series
                - snapshot
                - event
                - static
            cut:
              type:
                - string
                - "null"
              enum:
                - at
                - date
                - to
                - null
          required:
            - shape
            - cut
        pagination:
          type: string
          enum:
            - cursor
            - none
        authority:
          type: string
          enum:
            - canonical
            - projected
            - calculated
        host:
          type: string
          enum:
            - core
            - hosted
            - module
        input_schema:
          type: object
          additionalProperties: {}
          description: JSON Schema do `input` de `execute`.
        output_schema:
          type: object
          additionalProperties: {}
          description: JSON Schema do `result`.
        orcamento:
          type: object
          properties:
            calls:
              type: integer
          required:
            - calls
        example:
          type: object
          properties:
            subject:
              type: object
              properties:
                resolve:
                  type: string
                entity_id:
                  type: string
                kind:
                  type: string
            input:
              type: object
              additionalProperties: {}
            series:
              type: string
            at:
              type: string
          description: Um corpo de `execute` típico, pronto para copiar.
        prefer_objects_when:
          type: string
          description: Quando a primitiva de Objects responde mais barato que esta Function.
        nota:
          type: string
      required:
        - id
        - type
        - module
        - domain
        - title
        - description
        - subject
        - lifecycle
        - stability
        - scopes
        - describe
        - version
        - temporal
        - pagination
        - authority
        - host
        - input_schema
        - output_schema
        - orcamento
    FunctionExecution:
      type: object
      properties:
        function:
          type: string
        subject:
          type:
            - object
            - "null"
          properties:
            id:
              type: string
            kind:
              type: string
            subkind:
              type:
                - string
                - "null"
            name:
              type:
                - string
                - "null"
            code:
              type:
                - string
                - "null"
              description: A chave pela qual o sujeito entrou (ticker, CNPJ, id do recurso).
          required:
            - id
            - kind
            - subkind
            - name
            - code
        at:
          type: string
        result:
          description: O resultado, conforme `output_schema` da função.
      required:
        - function
        - subject
    SearchResult:
      type: object
      properties:
        kind:
          type: string
          enum:
            - stock
            - fii
            - fiagro
            - index
            - bond
            - macro
            - crypto
            - us
            - etf
            - bdr
            - debenture
            - cri
            - cra
            - lci
            - lca
        ticker:
          type: string
        title:
          type: string
        subtitle:
          type:
            - string
            - "null"
        href:
          type: string
        score:
          type: number
        cvm_code:
          type:
            - integer
            - "null"
          description: Código CVM da companhia (só ações) — abre documentos e demonstrações
      required:
        - kind
        - ticker
        - title
        - subtitle
        - href
        - score
        - cvm_code
    IngestRunSummary:
      type: object
      properties:
        run_id:
          type: string
        trigger:
          type: string
        started_at:
          type: string
        finished_at:
          type: string
        duration_s:
          type: number
        exit:
          type: number
        ok:
          type: boolean
        error_count:
          type: number
        error_sources:
          type: array
          items:
            type: string
          description: "QUAIS FONTES falharam neste run. `ok: false` fala do RUN inteiro,
            e um run vermelho por causa de uma série do Banco Central não diz
            nada sobre ofertas da CVM — mas quem lê só `ok` conclui que a base
            está quebrada e recusa uma pergunta que ela responde. Aconteceu numa
            sondagem em 20/08/2026. Cruze com `sources[]` para a saúde da fonte
            que te interessa."
      required:
        - run_id
        - trigger
        - started_at
        - finished_at
        - duration_s
        - exit
        - ok
        - error_count
        - error_sources
    IngestRunDetail:
      allOf:
        - $ref: "#/components/schemas/IngestRunSummary"
      properties:
        errors:
          type: array
          items:
            type: string
      required:
        - errors
    IngestSourceHealth:
      type: object
      properties:
        source:
          type: string
        status:
          type: string
          enum:
            - ok
            - incomplete
            - stale
            - error
            - no_data
        last_fetch:
          type:
            - string
            - "null"
        age_days:
          type:
            - number
            - "null"
        datasets:
          type: number
        missing:
          type: number
        missing_ratio:
          type:
            - number
            - "null"
        unavailable:
          type: number
        failed_validation:
          type: number
        expected_max_age_days:
          type:
            - number
            - "null"
        stale_after_days:
          type: number
        ok:
          type: number
        skip:
          type: number
        miss:
          type: number
        err:
          type: number
        rows:
          type: number
        duration_s:
          type:
            - number
            - "null"
      required:
        - source
        - status
        - last_fetch
        - age_days
        - datasets
        - missing
        - missing_ratio
        - unavailable
        - failed_validation
        - expected_max_age_days
        - stale_after_days
        - ok
        - skip
        - miss
        - err
        - rows
        - duration_s
    IngestPollerHealth:
      type: object
      properties:
        source:
          type: string
        status:
          type: string
          enum:
            - ok
            - sleeping
            - stale
            - error
        last_cycle_at:
          type: string
        last_write_at:
          type:
            - string
            - "null"
        age_seconds:
          type: number
        cycle_seconds:
          type: number
        sleeping_until:
          type:
            - string
            - "null"
        in_window:
          type: boolean
        universe_size:
          type:
            - number
            - "null"
        rows_written:
          type: number
        consecutive_errors:
          type: number
        last_error:
          type:
            - string
            - "null"
        last_error_at:
          type:
            - string
            - "null"
      required:
        - source
        - status
        - last_cycle_at
        - last_write_at
        - age_seconds
        - cycle_seconds
        - sleeping_until
        - in_window
        - universe_size
        - rows_written
        - consecutive_errors
        - last_error
        - last_error_at
    ModuleDescriptor:
      type: object
      properties:
        id:
          type: string
          description: "`core` ou o id da extensão (`databolsa.wallet`)."
        kind:
          type: string
          enum:
            - core
            - extension
        name:
          type: string
        description:
          type: string
        version:
          type: string
        availability:
          type: string
          enum:
            - available
            - installed
            - not_installed
            - suspended
            - not_for_workspace
          description: "`available` para o módulo sem instalação (core); nos demais, o
            estado no workspace da sessão — sem sessão autenticada,
            `not_installed`."
        install:
          type:
            - object
            - "null"
          properties:
            default:
              type: boolean
              description: Instalada por padrão no workspace pessoal.
            owners:
              type: array
              items:
                type: string
                enum:
                  - personal_workspace
                  - organization
            requires:
              type: array
              items:
                type: string
          required:
            - default
            - owners
            - requires
          description: null no core, que não se instala.
        scopes:
          type: array
          items:
            type: string
        contracts:
          type: object
          properties:
            openapi:
              type: string
              description: Caminho do contrato vivo na origem da API.
            sdk:
              type:
                - string
                - "null"
            cli:
              type:
                - string
                - "null"
            mcp:
              type:
                - string
                - "null"
          required:
            - openapi
            - sdk
            - cli
            - mcp
        api_base_path:
          type:
            - string
            - "null"
          description: Prefixo do data plane; null no core.
        object_kinds:
          type: array
          items:
            type: string
          description: Tipos de objeto do grafo que o módulo publica.
        functions:
          type: array
          items:
            type: string
          description: Ids das Functions do módulo.
        actions:
          type: array
          items:
            type: string
          description: Ids das Actions do módulo.
        urls:
          type: object
          properties:
            docs:
              type:
                - string
                - "null"
            home:
              type:
                - string
                - "null"
          required:
            - docs
            - home
      required:
        - id
        - kind
        - name
        - description
        - version
        - availability
        - install
        - scopes
        - contracts
        - api_base_path
        - object_kinds
        - functions
        - actions
        - urls
    ModulesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/ModuleDescriptor"
        meta:
          type: object
          properties:
            next_cursor:
              type: "null"
            count:
              type: integer
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    ModuleDetail:
      allOf:
        - $ref: "#/components/schemas/ModuleDescriptor"
      properties:
        capabilities:
          type: array
          items:
            $ref: "#/components/schemas/CapabilityDescriptor"
      required:
        - capabilities
    CapabilitiesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CapabilityDescriptor"
        meta:
          type: object
          properties:
            next_cursor:
              type: "null"
              description: "Sempre null: a busca devolve os melhores candidatos numa página
                só."
            count:
              type: integer
            query:
              type:
                - string
                - "null"
            total:
              type: integer
              description: Candidatos que casaram antes do `limit`.
            hint:
              type: string
              description: "Presente quando nada casou: por onde responder em vez de insistir
                na busca."
          required:
            - next_cursor
            - count
            - query
            - total
      required:
        - data
        - meta
    PrimitiveDescriptor:
      type: object
      properties:
        id:
          type: string
          description: "Id qualificado e estável: `market.indicators.latest`,
            `wallet.portfolio.create`, `getObjectFacts`."
        type:
          type: string
          enum:
            - primitive
            - system
        module:
          type: string
          description: "Módulo responsável: `core` ou o id da extensão
            (`databolsa.wallet`)."
        domain:
          type: string
          description: "O assunto: o primeiro segmento do id (`market`, `credit`,
            `wallet`) ou, nas primitivas, o grupo (`objects`, `system`)."
        title:
          type: string
        description:
          type: string
          description: O que a capacidade devolve ou faz, em uma ou duas frases.
        criterio:
          type: string
          description: Quando escolher esta capacidade em vez das primitivas de Objects.
        subject:
          oneOf:
            - type: object
              properties:
                mode:
                  type: string
                  const: object
                kinds:
                  type: array
                  items:
                    type: string
                    enum:
                      - company
                      - equity_security
                      - fund
                      - service_provider
                      - instrument
                      - index
                      - crypto_asset
                      - commodity
                      - country
                      - indicator
                      - data_series
                      - offering
                      - fund_share_class
                      - market_event
                      - role
                      - sector
                      - securitization
                      - norm
                      - person
                    description: Tipo canônico do objeto. `equity_security` é o papel, separado de
                      `company`; `securitization` é a emissão, separada da série
                      negociável (`instrument`); e `fund_share_class` é a
                      subclasse, separada da classe com CNPJ (`fund`).
                      `indicator` representa o conceito medido, enquanto
                      `data_series` representa uma publicação ou cálculo
                      específico. `offering`, `market_event` e `norm` são
                      objetos porque possuem identidade, atributos e relações
                      próprias. `person` é a pessoa física nomeada em papel
                      regulado (administrador, conselheiro, acionista
                      relevante), chaveada por `person_key`, um hash
                      irreversível; o documento nunca é publicado.
                  minItems: 1
                  description: Tipos de objeto que a capacidade aceita como sujeito.
                subkinds:
                  type: array
                  items:
                    type: string
                  description: "Quando só um subtipo tem a capacidade (ex.: `fidc`)."
                grain:
                  type: string
                  enum:
                    - object
                    - paper
                  description: "O TETO do grão: `paper` diz que algum tipo responde por papel e
                    pode exigir `series` (uma companhia com dois papéis); no
                    próprio papel o mesmo capítulo é de objeto."
              required:
                - mode
                - kinds
                - grain
            - type: object
              properties:
                mode:
                  type: string
                  const: none
              required:
                - mode
            - type: object
              properties:
                mode:
                  type: string
                  const: resource
                type:
                  type: string
                  description: "Tipo do recurso do módulo que a Action altera (ex.:
                    `wallet.portfolio`)."
              required:
                - mode
                - type
        lifecycle:
          type: string
          enum:
            - default
            - preview
            - deprecated
        stability:
          type: string
          enum:
            - stable
            - preview
        scopes:
          type: array
          items:
            type: string
          description: Scopes que a credencial precisa carregar.
        confirmation:
          type: string
          enum:
            - required
            - conditional
            - none
        execute:
          type: object
          properties:
            method:
              type: string
              enum:
                - GET
                - POST
            path:
              type: string
          required:
            - method
            - path
          description: Rota de execução (Functions e Actions) ou de leitura (primitivas).
        describe:
          type: string
          description: Rota que devolve o spec completo, com schemas.
        legacy_operation:
          type: string
          description: Operação do contrato que ainda serve o mesmo, enquanto a migração
            não fecha.
        version:
          type: number
          const: 1
        parameters:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              in:
                type: string
                enum:
                  - path
                  - query
                  - header
              required:
                type: boolean
              description:
                type: string
              schema:
                type: object
                additionalProperties: {}
            required:
              - name
              - in
              - required
        request_body:
          type: object
          additionalProperties: {}
          description: JSON Schema do corpo, nas operações que o recebem.
        response_schema:
          type: object
          additionalProperties: {}
          description: JSON Schema da resposta 200 (com `$ref` para
            `/openapi.json#/components/schemas`).
        example:
          type: object
          additionalProperties: {}
          description: Um pedido típico (query e path), pronto para copiar.
      required:
        - id
        - type
        - module
        - domain
        - title
        - description
        - subject
        - lifecycle
        - stability
        - scopes
        - describe
        - version
        - parameters
    ActionDescriptor:
      type: object
      properties:
        id:
          type: string
          description: "Id qualificado e estável: `market.indicators.latest`,
            `wallet.portfolio.create`, `getObjectFacts`."
        type:
          type: string
          const: action
        module:
          type: string
          description: "Módulo responsável: `core` ou o id da extensão
            (`databolsa.wallet`)."
        domain:
          type: string
          description: "O assunto: o primeiro segmento do id (`market`, `credit`,
            `wallet`) ou, nas primitivas, o grupo (`objects`, `system`)."
        title:
          type: string
        description:
          type: string
          description: O que a capacidade devolve ou faz, em uma ou duas frases.
        criterio:
          type: string
          description: Quando escolher esta capacidade em vez das primitivas de Objects.
        subject:
          oneOf:
            - type: object
              properties:
                mode:
                  type: string
                  const: object
                kinds:
                  type: array
                  items:
                    type: string
                    enum:
                      - company
                      - equity_security
                      - fund
                      - service_provider
                      - instrument
                      - index
                      - crypto_asset
                      - commodity
                      - country
                      - indicator
                      - data_series
                      - offering
                      - fund_share_class
                      - market_event
                      - role
                      - sector
                      - securitization
                      - norm
                      - person
                    description: Tipo canônico do objeto. `equity_security` é o papel, separado de
                      `company`; `securitization` é a emissão, separada da série
                      negociável (`instrument`); e `fund_share_class` é a
                      subclasse, separada da classe com CNPJ (`fund`).
                      `indicator` representa o conceito medido, enquanto
                      `data_series` representa uma publicação ou cálculo
                      específico. `offering`, `market_event` e `norm` são
                      objetos porque possuem identidade, atributos e relações
                      próprias. `person` é a pessoa física nomeada em papel
                      regulado (administrador, conselheiro, acionista
                      relevante), chaveada por `person_key`, um hash
                      irreversível; o documento nunca é publicado.
                  minItems: 1
                  description: Tipos de objeto que a capacidade aceita como sujeito.
                subkinds:
                  type: array
                  items:
                    type: string
                  description: "Quando só um subtipo tem a capacidade (ex.: `fidc`)."
                grain:
                  type: string
                  enum:
                    - object
                    - paper
                  description: "O TETO do grão: `paper` diz que algum tipo responde por papel e
                    pode exigir `series` (uma companhia com dois papéis); no
                    próprio papel o mesmo capítulo é de objeto."
              required:
                - mode
                - kinds
                - grain
            - type: object
              properties:
                mode:
                  type: string
                  const: none
              required:
                - mode
            - type: object
              properties:
                mode:
                  type: string
                  const: resource
                type:
                  type: string
                  description: "Tipo do recurso do módulo que a Action altera (ex.:
                    `wallet.portfolio`)."
              required:
                - mode
                - type
        lifecycle:
          type: string
          enum:
            - default
            - preview
            - deprecated
        stability:
          type: string
          enum:
            - stable
            - preview
        scopes:
          type: array
          items:
            type: string
          description: Scopes que a credencial precisa carregar.
        confirmation:
          type: string
          enum:
            - required
            - conditional
            - none
          description: "`required` exige `confirmed: true` no execute; `conditional` exige
            quando o preview traz `warnings`; `none` executa direto."
        execute:
          type: object
          properties:
            method:
              type: string
              enum:
                - GET
                - POST
            path:
              type: string
          required:
            - method
            - path
          description: Rota de execução (Functions e Actions) ou de leitura (primitivas).
        describe:
          type: string
          description: Rota que devolve o spec completo, com schemas.
        legacy_operation:
          type: string
          description: Operação do contrato que ainda serve o mesmo, enquanto a migração
            não fecha.
        version:
          type: number
          const: 1
        preview:
          type: boolean
          description: Se `POST …/preview` existe para esta Action.
        idempotency:
          type: string
          enum:
            - key
            - natural
          description: "`key` aceita `idempotency_key` e repete a resposta da primeira
            execução; `natural` já é idempotente pelo próprio efeito."
        effects:
          type: array
          items:
            type: string
          description: Efeitos colaterais, um por frase.
        audit_event:
          type: string
        input_schema:
          type: object
          additionalProperties: {}
        output_schema:
          type: object
          additionalProperties: {}
        preview_schema:
          type:
            - object
            - "null"
          additionalProperties: {}
          description: Forma do `changes` da prévia, quando a Action a promete; `null`
            quando ela não promete forma.
        preview_path:
          type:
            - string
            - "null"
      required:
        - id
        - type
        - module
        - domain
        - title
        - description
        - subject
        - lifecycle
        - stability
        - scopes
        - confirmation
        - describe
        - version
        - preview
        - idempotency
        - effects
        - audit_event
        - input_schema
        - output_schema
        - preview_schema
        - preview_path
    ActionPreview:
      type: object
      properties:
        action:
          type: string
        summary:
          type: string
          description: O efeito em uma frase, para mostrar a quem confirma.
        effects:
          type: array
          items:
            type: string
        target:
          description: O recurso que seria alterado, como está hoje.
        changes:
          description: O que mudaria, no formato que `preview_schema` declara quando a
            Action o promete.
        warnings:
          type: array
          items:
            type: string
          default: []
        requires_confirmation:
          type: boolean
      required:
        - action
        - summary
        - effects
        - warnings
        - requires_confirmation
    ActionExecution:
      type: object
      properties:
        action:
          type: string
        result: {}
        replayed:
          type: boolean
          description: true quando a resposta veio da primeira execução com a mesma
            `idempotency_key`.
        audit_event:
          type: string
      required:
        - action
        - replayed
        - audit_event
    CapabilityDetail:
      description: "O spec completo de uma capacidade, pelo tipo: Function, Action ou
        primitiva/sistema."
      oneOf:
        - $ref: "#/components/schemas/FunctionDescriptor"
        - $ref: "#/components/schemas/ActionDescriptor"
        - $ref: "#/components/schemas/PrimitiveDescriptor"
    BondCurvePoint:
      type: object
      properties:
        tenor_days:
          type: number
          x-unit: count
          x-dimension: duration
          x-scale: days
          x-period: none
        tenor_years:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: duration
          x-scale: years
          x-period: none
        rate_pct_aa:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
      required:
        - tenor_days
        - tenor_years
        - rate_pct_aa
    FunctionInput_bonds_curves_get:
      type: object
      properties:
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Data de referência da curva (default: mais recente)."
        kind:
          type: string
          enum:
            - di
            - pre_ref
            - ipca_ref
            - implicita_ref
          default: di
          description: di = curva de juros futuros de mercado; pre_ref/ipca_ref = curvas
            de referência de mercado pré e IPCA+; implicita_ref = inflação
            implícita entre as duas.
    FunctionOutput_bonds_curves_get:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/BondCurvePoint"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            date:
              type:
                - string
                - "null"
            kind:
              type: string
              enum:
                - di
                - pre_ref
                - ipca_ref
                - implicita_ref
          required:
            - next_cursor
            - count
            - date
            - kind
      required:
        - data
        - meta
    CommodityCurvePoint:
      type: object
      properties:
        contract_code:
          type: string
        expiry_date:
          type:
            - string
            - "null"
        settlement_price:
          type:
            - number
            - "null"
          x-unit: native
        contracts:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
      required:
        - contract_code
        - expiry_date
        - settlement_price
        - contracts
    FunctionInput_commodities_curve_get:
      type: object
      properties:
        commodity:
          type: string
          minLength: 1
          description: Chave da mercadoria, como sai em `listObjects(kind=commodity,
            where=market=b3)`.
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Pregão de referência (YYYY-MM-DD). Default: o mais recente."
      required:
        - commodity
    FunctionOutput_commodities_curve_get:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CommodityCurvePoint"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            commodity:
              type: string
            product_name:
              type:
                - string
                - "null"
            reference_owner:
              type:
                - string
                - "null"
            trade_date:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - commodity
            - product_name
            - reference_owner
            - trade_date
      required:
        - data
        - meta
    CommoditySettlement:
      type: object
      properties:
        trade_date:
          type: string
        contract_code:
          type: string
        expiry_date:
          type:
            - string
            - "null"
        settlement_price:
          type:
            - number
            - "null"
          x-unit: native
        prev_settlement_price:
          type:
            - number
            - "null"
          x-unit: native
        close_price:
          type:
            - number
            - "null"
          x-unit: native
        contracts:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        trades:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: daily
        financial_volume:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
      required:
        - trade_date
        - contract_code
        - expiry_date
        - settlement_price
        - prev_settlement_price
        - close_price
        - contracts
        - trades
        - financial_volume
    FunctionInput_commodities_settlements_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        commodity:
          type: string
          minLength: 1
          description: Chave da mercadoria, como sai em `listObjects(kind=commodity,
            where=market=b3)`.
        contract:
          type: string
          description: "Restringe a UM vencimento (ex.: BGIN26). Sem ele a série mistura
            vencimentos na mesma data."
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início da janela (YYYY-MM-DD).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim da janela (YYYY-MM-DD).
      required:
        - commodity
    FunctionOutput_commodities_settlements_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CommoditySettlement"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            commodity:
              type: string
            product_name:
              type:
                - string
                - "null"
            reference_owner:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - commodity
            - product_name
            - reference_owner
      required:
        - data
        - meta
    CreditCurvePoint:
      type: object
      properties:
        bucket:
          type: string
          enum:
            - 0-2
            - 2-4
            - 4-7
            - 7+
        min_years:
          type: number
          x-unit: count
          x-dimension: duration
          x-scale: years
          x-period: none
        max_years:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: duration
          x-scale: years
          x-period: none
        spread_median_pct_aa:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        pct_of_curve_median:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: none
        n_papers:
          type: number
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        volume_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
      required:
        - bucket
        - min_years
        - max_years
        - spread_median_pct_aa
        - pct_of_curve_median
        - n_papers
        - volume_brl
    FunctionInput_credit_curve_get:
      type: object
      properties:
        indexer:
          type: string
          enum:
            - DI
            - IPCA
          default: DI
          description: "Família da curva: DI (DI a ~100% + spread) ou IPCA (IPCA + taxa
            real)."
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Data da curva (AAAA-MM-DD, pregão). Default: a mais recente
            materializada."
    FunctionOutput_credit_curve_get:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CreditCurvePoint"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            date:
              type:
                - string
                - "null"
            indexer:
              type: string
              enum:
                - DI
                - IPCA
          required:
            - next_cursor
            - count
            - date
            - indexer
      required:
        - data
        - meta
    DebentureScreenerRow:
      type: object
      properties:
        code:
          type: string
        isin:
          type:
            - string
            - "null"
        issuer_name:
          type: string
        issuer_cnpj:
          type: string
        issuer_cd_cvm:
          type:
            - number
            - "null"
        issuer_primary_ticker:
          type:
            - string
            - "null"
        issuer_categ_reg:
          type:
            - string
            - "null"
        issuer_match_level:
          type:
            - string
            - "null"
        is_active:
          type: boolean
        indexer:
          type:
            - string
            - "null"
        indexer_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: none
        spread_pct_aa:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        is_incentivada:
          type:
            - boolean
            - "null"
        guarantee_type:
          type:
            - string
            - "null"
        maturity_date:
          type:
            - string
            - "null"
        years_to_maturity:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: duration
          x-scale: years
          x-period: none
        face_value_current:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        qty_outstanding:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        qty_outstanding_zero_reason:
          type:
            - string
            - "null"
          description: "Motivo do zero arquivado na fonte, mesma taxonomia de Debenture:
            'not_placed' e 'fully_redeemed' mantêm 0;
            'contradicted_by_recent_trades',
            'redeemed_before_maturity_unverifiable', 'unreported_no_movement',
            'unreported_partial_movement' e 'unparseable' vêm com
            qty_outstanding null."
        listed_b3:
          type:
            - boolean
            - "null"
        last_trade_date:
          type:
            - string
            - "null"
        last_pu_avg:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        last_pct_of_curve:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: daily
        trades_30d:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: rolling_1m
        qty_traded_30d:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: rolling_1m
        volume_brl_30d:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: rolling_1m
          x-currency: BRL
        trades_90d:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: rolling_3m
        volume_brl_90d:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: rolling_3m
          x-currency: BRL
        fund_holders:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        funds_value_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
      required:
        - code
        - isin
        - issuer_name
        - issuer_cnpj
        - issuer_cd_cvm
        - issuer_primary_ticker
        - issuer_categ_reg
        - issuer_match_level
        - is_active
        - indexer
        - indexer_pct
        - spread_pct_aa
        - is_incentivada
        - guarantee_type
        - maturity_date
        - years_to_maturity
        - face_value_current
        - qty_outstanding
        - qty_outstanding_zero_reason
        - listed_b3
        - last_trade_date
        - last_pu_avg
        - last_pct_of_curve
        - trades_30d
        - qty_traded_30d
        - volume_brl_30d
        - trades_90d
        - volume_brl_90d
        - fund_holders
        - funds_value_brl
    FunctionInput_credit_debentures_screen:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        q:
          type: string
          description: Busca por código do papel ou nome do emissor (substring).
        indexer:
          type: string
          description: "Indexador as-filed: DI, IPCA, IGP-M, PRÉ, TR…"
        incentivada:
          type: boolean
          description: true = só incentivadas (Lei 12.431, isentas de IR para pessoa
            física).
        active:
          type: boolean
          default: true
          description: Default true = só emissões vivas. active=false lista as saídas
            (vencidas/resgatadas).
        maturityFrom:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Vencimento a partir de (AAAA-MM-DD).
        maturityTo:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Vencimento até (AAAA-MM-DD).
        minSpread:
          type: number
          description: Spread mínimo em % a.a. sobre o indexador.
        maxSpread:
          type: number
          description: Spread máximo em % a.a. sobre o indexador.
        minTrades30d:
          type: number
          description: "Piso de liquidez: nº mínimo de negócios no secundário na janela de
            30 dias."
        minFundHolders:
          type: number
          description: Nº mínimo de fundos com posição no papel na última carteira mensal
            divulgada.
        orderBy:
          type: string
          enum:
            - spread
            - maturity
            - volume_30d
            - trades_30d
            - fund_holders
            - pct_of_curve
          default: volume_30d
          description: "Critério de ordenação: spread (spread_pct_aa), maturity
            (vencimento), volume_30d, trades_30d, fund_holders ou pct_of_curve
            (last_pct_of_curve). Papel sem a métrica vai para o fim em qualquer
            sentido."
        order:
          type: string
          enum:
            - asc
            - desc
          default: desc
          description: asc ou desc (default desc).
    FunctionOutput_credit_debentures_screen:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/DebentureScreenerRow"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    FidcDelinquency:
      type: object
      properties:
        cnpj:
          type: string
        reference_date:
          type: string
        risk_retained:
          type: boolean
        bucket:
          type: string
        bucket_label:
          type:
            - string
            - "null"
        bucket_order:
          type: number
        amount_due:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        amount_overdue:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        amount_prepaid:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        pct_of_due:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
        pct_of_overdue:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
        pct_of_prepaid:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
        pct_implausible:
          type:
            - boolean
            - "null"
        total_due:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        total_overdue:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        total_prepaid:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
      required:
        - cnpj
        - reference_date
        - risk_retained
        - bucket
        - bucket_label
        - bucket_order
        - amount_due
        - amount_overdue
        - amount_prepaid
        - pct_of_due
        - pct_of_overdue
        - pct_of_prepaid
        - pct_implausible
        - total_due
        - total_overdue
        - total_prepaid
    FunctionInput_credit_fidc_delinquency_distribution:
      type: object
      properties:
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Competência exata (fim de mês). Default: a mais recente."
    FunctionOutput_credit_fidc_delinquency_distribution:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FidcDelinquency"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            cnpj:
              type: string
            reference_date:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - cnpj
            - reference_date
      required:
        - data
        - meta
    FidcInvestor:
      type: object
      properties:
        cnpj:
          type: string
        reference_date:
          type: string
        seniority:
          type: string
          enum:
            - senior
            - subordinada
        investor_type:
          type: string
        investor_type_label:
          type:
            - string
            - "null"
        investor_count:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        seniority_total:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        pct_of_seniority:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
        is_institutional:
          type:
            - boolean
            - "null"
      required:
        - cnpj
        - reference_date
        - seniority
        - investor_type
        - investor_type_label
        - investor_count
        - seniority_total
        - pct_of_seniority
        - is_institutional
    FunctionInput_credit_fidc_investors_distribution:
      type: object
      properties:
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Competência exata (fim de mês). Default: a mais recente."
    FunctionOutput_credit_fidc_investors_distribution:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FidcInvestor"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            cnpj:
              type: string
            reference_date:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - cnpj
            - reference_date
      required:
        - data
        - meta
    FidcPricing:
      type: object
      properties:
        cnpj:
          type: string
        reference_date:
          type: string
        asset_class:
          type: string
          enum:
            - direitos_com_risco
            - direitos_sem_risco
            - valores_mobiliarios
            - titulos_publicos
            - cdb
            - outra_renda_fixa
        asset_class_label:
          type:
            - string
            - "null"
        risk_retained:
          type:
            - boolean
            - "null"
        rate_kind:
          type: string
          enum:
            - desconto_aquisicao
            - juros
        buy_min:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        buy_avg:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        buy_max:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        sell_min:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        sell_avg:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        sell_max:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        buy_spread:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        rate_implausible:
          type:
            - boolean
            - "null"
        peer_median_buy_avg:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
        peer_count:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        buy_vs_peer_pp:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
      required:
        - cnpj
        - reference_date
        - asset_class
        - asset_class_label
        - risk_retained
        - rate_kind
        - buy_min
        - buy_avg
        - buy_max
        - sell_min
        - sell_avg
        - sell_max
        - buy_spread
        - rate_implausible
        - peer_median_buy_avg
        - peer_count
        - buy_vs_peer_pp
    FunctionInput_credit_fidc_pricing_distribution:
      type: object
      properties:
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Competência exata (fim de mês). Default: a mais recente."
    FunctionOutput_credit_fidc_pricing_distribution:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FidcPricing"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            cnpj:
              type: string
            reference_date:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - cnpj
            - reference_date
      required:
        - data
        - meta
    FidcScrLevel:
      type: object
      properties:
        cnpj:
          type: string
        reference_date:
          type: string
        scr_level:
          type: string
        scr_order:
          type: number
        amount_debtor:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        amount_operation:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        pct_debtor:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
        pct_operation:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
        total_debtor:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        total_operation:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        declares_scr:
          type:
            - boolean
            - "null"
      required:
        - cnpj
        - reference_date
        - scr_level
        - scr_order
        - amount_debtor
        - amount_operation
        - pct_debtor
        - pct_operation
        - total_debtor
        - total_operation
        - declares_scr
    FunctionInput_credit_fidc_scr_distribution:
      type: object
      properties:
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Competência exata (fim de mês). Default: a mais recente."
    FunctionOutput_credit_fidc_scr_distribution:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FidcScrLevel"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            cnpj:
              type: string
            reference_date:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - cnpj
            - reference_date
      required:
        - data
        - meta
    FidcSector:
      type: object
      properties:
        cnpj:
          type: string
        reference_date:
          type: string
        sector_code:
          type: string
        parent_code:
          type:
            - string
            - "null"
        is_subcategory:
          type: boolean
        sector_label:
          type: string
        amount:
          type: number
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        pct_of_portfolio:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
      required:
        - cnpj
        - reference_date
        - sector_code
        - parent_code
        - is_subcategory
        - sector_label
        - amount
        - pct_of_portfolio
    FunctionInput_credit_fidc_sectors_distribution:
      type: object
      properties:
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Competência exata (fim de mês). Default: a mais recente."
    FunctionOutput_credit_fidc_sectors_distribution:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FidcSector"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            cnpj:
              type: string
            reference_date:
              type:
                - string
                - "null"
            portfolio_total:
              type:
                - number
                - "null"
              x-unit: brl
              x-dimension: currency
              x-scale: unit
              x-period: none
              x-currency: BRL
            classified_total:
              type:
                - number
                - "null"
              x-unit: brl
              x-dimension: currency
              x-scale: unit
              x-period: none
              x-currency: BRL
            unclassified_total:
              type:
                - number
                - "null"
              x-unit: brl
              x-dimension: currency
              x-scale: unit
              x-period: none
              x-currency: BRL
          required:
            - next_cursor
            - count
            - cnpj
            - reference_date
            - portfolio_total
            - classified_total
            - unclassified_total
      required:
        - data
        - meta
    FunctionInput_credit_offering_terms:
      type: object
    FunctionOutput_credit_offering_terms:
      type: object
      properties:
        offer_id:
          type: number
          description: Id da oferta no sistema de esforços restritos da CVM.
        source:
          type: string
          description: "Fonte do documento, ex.: 'hurst_lamina'."
        protocol:
          type: string
          description: Identificador do documento na fonte (o slug da oferta na plataforma).
        asset_code:
          type:
            - string
            - "null"
          description: "Código da emissão publicado pela plataforma, ex.: 'E232'."
        schema_id:
          type: string
          description: "Extrator que produziu os fatos, ex.: 'anexo_e_terms/v1'."
        extractor_model:
          type: string
        extracted_at:
          anyOf:
            - type: string
            - type: string
        match:
          type: object
          properties:
            method:
              type: string
              enum:
                - target_and_date
                - quantity
            confidence:
              type: string
              enum:
                - high
                - medium
            target_diff_pct:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: share
              x-scale: percent
              x-period: none
              description: Diferença entre o alvo da lâmina e o do Anexo G, em %. `high` exige
                alvo a ≤1 % e início a ≤7 dias; a lâmina vale só para a oferta
                mais próxima da data que ela declara.
            start_diff_days:
              type:
                - number
                - "null"
              x-unit: count
              x-dimension: duration
              x-scale: days
              x-period: none
              description: Dias entre o início declarado na lâmina e o do Anexo G.
          required:
            - method
            - confidence
            - target_diff_pct
            - start_diff_days
          description: "Como a lâmina foi casada com a oferta do Anexo G: a lâmina não
            carrega o id da CVM."
        remuneracao_plataforma:
          type: object
          properties:
            taxa_sucesso_pct:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: share
              x-scale: percent
              x-period: none
            performance_pct:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: share
              x-scale: percent
              x-period: none
            fixa_brl:
              type:
                - number
                - "null"
              x-unit: brl
              x-dimension: currency
              x-scale: unit
              x-period: none
              x-currency: BRL
            outras_pct:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: share
              x-scale: percent
              x-period: none
            em_valores_mobiliarios:
              type:
                - boolean
                - "null"
          required:
            - taxa_sucesso_pct
            - performance_pct
            - fixa_brl
            - outras_pct
            - em_valores_mobiliarios
          description: Seção 9 do Anexo E. null = não declarado na lâmina; nunca zero.
        remuneracao_investidor:
          type: object
          properties:
            taxa_descricao:
              type:
                - string
                - "null"
            taxa_aa_pct:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: rate
              x-scale: percent
              x-period: annual
            indexador:
              type:
                - string
                - "null"
            periodicidade_pagamento:
              type:
                - string
                - "null"
            prazo_meses:
              type:
                - number
                - "null"
              x-unit: count
              x-dimension: duration
              x-scale: months
              x-period: none
          required:
            - taxa_descricao
            - taxa_aa_pct
            - indexador
            - periodicidade_pagamento
            - prazo_meses
        termos:
          type: object
          additionalProperties: {}
          description: "Objeto completo do extrator: oferta, lastro, garantias, riscos,
            sindicato, prestadores."
      required:
        - offer_id
        - source
        - protocol
        - asset_code
        - schema_id
        - extractor_model
        - extracted_at
        - match
        - remuneracao_plataforma
        - remuneracao_investidor
        - termos
    CreditOtcQuote:
      type: object
      properties:
        trade_date:
          type: string
        instrument_code:
          type: string
        family:
          type: string
        isin:
          type:
            - string
            - "null"
        issuer_name:
          type:
            - string
            - "null"
        quantity:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: daily
        trade_count:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: daily
        price_min:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        price_avg:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        price_max:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        price_last:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        volume_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
      required:
        - trade_date
        - instrument_code
        - family
        - isin
        - issuer_name
        - quantity
        - trade_count
        - price_min
        - price_avg
        - price_max
        - price_last
        - volume_brl
    FunctionInput_credit_otc_quotes_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        family:
          type: string
          minLength: 2
          description: "Família do instrumento: CDB, CCB, CRI, CRA, LCI, LCA, LF, LIG, NC,
            COE…"
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Pregão exato (default: o mais recente com negócios)."
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
      required:
        - family
    FunctionOutput_credit_otc_quotes_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CreditOtcQuote"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            order:
              type: string
              const: desc
              description: Do mais RECENTE para o mais antigo. Declarado porque as séries
                deste contrato não têm um sentido único — `getObjectHistory`
                devolve crescente — e quem calcula variação entre linhas
                consecutivas inverte o sinal sem erro nenhum.
          required:
            - next_cursor
            - count
            - order
      required:
        - data
        - meta
    FunctionInput_credit_regulation_terms:
      type: object
    FunctionOutput_credit_regulation_terms:
      type: object
      properties:
        cnpj:
          type: string
        protocol:
          type: string
          description: Protocolo do documento no FNET/CVM.
        schema_id:
          type: string
          description: "Extrator que produziu os fatos, ex.: 'regulamento_fidc/v3'."
        extractor_model:
          type: string
        extracted_at:
          anyOf:
            - type: string
            - type: string
        custo:
          type: object
          properties:
            total_pct_aa:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: rate
              x-scale: percent
              x-period: annual
              description: Custo anual somando SÓ o que incide sobre o patrimônio ao ano. null
                = nada comparável declarado; nunca zero, que afirmaria
                gratuidade.
            parcelas:
              type: array
              items:
                type: object
                properties:
                  tipo:
                    type: string
                  pct_aa:
                    type: number
                    x-unit: pct
                    x-dimension: rate
                    x-scale: percent
                    x-period: annual
                  convertida_de_fixo:
                    type: boolean
                    description: True quando saiu de um valor fixo mensal convertido pelo
                      patrimônio.
                  pagina:
                    type:
                      - number
                      - "null"
                required:
                  - tipo
                  - pct_aa
                  - convertida_de_fixo
                  - pagina
            fora_da_soma:
              type: array
              items:
                type: object
                properties:
                  tipo:
                    type: string
                  base:
                    type: string
                  motivo:
                    type: string
                required:
                  - tipo
                  - base
                  - motivo
              description: Taxas declaradas que NÃO entram no custo anual, com o motivo.
            parcial:
              type: boolean
              description: "True quando há taxa fora da soma: o total é um PISO."
            suspeito:
              type: boolean
              description: True quando alguma parcela isolada passa de 3% a.a., o que
                raramente é percentual anual sobre o PL.
          required:
            - total_pct_aa
            - parcelas
            - fora_da_soma
            - parcial
            - suspeito
        termos:
          type: object
          additionalProperties: {}
          description: "Objeto completo do extrator: gatilhos, carteira, liquidez,
            prestadores."
      required:
        - cnpj
        - protocol
        - schema_id
        - extractor_model
        - extracted_at
        - custo
        - termos
    DocumentKind:
      type: string
      enum:
        - material_fact
        - market_communication
        - financial_report
        - shareholder_notice
        - shareholder_meeting
        - periodic_report
        - management_report
        - other
    Document:
      type: object
      properties:
        cvm_code:
          type: integer
        kind:
          $ref: "#/components/schemas/DocumentKind"
          description: Tipo estável do documento, derivado de `category`. Use-o para
            filtrar (`kind=material_fact`) em vez de casar a string em
            português, que varia com o vocabulário da fonte.
        category:
          type:
            - string
            - "null"
          description: Categoria como publicada no IPE/CVM (texto livre)
        type:
          type:
            - string
            - "null"
        subject:
          type:
            - string
            - "null"
        reference_date:
          type:
            - string
            - "null"
        filed_at:
          type:
            - string
            - "null"
        protocol:
          type:
            - string
            - "null"
        download_url:
          type:
            - string
            - "null"
      required:
        - cvm_code
        - kind
        - category
        - type
        - subject
        - reference_date
        - filed_at
        - protocol
        - download_url
    FunctionInput_documents_company_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        total:
          type: string
          description: true = inclui `meta.total` (contagem do universo filtrado). Custa
            uma consulta a mais.
        kind:
          $ref: "#/components/schemas/DocumentKind"
          description: Tipo estável do documento. Prefira este filtro a `category`, que é
            texto livre e muda com a fonte.
        category:
          type: string
          description: "Categoria bruta no IPE/CVM, ex.: 'Fato Relevante', 'Assembleia'."
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período pela data de REFERÊNCIA do documento, não pela de
            protocolo (`filed_at`).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (data de referência, inclusive).
    FunctionOutput_documents_company_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/Document"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            order:
              type: string
              const: desc
              description: Do protocolo mais RECENTE para o mais antigo (`filed_at`).
          required:
            - next_cursor
            - count
            - order
      required:
        - data
        - meta
    DocumentReadChunk:
      type: object
      properties:
        chunk_index:
          type: integer
          description: Posição do trecho no documento; a paginação preserva esta ordem.
        text:
          type: string
        heading_path:
          type:
            - string
            - "null"
        is_table:
          type: boolean
        page_start:
          type:
            - integer
            - "null"
        page_end:
          type:
            - integer
            - "null"
      required:
        - chunk_index
        - text
        - heading_path
        - is_table
        - page_start
        - page_end
    DocumentCitation:
      type: object
      properties:
        ticker:
          type:
            - string
            - "null"
          description: Null em documento de crédito — use `asset_code`/`issuer_cnpj`.
        company_name:
          type:
            - string
            - "null"
        entity_type:
          type:
            - string
            - "null"
          description: Tipo de entidade do documento; nulo no acervo anterior à coluna.
        issuer_cnpj:
          type:
            - string
            - "null"
          description: CNPJ do emissor (14 dígitos). Null para ação e FII, que se
            identificam por ticker.
        asset_code:
          type:
            - string
            - "null"
          description: "Papel a que o documento se refere: ISIN, código ANBIMA ou código
            de instrumento B3."
        asset_family:
          type:
            - string
            - "null"
        doc_category:
          type:
            - string
            - "null"
          description: Categoria bruta da fonte.
        doc_type_raw:
          type:
            - string
            - "null"
          description: Subtipo bruto da fonte.
        document_kind:
          $ref: "#/components/schemas/CorpusDocumentKind"
        reference_date:
          type:
            - string
            - "null"
          description: Período a que o documento se REFERE. Não é a data de publicação.
        filed_at:
          type:
            - string
            - "null"
          description: Data em que o documento foi protocolado na fonte — a que define
            disponibilidade point-in-time.
        filed_at_source:
          type:
            - string
            - "null"
          description: "`source` = veio da fonte oficial; null = a fonte não forneceu
            (nunca há fallback para `reference_date`)."
        protocol:
          type:
            - string
            - "null"
          description: Identificador do documento na fonte, auditável junto com `source`.
        source:
          type:
            - string
            - "null"
          description: "Conector de origem (ex.: cvm_ipe, fnet_fii)."
        page_start:
          type:
            - integer
            - "null"
        download_url:
          type:
            - string
            - "null"
        heading_path:
          type:
            - string
            - "null"
        version:
          $ref: "#/components/schemas/DocumentVersion"
      required:
        - ticker
        - company_name
        - entity_type
        - issuer_cnpj
        - asset_code
        - asset_family
        - doc_category
        - doc_type_raw
        - document_kind
        - reference_date
        - filed_at
        - filed_at_source
        - protocol
        - source
        - page_start
        - download_url
        - heading_path
        - version
    CorpusDocumentKind:
      type: string
      enum:
        - material_fact
        - market_communication
        - financial_report
        - shareholder_notice
        - shareholder_meeting
        - periodic_report
        - management_report
        - debt_instrument
        - governing_document
        - offering_document
        - regulation
        - other
      description: Classificação estável do corpus. `debt_instrument` reúne escritura,
        termo de securitização e aditamento; `governing_document` reúne
        regulamento e documento constitutivo; `offering_document` é a lâmina da
        oferta; `regulation` é o texto consolidado de norma.
    DocumentVersion:
      anyOf:
        - type: object
          properties:
            key:
              type: string
              description: 'O que identificou "a mesma coisa": `cnpj:<emissor>` ou
                `asset:<instrumento>`.'
            family:
              type: string
              description: A fila de que este documento participa; mesma família e mesma chave
                = uma linha do tempo.
            role:
              type: string
              description: "`base` restabelece o texto inteiro; `amendment` altera o base em
                vigor."
            index:
              type: integer
              description: Posição por data de protocolo na fila inteira. 1 = o mais antigo.
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Quantos documentos há na fila, incluindo os sem data.
            is_current:
              type:
                - boolean
                - "null"
              description: "`true` só quando este documento, sozinho, é o texto em vigor.
                `null` quando a fila tem documento sem data ou nenhum base."
            current_base:
              type:
                - string
                - "null"
              description: Protocolo do `base` em vigor a que as emendas se somam.
            amendments_after:
              type: array
              items:
                type: string
              description: Protocolos que alteram `current_base`, do mais antigo ao mais
                recente. Lista vazia é medição, não omissão.
            is_latest_in_chain:
              type: boolean
              description: Este é o último elo datado da fila.
            undated:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Documentos da fila sem data de protocolo, excluídos da ordenação.
            unindexed:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: "Documentos que existem no acervo e ainda não foram lidos: contam
                para a vigência e `readDocument` ainda não os recupera."
            previous:
              type:
                - string
                - "null"
              description: Protocolo do imediatamente anterior na fila.
            next_in_chain:
              type:
                - string
                - "null"
              description: Protocolo do imediatamente posterior na fila.
            superseded_by:
              type:
                - string
                - "null"
              description: O `base` seguinte, que aposentou este. Nulo em emendas.
            amends:
              type:
                - string
                - "null"
              description: "Para `role: amendment`, o `base` que ele altera."
            shape:
              type: string
              description: Forma temporal declarada da categoria deste documento.
          required:
            - key
            - family
            - role
            - index
            - total
            - is_current
            - current_base
            - amendments_after
            - is_latest_in_chain
            - undated
            - unindexed
            - previous
            - next_in_chain
            - superseded_by
            - amends
            - shape
        - type: object
          properties:
            reason:
              type: string
              enum:
                - shape_has_no_versions
                - missing_key
                - missing_date
                - not_implemented
              description: "Por que não há fila: a categoria não versiona, falta a chave do
                grupo, falta a data, ou a forma ainda não é calculada."
            detail:
              type: string
              description: O motivo em uma frase, com o campo que falta nomeado.
          required:
            - reason
            - detail
        - type: "null"
      description: Posição deste documento na fila dos seus semelhantes, ou o motivo
        de não haver fila. Nunca é omitido.
    FunctionInput_documents_content_read:
      type: object
      properties:
        protocol:
          type: string
          minLength: 1
          description: Protocolo exato devolvido na citação da busca.
        source:
          type: string
          minLength: 1
          description: "Conector devolvido na citação (ex.: cvm_ipe, fnet_fii). Protocolo
            em mais de uma fonte sem `source` responde 409 com as opções."
        cursor:
          type: string
          pattern: ^\d+$
          description: Valor devolvido em `meta.next_cursor`; omita na primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 50
          description: Trechos por página (1–50, 20 por padrão).
      required:
        - protocol
    FunctionOutput_documents_content_read:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/DocumentReadChunk"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            protocol:
              type: string
            source:
              type: string
            citation:
              $ref: "#/components/schemas/DocumentCitation"
          required:
            - next_cursor
            - count
            - protocol
            - source
            - citation
      required:
        - data
        - meta
    DocumentEntityType:
      type: string
      enum:
        - stock
        - fii
        - fiagro
        - issuer
        - securitization
        - fidc
      description: stock = companhia com ação negociada · fii = fundo imobiliário ·
        fiagro = fundo das cadeias agroindustriais · issuer = companhia
        registrada apenas para emitir dívida (não tem ticker) · securitization =
        certificado CRI/CRA/OTS, identificado pelo ISIN · fidc = fundo de
        direitos creditórios.
    DocumentAssetFamily:
      type: string
      enum:
        - DEB
        - CRI
        - CRA
        - OTS
        - FIDC
        - FIAGRO
      description: Família do papel; eixo independente de `entity_type`.
    DocumentChunk:
      type: object
      properties:
        text:
          type: string
        text_expanded:
          type: string
          description: Entorno costurado (context-expansion), quando disponível.
        score:
          type: number
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
          description: Similaridade (1 - distância cosseno). Mede proximidade, não
            confiança factual.
        ticker:
          type:
            - string
            - "null"
        company_name:
          type:
            - string
            - "null"
        doc_category:
          type:
            - string
            - "null"
        doc_type:
          type:
            - string
            - "null"
        reference_date:
          type:
            - string
            - "null"
        page_start:
          type:
            - integer
            - "null"
        download_url:
          type:
            - string
            - "null"
        heading_path:
          type:
            - string
            - "null"
        citation:
          $ref: "#/components/schemas/DocumentCitation"
        is_table:
          type: boolean
      required:
        - text
        - score
        - citation
        - is_table
    FunctionInput_documents_corpus_search:
      type: object
      properties:
        q:
          type: string
          minLength: 1
          description: Termo ou pergunta em linguagem natural.
        tickers:
          type: array
          items:
            type: string
            minLength: 1
          minItems: 1
          description: "Filtra por papéis, ex.: ['PETR4','PRIO3']. Texto separado por
            vírgula também é aceito."
        category:
          type: string
          minLength: 1
          description: Categoria bruta, sensível ao rótulo da fonte. Descubra em
            `documents.taxonomy.get`.
        document_kind:
          $ref: "#/components/schemas/CorpusDocumentKind"
          description: Taxonomia estável do acervo — prefira-a à categoria bruta.
        entity_type:
          $ref: "#/components/schemas/DocumentEntityType"
          description: Que tipo de entidade o documento descreve.
        issuer_cnpj:
          type: string
          description: CNPJ do emissor (pontuação aceita e ignorada). É a chave de
            entidade dos documentos de crédito, que não têm ticker.
        asset_code:
          type: string
          minLength: 3
          description: "Identificador do papel: ISIN, código ANBIMA ou código de
            instrumento da B3."
        asset_family:
          $ref: "#/components/schemas/DocumentAssetFamily"
          description: Família do papel; eixo independente de `entity_type`.
        year:
          type: integer
          minimum: 1900
          maximum: 2100
          description: Ano de referência do documento (AAAA).
        filed_before:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Só documentos protocolados até a data. Exclui os sem `filed_at`
            conhecido e avisa em `warnings`.
        filed_after:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Só documentos protocolados a partir da data. Documentos sem data de
            publicação são excluídos.
        protocol:
          type: string
          minLength: 1
          description: Restringe a UM documento exato — busca dentro do documento.
        reference_date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Período de referência exato do documento (ex.: 2022-06-30 = 2T22)."
        reference_from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do intervalo de `reference_date` (inclusivo).
        reference_to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do intervalo de `reference_date` (inclusivo).
        doc_type:
          type: string
          minLength: 1
          description: Subtipo bruto, sensível ao rótulo da fonte. Descubra em
            `documents.taxonomy.get`.
        tables_only:
          type: boolean
          description: Restringe a trechos de tabela (fatos numéricos).
        financial_only:
          type: boolean
          description: true restringe a emissores financeiros; false restringe aos demais.
        include_context:
          type: boolean
          description: false remove o bloco duplicado `meta.context` e reduz tokens; os
            trechos e a citação continuam completos. Ligado por padrão.
        limit:
          type: integer
          minimum: 1
          maximum: 25
          description: Máximo de trechos (1–25, 8 por padrão).
      required:
        - q
    FunctionOutput_documents_corpus_search:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/DocumentChunk"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            query:
              type: string
            context:
              type: string
              description: Bloco pronto para prompt, com citação por trecho. Vazio quando
                `include_context` é false.
            warnings:
              type: array
              items:
                type: string
              description: Avisos de semântica da busca. Ausente quando não há avisos.
          required:
            - next_cursor
            - count
            - query
            - context
      required:
        - data
        - meta
    DocumentTaxonomy:
      type: object
      properties:
        kinds:
          type: array
          items:
            type: object
            properties:
              kind:
                $ref: "#/components/schemas/CorpusDocumentKind"
              label:
                type: string
              document_count:
                type: integer
                x-unit: count
                x-dimension: count
                x-scale: unit
                x-period: none
              categories:
                type: array
                items:
                  type: object
                  properties:
                    category:
                      type:
                        - string
                        - "null"
                    doc_type_raw:
                      type:
                        - string
                        - "null"
                    document_count:
                      type: integer
                      x-unit: count
                      x-dimension: count
                      x-scale: unit
                      x-period: none
                    shape:
                      type:
                        - string
                        - "null"
                      description: "Como um segundo documento da categoria se relaciona com o
                        anterior: `event` acumula, `superseding` substitui,
                        `amending` combina base e aditamentos, `periodic` separa
                        competências. Nulo é forma não declarada, não `event`."
                    shape_meaning:
                      type:
                        - string
                        - "null"
                      description: O que a forma quer dizer, em uma frase.
                    version_family:
                      type:
                        - string
                        - "null"
                      description: A fila de que esta categoria participa. Nulo quando a categoria não
                        versiona.
                    version_role:
                      type:
                        - string
                        - "null"
                      description: "`base` restabelece o texto inteiro; `amendment` só contém o que
                        muda."
                  required:
                    - category
                    - doc_type_raw
                    - document_count
                    - shape
                    - shape_meaning
                    - version_family
                    - version_role
            required:
              - kind
              - label
              - document_count
              - categories
        entity_types:
          type: array
          items:
            $ref: "#/components/schemas/DocumentEntityType"
          description: Tipos de entidade aceitos como filtro.
        asset_families:
          type: array
          items:
            $ref: "#/components/schemas/DocumentAssetFamily"
          description: Famílias aceitas para documentos de crédito e fundos.
        reference_years:
          type: object
          properties:
            min:
              type:
                - integer
                - "null"
            max:
              type:
                - integer
                - "null"
          required:
            - min
            - max
      required:
        - kinds
        - entity_types
        - asset_families
        - reference_years
    FunctionInput_documents_taxonomy_get:
      type: object
    FunctionOutput_documents_taxonomy_get:
      $ref: "#/components/schemas/DocumentTaxonomy"
    PublicMarketAnomaly:
      type: object
      properties:
        day:
          type: string
        series_code:
          type: string
          description: IBOV | IFIX | USDBRL | BRENT | VIX | SP500 | NASDAQ
        return_pct:
          type: number
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: daily
          description: Retorno do dia em % (a partir do log-retorno).
        zscore:
          type: number
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
          description: Desvios-padrão do retorno BRUTO vs σ rolling de 252 pregões. Quando
            local_zscore está presente, é ELE que define o dia como anômalo —
            este campo fica para auditoria.
        direction:
          type: string
          description: alta | queda
        factor_model:
          type:
            - string
            - "null"
          description: "Séries de controle descontadas (ex.: 'NASDAQ+USDBRL'). null =
            série sem modelo de fatores (as próprias séries globais) ou período
            sem os fatores disponíveis."
        local_return_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: daily
          description: "Quanto a série andou ALÉM do que os fatores explicam, em %. É o
            descolamento próprio do dia: um IBOV que cai 5% num dia de queda
            global de 5% tem local_return_pct ≈ 0."
        local_zscore:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
          description: "Desvios-padrão do descolamento local. É o critério de anomalia
            quando presente: separa 'o mundo caiu' de 'o Brasil caiu'."
        explained_by:
          oneOf:
            - $ref: "#/components/schemas/PublicMarketEvent"
            - type: "null"
          description: Evento que explica o dia anômalo, quando casado.
      required:
        - day
        - series_code
        - return_pct
        - zscore
        - direction
        - factor_model
        - local_return_pct
        - local_zscore
        - explained_by
    FunctionInput_events_anomalies_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        series:
          type: string
          enum:
            - IBOV
            - IFIX
            - USDBRL
            - BRENT
            - VIX
            - SP500
            - NASDAQ
          description: Série acompanhada; omitir = todas.
        min_z:
          type: number
          minimum: 3
          maximum: 20
          default: 4
          description: Corte de |z-score| (default 4).
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
    FunctionOutput_events_anomalies_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/PublicMarketAnomaly"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    FunctionInput_events_ledger_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: "Atalho: eventos de UM dia (equivale a from=to=date)."
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
        layer:
          type: string
          enum:
            - estrutural
            - setorial
            - corporativa
          description: "Camada do evento: estrutural (macro, política, mundo), setorial ou
            corporativa."
        category:
          type: string
          enum:
            - macro
            - politica
            - internacional
            - commodities
            - corporate
            - fii
            - cripto
            - mercado
            - outros
          description: Categoria do evento.
        entity:
          type: string
          description: "Nome de ator/empresa (ex.: 'Banco Central', 'Raizen')."
        ticker:
          type: string
          description: Ticker B3 citado no evento.
        thread:
          type: string
          description: "Slug da thread (ex.: 'mp-1376')."
    FunctionOutput_events_ledger_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/PublicMarketEvent"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    MarketEventSearchHit:
      type: object
      properties:
        event_id:
          type: integer
          description: Serial da folha do ledger; a identidade do objeto é `event_key`.
        event_key:
          type: string
          description: A chave do objeto no grafo — `resolveObject(event_key,
            kind=market_event)`. O `event_id` é serial da folha e não resolve.
        day:
          type: string
          description: Dia do evento (AAAA-MM-DD, BRT).
        layer:
          type: string
          description: estrutural | setorial | corporativa
        category:
          type: string
          description: macro | politica | internacional | commodities | corporate | fii |
            cripto | mercado | outros
        title:
          type: string
        summary:
          type:
            - string
            - "null"
        entities:
          type: array
          items:
            type: string
        tickers:
          type: array
          items:
            type: string
          description: Um papel por posição.
        transmission_channels:
          type: array
          items:
            type: string
          description: dolar | ibov | brent | curva | selic
        score:
          type:
            - number
            - "null"
          x-unit: native
          description: Rank do funil (imprensa) ou |z| (mercado) — não é a relevância da
            busca.
        detectors:
          type: array
          items:
            type: string
          description: official | press | market
        thread_slug:
          type:
            - string
            - "null"
        source_refs:
          type: array
          items:
            $ref: "#/components/schemas/MarketEventSourceRef"
        similarity:
          type: number
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
          description: Relevância semântica desta busca; maior = mais próximo da pergunta.
      required:
        - event_id
        - event_key
        - day
        - layer
        - category
        - title
        - summary
        - entities
        - tickers
        - transmission_channels
        - score
        - detectors
        - thread_slug
        - source_refs
        - similarity
    FunctionInput_events_ledger_search:
      type: object
      properties:
        q:
          type: string
          minLength: 1
          description: Termo ou pergunta em linguagem natural.
        limit:
          type: integer
          minimum: 1
          maximum: 25
          default: 8
          description: Máximo de eventos (1–25, default 8).
      required:
        - q
    FunctionOutput_events_ledger_search:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/MarketEventSearchHit"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            query:
              type: string
              description: A consulta usada na busca.
          required:
            - next_cursor
            - count
            - query
      required:
        - data
        - meta
    PublicSimilarEvent:
      allOf:
        - $ref: "#/components/schemas/PublicMarketEvent"
      properties:
        similarity:
          type: number
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
          description: Similaridade semântica (cosseno, 0-1) com o evento de referência.
      required:
        - similarity
    FunctionInput_events_similarity_search:
      type: object
      properties:
        id:
          type: integer
          exclusiveMinimum: 0
          description: Id numérico do evento de referência (de `event_id` em qualquer
            leitura de evento).
        limit:
          type: integer
          minimum: 1
          maximum: 25
          default: 10
          description: Máximo de eventos semelhantes (1–25, default 10).
      required:
        - id
    FunctionOutput_events_similarity_search:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/PublicSimilarEvent"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            reference_event_id:
              type: number
          required:
            - next_cursor
            - count
            - reference_event_id
      required:
        - data
        - meta
    PublicEventThread:
      type: object
      properties:
        slug:
          type: string
        kind:
          type: string
          description: mp | copom | tarifa | eleicao | conflito | fiscal | outro
        title:
          type: string
        status:
          type: string
          description: em_curso | resolvido
        started_at:
          type: string
        resolved_at:
          type:
            - string
            - "null"
        last_event_day:
          type:
            - string
            - "null"
        entities:
          type: array
          items:
            type: string
        events:
          type: array
          items:
            $ref: "#/components/schemas/PublicMarketEvent"
          description: Timeline em ordem cronológica.
      required:
        - slug
        - kind
        - title
        - status
        - started_at
        - resolved_at
        - last_event_day
        - entities
        - events
    FunctionInput_events_thread_get:
      type: object
      properties:
        slug:
          type: string
          pattern: ^[a-z0-9-]+$
          description: "Slug da thread, ex.: mp-1376, copom-279, tarifas-eua-2026. Vem de
            `thread_slug` em qualquer leitura de evento."
      required:
        - slug
    FunctionOutput_events_thread_get:
      $ref: "#/components/schemas/PublicEventThread"
    FundHolding:
      type: object
      properties:
        cnpj:
          type: string
        comptc_date:
          type: string
        cd_ativo:
          type:
            - string
            - "null"
        ticker:
          type:
            - string
            - "null"
          description: cd_ativo resolvido ao nosso universo (ação/BDR); null caso contrário
        tp_aplic:
          type:
            - string
            - "null"
        ds_ativo:
          type:
            - string
            - "null"
        cd_isin:
          type:
            - string
            - "null"
        qty:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        market_value:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: posição a mercado (R$)
        fund_name:
          type:
            - string
            - "null"
        fund_manager:
          type:
            - string
            - "null"
        fund_classificacao:
          type:
            - string
            - "null"
      required:
        - cnpj
        - comptc_date
        - cd_ativo
        - ticker
        - tp_aplic
        - ds_ativo
        - cd_isin
        - qty
        - market_value
        - fund_name
        - fund_manager
        - fund_classificacao
    FunctionInput_funds_holdings_latest:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Competência (AAAA-MM-DD); default = mais recente.
    FunctionOutput_funds_holdings_latest:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FundHolding"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    FundLookThrough:
      type: object
      properties:
        investor_cnpj:
          type: string
        comptc_date:
          type: string
        ticker:
          type: string
        exposure_direct_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: "posição ECONÔMICA do próprio fundo no ativo (R$): direta + cedida
            em empréstimo − obrigação por ação recebida. NÃO é o mesmo número de
            `listFundHoldings`, que serve a posse DIVULGADA (bucket 'Ações'
            as-filed): um fundo que cedeu papel em empréstimo diverge ~2% aqui e
            ~10% no agregado do mercado — dois conceitos, os dois corretos."
        exposure_indirect_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: parcela que chega via cotas de outros fundos (R$)
        exposure_total_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        shares_direct:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
          description: quantidade ECONÔMICA (direta + cedida − recebida em obrigação).
            Difere da quantidade as-filed de `listFundHoldings` sempre que há
            empréstimo de papel.
        shares_indirect:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        indirect_via_n_funds:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
          description: quantos fundos investidos carregam o ativo
        indirect_coverage_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: none
          description: PERCENTUAL (0–100) do valor em cotas cujo BLC_4 foi possível abrir;
            null = não sabemos abrir nada. Exposição baixa com cobertura baixa
            NÃO quer dizer exposição ausente.
        cotas_value_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: total em cotas do investidor na competência
        look_through_depth:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
          description: saltos percorridos; hoje sempre 1
        lineage:
          type:
            - string
            - "null"
      required:
        - investor_cnpj
        - comptc_date
        - ticker
        - exposure_direct_brl
        - exposure_indirect_brl
        - exposure_total_brl
        - shares_direct
        - shares_indirect
        - indirect_via_n_funds
        - indirect_coverage_pct
        - cotas_value_brl
        - look_through_depth
        - lineage
    FunctionInput_funds_look_through_compose:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Competência (AAAA-MM-DD); default = mais recente.
        ticker:
          type: string
          description: "Filtra a exposição a um único papel (ex.: 'PETR4')."
    FunctionOutput_funds_look_through_compose:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FundLookThrough"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    FundProfile:
      type: object
      properties:
        cnpj:
          type: string
        codigo_cvm:
          type:
            - number
            - "null"
        name:
          type:
            - string
            - "null"
        tipo_classe:
          type:
            - string
            - "null"
        situacao:
          type:
            - string
            - "null"
        classificacao:
          type:
            - string
            - "null"
        classificacao_anbima:
          type:
            - string
            - "null"
        entidade_investimento:
          type:
            - boolean
            - "null"
          description: Entidade de investimento na acepção contábil (CPC 18/IFRS 10), o
            que muda como as participadas são avaliadas. **Era `"S"`/`"N"` até
            20/08/2026** — a letra da CVM ia crua até aqui. Nulo é ausência de
            declaração na fonte, nunca `false`.
        net_worth:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: "patrimônio líquido (R$). É o PL DA CLASSE. Somar `net_worth` de
            várias classes conta o mesmo dinheiro mais de uma vez: um FIC entra
            com o PL dele e o fundo investido também — no universo CVM 175 isso
            infla o agregado da indústria em cerca de 37%. Para um total,
            desconte a posição em cotas de fundos (`listFundLookThrough`)."
        net_worth_date:
          type:
            - string
            - "null"
          description: competência do `net_worth` (Data_Patrimonio_Liquido da CVM). O
            cadastro anda em geral UMA competência atrás do informe diário —
            para a série use `getObjectHistory(net_worth)`, que publica o PL por
            dia. Nunca leia `net_worth` sem esta data.
        cnpj_fundo:
          type:
            - string
            - "null"
        tipo_fundo:
          type:
            - string
            - "null"
        administrator:
          type:
            - string
            - "null"
        manager:
          type:
            - string
            - "null"
          description: gestor
        manager_cnpj:
          type:
            - string
            - "null"
          description: CNPJ do gestor (14 dígitos). É a chave estável da casa — use-a em
            vez de casar `manager` por razão social. Null quando o gestor é
            pessoa física ou quando a CVM não declara.
        admin_fee_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
          description: taxa de administração (herdada do cadastro legado)
        performance_fee_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: none
        data_registro:
          type:
            - string
            - "null"
      required:
        - cnpj
        - codigo_cvm
        - name
        - tipo_classe
        - situacao
        - classificacao
        - classificacao_anbima
        - entidade_investimento
        - net_worth
        - net_worth_date
        - cnpj_fundo
        - tipo_fundo
        - administrator
        - manager
        - manager_cnpj
        - admin_fee_pct
        - performance_fee_pct
        - data_registro
    FunctionInput_funds_profile_get:
      type: object
    FunctionOutput_funds_profile_get:
      $ref: "#/components/schemas/FundProfile"
    MacroGear:
      type: object
      properties:
        gear:
          type: string
        indicators:
          type: array
          items:
            $ref: "#/components/schemas/RegimeSignal"
      required:
        - gear
        - indicators
    RegimeSignal:
      type: object
      properties:
        name:
          type: string
        value:
          type:
            - number
            - "null"
          x-unit: native
        direction:
          type:
            - string
            - "null"
          enum:
            - up
            - down
            - flat
            - null
        lineage:
          $ref: "#/components/schemas/Lineage"
        unit:
          type:
            - string
            - "null"
          description: Rótulo de unidade como o mart escreveu, para exibição — são 33
            grafias distintas em 72 indicadores. Para decidir comparabilidade
            use `dimension`/`scale`/`period`.
        label:
          type:
            - string
            - "null"
        date:
          type:
            - string
            - "null"
        dimension:
          type:
            - string
            - "null"
          enum:
            - rate
            - index
            - currency
            - share
            - ratio
            - score
            - ordinal
            - null
          description: O que o número É, no MESMO vocabulário da régua da série
            (`axes.dimension` em `getObjectFacts`/`getObjectHistory`) — é isso
            que torna esta rota e o fato bruto comparáveis. `score` é o par de
            regime, em [-1,1]; `ordinal` é o quadrante 1–4, que não se soma nem
            se tira média.
        scale:
          type:
            - string
            - "null"
          enum:
            - unit
            - thousand
            - million
            - billion
            - percent
            - bps
            - null
          description: "Quase tudo aqui é `unit` (decimal: 0,5576 e não 55,76) porque esta
            é a camada derivada. A série CRUA equivalente sai em
            `getObjectHistory` com `scale: percent` — o mesmo número em escalas
            100× diferentes, e antes deste campo nada dizia isso."
        period:
          type:
            - string
            - "null"
          enum:
            - none
            - monthly
            - quarterly
            - annual
            - ttm_12m
            - null
          description: Que janela o número cobre. `ipca_mensal` e `ipca_12m` são o mesmo
            indicador em janelas diferentes.
        expected_range:
          type:
            - object
            - "null"
          properties:
            min:
              type: number
              x-unit: native
            max:
              type: number
              x-unit: native
          required:
            - min
            - max
          description: Faixa plausível declarada, na escala deste campo. Guarda-corpo
            contra erro dimensional, não previsão.
        prior_note:
          type:
            - string
            - "null"
        entity_id:
          type:
            - string
            - "null"
          description: 'O ENDEREÇO deste indicador no grafo. Esta rota é um SNAPSHOT por
            seção: ela diz quanto é hoje e não tem eixo de tempo por indicador.
            Com o id, `getObjectHistory` devolve a série inteira e `rankObjects`
            ordena a coorte — sem precisar resolver o nome de novo, que é onde
            se perde o objeto certo (existem `ipca_mensal` e `ipca_12m`, e
            buscar "IPCA" não diz qual dos dois).'
      required:
        - name
        - value
        - direction
        - lineage
    Lineage:
      type: object
      properties:
        source:
          type: string
        reference:
          type: string
        url:
          type:
            - string
            - "null"
      required:
        - source
        - reference
    FunctionInput_macro_gears_get:
      type: object
      properties:
        gear:
          type: string
          enum:
            - monetary
            - inflation
            - growth
            - employment
            - credit
            - fiscal
            - external
            - sovereign_risk
            - global
            - currency
            - cross_asset
          description: Uma engrenagem só (monetary, inflation, growth, employment, credit,
            fiscal, external, sovereign_risk, global, currency, cross_asset).
            Omitir = todas.
        at:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Data de referência (AAAA-MM-DD); default = a leitura mais recente.
    FunctionOutput_macro_gears_get:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/MacroGear"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            as_of:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - as_of
      required:
        - data
        - meta
    RegimeSnapshot:
      type: object
      properties:
        as_of:
          type:
            - string
            - "null"
        quadrant:
          type:
            - string
            - "null"
          enum:
            - growth_up_inflation_up
            - growth_up_inflation_down
            - growth_down_inflation_up
            - growth_down_inflation_down
            - null
        growth:
          type: object
          properties:
            direction:
              type:
                - string
                - "null"
              enum:
                - up
                - down
                - flat
                - null
            signals:
              type: array
              items:
                $ref: "#/components/schemas/RegimeSignal"
          required:
            - direction
            - signals
        inflation:
          type: object
          properties:
            direction:
              type:
                - string
                - "null"
              enum:
                - up
                - down
                - flat
                - null
            signals:
              type: array
              items:
                $ref: "#/components/schemas/RegimeSignal"
          required:
            - direction
            - signals
        cross_asset:
          type: object
          properties:
            dy_vs_selic_spread:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: rate
              x-scale: percent
              x-period: annual
            equity_risk_premium:
              type:
                - number
                - "null"
              x-unit: pct
              x-dimension: rate
              x-scale: percent
              x-period: annual
            real_selic:
              type:
                - number
                - "null"
              x-unit: ratio
              x-dimension: rate
              x-scale: unit
              x-period: annual
          required:
            - dy_vs_selic_spread
            - equity_risk_premium
            - real_selic
      required:
        - as_of
        - quadrant
        - growth
        - inflation
        - cross_asset
    FunctionInput_macro_regime_get:
      type: object
      properties:
        at:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Data de referência (AAAA-MM-DD); default = o regime vigente.
    FunctionOutput_macro_regime_get:
      $ref: "#/components/schemas/RegimeSnapshot"
    CorporateEvent:
      type: object
      properties:
        ticker:
          type: string
          description: "O código sob o qual o evento foi gravado — pode ser um código
            ANTIGO do mesmo papel: a rota resolve o papel pelo grafo de
            identidade e devolve o histórico inteiro, renomeações incluídas"
        entity_id:
          type:
            - string
            - "null"
          description: O objeto do PAPEL no grafo de identidade. Nulo quando o código não
            resolveu no spine
        type:
          type:
            - string
            - "null"
        approved_date:
          type:
            - string
            - "null"
        ex_date:
          type:
            - string
            - "null"
        factor:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
        detail:
          type:
            - string
            - "null"
      required:
        - ticker
        - entity_id
        - type
        - approved_date
        - ex_date
        - factor
        - detail
    FunctionInput_market_corporate_events_list:
      type: object
      properties:
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
    FunctionOutput_market_corporate_events_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CorporateEvent"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            ticker:
              type: string
          required:
            - next_cursor
            - count
            - ticker
      required:
        - data
        - meta
    CryptoLiveQuote:
      type: object
      properties:
        symbol:
          type: string
        price_brl:
          type: number
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        price_usd:
          type:
            - number
            - "null"
          x-unit: usd
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: USD
        change_pct_24h:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: daily
          description: Variação % em 24h rolantes
        volume_usd_24h:
          type:
            - number
            - "null"
          x-unit: usd
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: USD
        ts:
          type: string
          description: Timestamp do snapshot (UTC)
      required:
        - symbol
        - price_brl
        - price_usd
        - change_pct_24h
        - volume_usd_24h
        - ts
    FunctionInput_market_crypto_live_list:
      type: object
    FunctionOutput_market_crypto_live_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/CryptoLiveQuote"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            as_of:
              type:
                - string
                - "null"
              description: Timestamp mais recente do lote
          required:
            - next_cursor
            - count
            - as_of
      required:
        - data
        - meta
    FunctionInput_market_factor_exposure_get:
      type: object
      properties:
        family:
          type: string
          enum:
            - nefin
            - famafrench_emg
            - famafrench_us
            - famafrench_dev
          default: nefin
          description: "Família de fatores: `nefin` (Brasil, em reais sobre o CDI,
            diário), `famafrench_emg` (mercados emergentes), `famafrench_us`
            (EUA), `famafrench_dev` (desenvolvidos); os Fama-French são mensais
            em dólar."
        frequency:
          type: string
          enum:
            - daily
            - monthly
          description: Frequência dos retornos. Omitir = `monthly` (o NEFIN é composto por
            mês). `daily` só existe no NEFIN e é sensível a um dia errado na
            fonte; a resposta avisa quando há um.
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início da janela (AAAA-MM-DD, inclusive). Omitir = 10 anos antes de
            `to` no mensal, 3 anos no diário.
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim da janela (AAAA-MM-DD, inclusive). Omitir = última observação
            disponível.
    FunctionOutput_market_factor_exposure_get:
      type: object
      properties:
        family:
          type: string
          enum:
            - nefin
            - famafrench_emg
            - famafrench_us
            - famafrench_dev
        frequency:
          type: string
          enum:
            - daily
            - monthly
          description: "Frequência dos retornos regredidos: mensal (default; NEFIN
            composto por mês) ou diária (só NEFIN, opt-in)."
        window:
          type: object
          properties:
            from:
              type: string
              description: Primeira observação usada (AAAA-MM-DD, ou AAAA-MM no mensal).
            to:
              type: string
              description: Última observação usada.
          required:
            - from
            - to
        n_obs:
          type: number
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
          description: Observações alinhadas entre ativo e fatores.
        alpha_annual_pct:
          type: number
          x-unit: pct
          x-dimension: rate
          x-scale: percent
          x-period: annual
          description: "Intercepto anualizado (×252 no diário, ×12 no mensal), em % a.a.:
            o retorno que os fatores NÃO explicam. Perto de zero é exposição
            pura; consistente e positivo é seleção."
        alpha_t_stat:
          type: number
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
          description: alfa / erro-padrão do alfa; |t| < 2 não distingue o alfa de zero.
        r2:
          type: number
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
          description: Fração do retorno explicada pelos fatores (0,9 num fundo de ações =
            praticamente o mercado).
        r2_adj:
          type: number
          x-unit: ratio
          x-dimension: share
          x-scale: unit
          x-period: none
          description: R² ajustado pelo número de fatores.
        risk_free_series_code:
          type:
            - string
            - "null"
          description: A série subtraída do retorno do ativo (`nefin:RF:BR`); nula quando
            o retorno já veio em excesso.
        factors:
          type: array
          items:
            type: object
            properties:
              factor:
                type: string
                description: "Código do fator: MKT_RF, SMB, HML, RMW, CMA, MOM, IML."
              label:
                type: string
                description: O que o fator mede, em uma frase.
              series_code:
                type: string
                description: A série publicada usada na estimativa (`nefin:HML:BR`,
                  `famafrench:HML:EMG`) — a linhagem do beta.
              beta:
                type: number
                x-unit: x
                x-dimension: ratio
                x-scale: unit
                x-period: none
                description: "Sensibilidade do retorno em excesso do ativo ao fator: 1,2 = sobe
                  1,2% quando o fator sobe 1%."
              std_error:
                type: number
                x-unit: x
                x-dimension: ratio
                x-scale: unit
                x-period: none
                description: Erro-padrão do beta, na mesma unidade.
              t_stat:
                type: number
                x-unit: x
                x-dimension: ratio
                x-scale: unit
                x-period: none
                description: beta / erro-padrão; |t| < 2 é exposição que o ruído explica.
            required:
              - factor
              - label
              - series_code
              - beta
              - std_error
              - t_stat
        warnings:
          type: array
          items:
            type: string
          description: "Janela curta, fator sem série no período, cota sem ajuste: o que
            reduz a confiança no número."
        caveat:
          type: string
          description: Exposição a fator descreve o passado e não é recomendação.
      required:
        - family
        - frequency
        - window
        - n_obs
        - alpha_annual_pct
        - alpha_t_stat
        - r2
        - r2_adj
        - risk_free_series_code
        - factors
        - warnings
        - caveat
    IndicatorValue:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        value:
          type:
            - number
            - "null"
          x-unit: native
          description: null quando não calculável — ver reason
        unit:
          type: string
          enum:
            - ratio
            - percent
            - brl
            - brl_per_share
            - count
            - days
        reason:
          type:
            - string
            - "null"
        reference_date:
          type:
            - string
            - "null"
        ttm:
          type: boolean
        lineage:
          $ref: "#/components/schemas/Lineage"
        methodology_url:
          type: string
      required:
        - name
        - label
        - value
        - unit
        - reason
        - reference_date
        - ttm
        - lineage
        - methodology_url
    FunctionInput_market_indicators_latest:
      type: object
      properties:
        names:
          type: string
          description: "Indicadores a retornar, separados por vírgula (omitir = todos),
            como 'pl,roe,dy'. Nomes válidos (abreviações sem underscore): pl,
            pvp, psr, ev_ebitda, ev_ebit, lpa, vpa, roe, roa, roic,
            margem_bruta, margem_ebit, margem_liquida, div_liq_ebitda,
            div_liq_pl, dy, payout, market_cap, price; e dinâmicos: free_float,
            beta, volatilidade, retorno_12m, volume_medio_2m."
        at:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Corte point-in-time pela publicação da demonstração (`filed_at`);
            `price` usa o último pregão até a data. Sem `filed_at`, o corte usa
            o período contábil. Indicadores de preço sem histórico e
            `free_float` atual ficam nulos sob cortes incompatíveis, com
            `reason`.
    FunctionOutput_market_indicators_latest:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/IndicatorValue"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            ticker:
              type: string
            reference_date:
              type: string
            statement_date:
              type:
                - string
                - "null"
              description: Fim do período contábil da demonstração usada (DT_REFER)
            filed_at:
              type:
                - string
                - "null"
              description: "1ª publicação da demonstração na CVM (DT_RECEB) — é o corte que
                `at` respeita. null: data de entrega desconhecida; o corte de
                `at` cai no período contábil."
            is_financial:
              type: boolean
          required:
            - next_cursor
            - count
            - ticker
            - reference_date
            - statement_date
            - filed_at
            - is_financial
      required:
        - data
        - meta
    InsiderMove:
      type: object
      properties:
        reference_month:
          type: string
          description: AAAA-MM
        net_shares:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: monthly
        net_value_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: monthly
          x-currency: BRL
        buy_value_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: monthly
          x-currency: BRL
        sell_value_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: monthly
          x-currency: BRL
        corporate_event_shares:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: monthly
          description: "NÃO SOMAR a net_shares. Saldo de eventos NÃO-mercado do mesmo mês
            — bonificação, doação, herança, grupamento/desdobramento, empréstimo
            de ações e posse/desligamento de cargo — que mudam a posição do
            insider sem nenhuma compra ou venda. Vem separado porque a magnitude
            é maior que a do fluxo: 719.464 Mi de ações em módulo contra 184.689
            Mi do net de mercado (3,9×), presente em 39,1% dos meses do acervo."
        lineage:
          $ref: "#/components/schemas/Lineage"
      required:
        - reference_month
        - net_shares
        - net_value_brl
        - buy_value_brl
        - sell_value_brl
        - corporate_event_shares
        - lineage
    FunctionInput_market_insider_history:
      type: object
      properties:
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
    FunctionOutput_market_insider_history:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/InsiderMove"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            ticker:
              type: string
          required:
            - next_cursor
            - count
            - ticker
      required:
        - data
        - meta
    InvestorFlow:
      type: object
      properties:
        as_of_date:
          type: string
        investor_type:
          type: string
          description: Estrangeiro | Institucionais | ...
        buy_brl_thousand:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: thousand
          x-period: daily
          x-currency: BRL
        sell_brl_thousand:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: thousand
          x-period: daily
          x-currency: BRL
        buy_share_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: daily
        sell_share_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: daily
        net_mtd_brl_thousand:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: thousand
          x-period: monthly
          x-currency: BRL
        net_daily_brl_thousand:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: thousand
          x-period: daily
          x-currency: BRL
        lineage:
          type:
            - string
            - "null"
      required:
        - as_of_date
        - investor_type
        - buy_brl_thousand
        - sell_brl_thousand
        - buy_share_pct
        - sell_share_pct
        - net_mtd_brl_thousand
        - net_daily_brl_thousand
        - lineage
    FunctionInput_market_investor_flow_history:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
        investor_type:
          type: string
          description: Investidor Estrangeiro | Institucionais | ...
    FunctionOutput_market_investor_flow_history:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/InvestorFlow"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    InvestorFlowMonthly:
      type: object
      properties:
        month_ref:
          type: string
        investor_type:
          type: string
        segment:
          type: string
        brl_reais:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: monthly
          x-currency: BRL
        share_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: monthly
        lineage:
          type:
            - string
            - "null"
      required:
        - month_ref
        - investor_type
        - segment
        - brl_reais
        - share_pct
        - lineage
    FunctionInput_market_investor_flow_monthly:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        month:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: 1º dia do mês de referência, ex. 2026-05-01
        investor_type:
          type: string
          description: Investidor Estrangeiro | Institucionais | Pessoa Física |
            Instituições Financeiras | Outros.
        segment:
          type: string
          description: vista | termo | opcoes | exercicio_opcoes | blocos | total_geral
    FunctionOutput_market_investor_flow_monthly:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/InvestorFlowMonthly"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    OptionExpiry:
      type: object
      properties:
        expiry:
          type: string
        count:
          type: number
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
          description: Séries abertas neste vencimento
      required:
        - expiry
        - count
    FunctionInput_market_option_expiries_list:
      type: object
    FunctionOutput_market_option_expiries_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/OptionExpiry"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            underlying_ticker:
              type: string
          required:
            - next_cursor
            - count
            - underlying_ticker
      required:
        - data
        - meta
    OptionQuote:
      type: object
      properties:
        date:
          type: string
        option_ticker:
          type: string
        option_type:
          type:
            - string
            - "null"
        strike:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        expiry:
          type:
            - string
            - "null"
        open:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        high:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        low:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        last:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        volume_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        trades:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: daily
        underlying_spot:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        moneyness:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
        intrinsic:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        time_value:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        iv:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: rate
          x-scale: unit
          x-period: annual
        delta:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
        gamma:
          type:
            - number
            - "null"
          x-unit: native
        vega:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        theta:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
      required:
        - date
        - option_ticker
        - option_type
        - strike
        - expiry
        - open
        - high
        - low
        - last
        - volume_brl
        - trades
        - underlying_spot
        - moneyness
        - intrinsic
        - time_value
        - iv
        - delta
        - gamma
        - vega
        - theta
    FunctionInput_market_option_quotes_history:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        from:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Início do período (AAAA-MM-DD, inclusive).
        to:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Fim do período (AAAA-MM-DD, inclusive).
        option:
          type: string
          pattern: ^[A-Z0-9]{4,14}$
          description: "Código da SÉRIE de opção (ex.: PETRF338), não o subjacente.
            Descubra pela cadeia do subjacente."
      required:
        - option
    FunctionOutput_market_option_quotes_history:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/OptionQuote"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            order:
              type: string
              const: desc
              description: Do mais RECENTE para o mais antigo. Declarado porque as séries
                deste contrato não têm um sentido único — `getObjectHistory`
                devolve crescente — e quem calcula variação entre linhas
                consecutivas inverte o sinal sem erro nenhum.
          required:
            - next_cursor
            - count
            - order
      required:
        - data
        - meta
    OptionContract:
      type: object
      properties:
        option_ticker:
          type: string
        underlying_ticker:
          type:
            - string
            - "null"
        underlying_root:
          type:
            - string
            - "null"
        option_type:
          type:
            - string
            - "null"
          description: call | put
        strike:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        expiry:
          type:
            - string
            - "null"
        date:
          type:
            - string
            - "null"
        last:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        volume_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        trades:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: daily
        underlying_spot:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        days_to_expiry:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: duration
          x-scale: days
          x-period: none
        moneyness:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
          description: spot / strike
        intrinsic:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        time_value:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
        iv:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: rate
          x-scale: unit
          x-period: annual
          description: vol implícita anualizada (Black-Scholes europeu)
        delta:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
        gamma:
          type:
            - number
            - "null"
          x-unit: native
        vega:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: por 1% de vol
        theta:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
          description: por dia corrido
        iv_amer:
          type:
            - number
            - "null"
          x-unit: ratio
          x-dimension: rate
          x-scale: unit
          x-period: annual
          description: IV americana (binomial CRR) — corrige exercício antecipado;
            relevante em puts
        delta_amer:
          type:
            - number
            - "null"
          x-unit: x
          x-dimension: ratio
          x-scale: unit
          x-period: none
        gamma_amer:
          type:
            - number
            - "null"
          x-unit: native
        vega_amer:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: por 1% de vol
        theta_amer:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: daily
          x-currency: BRL
          description: por dia corrido
        early_ex_premium:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
          description: "prêmio de exercício antecipado: preço americano − europeu (mesmo σ)"
      required:
        - option_ticker
        - underlying_ticker
        - underlying_root
        - option_type
        - strike
        - expiry
        - date
        - last
        - volume_brl
        - trades
        - underlying_spot
        - days_to_expiry
        - moneyness
        - intrinsic
        - time_value
        - iv
        - delta
        - gamma
        - vega
        - theta
        - iv_amer
        - delta_amer
        - gamma_amer
        - vega_amer
        - theta_amer
        - early_ex_premium
    FunctionInput_market_options_chain_get:
      type: object
      properties:
        expiry:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Filtra a cadeia por vencimento (AAAA-MM-DD). Ver
            `market.option_expiries.list`.
        type:
          type: string
          enum:
            - call
            - put
          description: "Filtra por tipo: call ou put."
    FunctionOutput_market_options_chain_get:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/OptionContract"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
            underlying_ticker:
              type: string
            date:
              type:
                - string
                - "null"
          required:
            - next_cursor
            - count
            - underlying_ticker
            - date
      required:
        - data
        - meta
    FundTickerMove:
      type: object
      properties:
        ticker:
          type: string
        comptc_date:
          type: string
          description: competência do CDA (AAAA-MM-DD)
        cnpj:
          type: string
          description: CNPJ da classe que se moveu
        prev_comptc_date:
          type:
            - string
            - "null"
          description: competência anterior COMPARÁVEL, não o mês calendário
        fund_name:
          type:
            - string
            - "null"
        fund_manager:
          type:
            - string
            - "null"
        qty_prev:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        qty_cur:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
        qty_delta:
          type:
            - number
            - "null"
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: none
          description: Variação em QUANTIDADE, posição econômica (direta + cedida em
            empréstimo − obrigação por recebida). Negativo = posição reduzida ou
            vendida.
        value_prev_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        value_cur_brl:
          type:
            - number
            - "null"
          x-unit: brl
          x-dimension: currency
          x-scale: unit
          x-period: none
          x-currency: BRL
        move_kind:
          type:
            - string
            - "null"
          enum:
            - entrou
            - aumentou
            - reduziu
            - saiu
            - abriu_venda
            - zerou_venda
            - manteve
            - indeterminado
            - null
          description: "Classificado pelo SINAL da posição econômica, não pelo zero: a
            posição pode ser negativa (obrigação por ações recebidas > posse),
            então abrir venda é `abriu_venda` e não `entrou`. `indeterminado` =
            um dos meses declarou R$ sem quantidade, e aí o zero não significa
            ausência de posição."
        delta_reason:
          type:
            - string
            - "null"
          enum:
            - posicao_liquida_negativa
            - somente_emprestimo
            - quantidade_nao_divulgada
            - null
          description: Anotação de leitura da linha; null = posição comprada, declarada e
            com quantidade.
        lineage:
          type:
            - string
            - "null"
      required:
        - ticker
        - comptc_date
        - cnpj
        - prev_comptc_date
        - fund_name
        - fund_manager
        - qty_prev
        - qty_cur
        - qty_delta
        - value_prev_brl
        - value_cur_brl
        - move_kind
        - delta_reason
        - lineage
    FunctionInput_market_ownership_movers_rank:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: Competência do CDA (AAAA-MM-DD); default = mais recente com
            movimentação.
        direction:
          type: string
          enum:
            - in
            - out
            - all
          default: all
          description: in = só quem aumentou/entrou; out = só quem reduziu/saiu; all =
            tudo, das maiores altas às maiores baixas.
    FunctionOutput_market_ownership_movers_rank:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/FundTickerMove"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    FunctionInput_market_trading_status_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        total:
          type: string
          description: true = inclui `meta.total` (contagem do universo filtrado). Custa
            uma consulta a mais.
        status:
          type: string
          enum:
            - sancionada
            - concordataria
            - recuperacao_extrajudicial
            - recuperacao_judicial
          description: Filtra por uma situação específica. Omitir = todas as não-regulares.
    FunctionOutput_market_trading_status_list:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              ticker:
                type: string
              entity_id:
                type:
                  - string
                  - "null"
                description: O objeto do PAPEL no grafo de identidade. Nulo quando o ticker
                  ainda não resolveu no spine
              trading_status:
                type: string
                enum:
                  - regular
                  - sancionada
                  - concordataria
                  - recuperacao_extrajudicial
                  - recuperacao_judicial
                description: Situação da emissora segundo a B3. `concordataria` só aparece no
                  histórico (o instituto foi extinto pela Lei 11.101/2005).
              trading_status_since:
                type:
                  - string
                  - "null"
                description: Desde quando a situação vale (AAAA-MM-DD)
              last_session:
                type:
                  - string
                  - "null"
                description: Último pregão observado para o papel
            required:
              - ticker
              - entity_id
              - trading_status
              - trading_status_since
              - last_session
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    MineralObservation:
      type: object
      properties:
        mineral:
          type: string
        label:
          type:
            - string
            - "null"
        group:
          type:
            - string
            - "null"
        country:
          type: string
        country_iso3:
          type:
            - string
            - "null"
        country_label:
          type: string
        is_world_total:
          type: boolean
          description: Linha do total mundial, não de um país.
        statistic:
          type: string
        statistic_detail:
          type:
            - string
            - "null"
        statistic_detail_base:
          type:
            - string
            - "null"
        unit:
          type:
            - string
            - "null"
        year:
          type: number
        value:
          type:
            - number
            - "null"
          x-unit: native
        value_raw:
          type:
            - string
            - "null"
        value_flag:
          type:
            - string
            - "null"
        value_flag_reason:
          type:
            - string
            - "null"
        world_total:
          type:
            - number
            - "null"
          x-unit: native
        world_total_flag:
          type:
            - string
            - "null"
        countries_withheld:
          type: number
          x-unit: count
          x-dimension: count
          x-scale: unit
          x-period: annual
        is_estimate:
          type: boolean
        is_critical:
          type: boolean
        share_of_world_pct:
          type:
            - number
            - "null"
          x-unit: pct
          x-dimension: share
          x-scale: percent
          x-period: annual
          description: Nulo quando não calculável, com motivo.
        share_basis:
          type: string
          description: "Por que o share existe ou não existe. Sempre preenchido, mesmo
            quando o share é nulo. `ok`: share calculado contra o total mundial
            da MESMA base e unidade. `incomparable_basis`: existe total mundial
            para a commodity, mas os países reportam bases diferentes e não
            somáveis. É o caso das reservas de boro (Turquia em boratos
            refinados, Chile em ulexita, China em óxido bórico equivalente); o
            próprio USGS marca o total como `XX`. Dividir um país por esse total
            produz o tipo de número redondo e falso que circula por aí.
            `world_total_not_calculable`: o USGS publica o total como `XX`, ou
            seja, declara-o incalculável. `no_world_total`: não há total mundial
            publicado para o recorte (comum nas séries só domésticas dos EUA,
            que a publicação traz com mais anos que a tabela mundial).
            `is_world_total`: a própria linha é o total mundial, então não há
            share de si mesma. `value_<flag>` (`value_na`, `value_w`, `value_s`,
            `value_large`, ...): o país não tem valor numérico; a sentinela
            publicada está em `value_raw` e o motivo em `value_flag_reason`."
        notes:
          type:
            - string
            - "null"
        revision:
          type:
            - string
            - "null"
        edition:
          type: string
        edition_year:
          type: number
      required:
        - mineral
        - label
        - group
        - country
        - country_iso3
        - country_label
        - is_world_total
        - statistic
        - statistic_detail
        - statistic_detail_base
        - unit
        - year
        - value
        - value_raw
        - value_flag
        - value_flag_reason
        - world_total
        - world_total_flag
        - countries_withheld
        - is_estimate
        - is_critical
        - share_of_world_pct
        - share_basis
        - notes
        - revision
        - edition
        - edition_year
    FunctionInput_minerals_observations_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        mineral:
          type: string
          description: "Chave do mineral, ex.: lithium."
        country:
          type: string
          pattern: ^[A-Za-z]{3}$
          description: "País em ISO 3166-1 alfa-3, ex.: BRA, CHN, AUS, CHL."
        statistic:
          type: string
          enum:
            - production
            - reserves
          description: production ou reserves; omitir = ambos.
        year:
          type: integer
          minimum: 1900
          maximum: 2100
          description: Ano exato.
        from:
          type: integer
          minimum: 1900
          maximum: 2100
          description: Ano inicial (inclusive).
        to:
          type: integer
          minimum: 1900
          maximum: 2100
          description: Ano final (inclusive).
        include_world_total:
          type: boolean
          description: true inclui as linhas de total mundial, que por default ficam de
            fora por não serem um país.
    FunctionOutput_minerals_observations_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/MineralObservation"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
    UsFiling:
      type: object
      properties:
        accession:
          type: string
        form:
          type: string
          description: 10-K, 10-Q, 8-K, 20-F, 6-K, DEF 14A
        filed_at:
          type: string
        report_date:
          type:
            - string
            - "null"
        description:
          type:
            - string
            - "null"
        url:
          type: string
          description: Documento principal no site da SEC (EDGAR)
      required:
        - accession
        - form
        - filed_at
        - report_date
        - description
        - url
    FunctionInput_us_filings_list:
      type: object
      properties:
        cursor:
          type: string
          description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
            primeira página.
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Itens por página (1–1000, default 100).
        form:
          type: string
          description: Filtra por formulário (10-K, 10-Q, 8-K…).
    FunctionOutput_us_filings_list:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/UsFiling"
        meta:
          type: object
          properties:
            next_cursor:
              type:
                - string
                - "null"
            count:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens nesta página
            total:
              type: integer
              x-unit: count
              x-dimension: count
              x-scale: unit
              x-period: none
              description: Itens no universo filtrado, ignorando a paginação. Só com
                `?total=true`.
            subject:
              type: object
              additionalProperties:
                type: string
              description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                toda rota endereçada por um objeto. Use-o para conferir a
                atribuição quando fizer chamadas concorrentes — sem ele,
                resposta trocada e resposta certa têm exatamente a mesma cara.
          required:
            - next_cursor
            - count
      required:
        - data
        - meta
tags:
  - name: Functions
    description: "Discovery e execução genérica de Functions: cálculos, composições
      e coleções que não cabem nas primitivas de Objects (ficha do fundo,
      distribuições do FIDC, curvas, regime macro, busca documental).
      `listFunctions` acha pela pergunta, `getFunction` traz o spec com schemas
      e `executeFunction` executa no sujeito resolvido pelo grafo. Não há rota
      especializada por trás: a Function é a superfície."
  - name: Objects
    description: "Grafo de identidade e contexto: resolve nomes e códigos para um
      objeto canônico, lê apelidos, fatos, propriedades e relações. Procure
      conceitos também pelo nome, não só por ticker. Indicadores medidos por
      fontes (`kind=indicator`) apontam para suas séries; agregados calculados
      (`kind=data_series`) expõem `indicator_value` e histórico."
  - name: System
    description: Saúde da API e da ingestão (frescor por fonte) e a busca unificada
      por nome ou código em todas as classes.
  - name: Modules
    description: "Discovery de módulos e capacidades: o core e as extensões (o que
      publicam, como se instalam, que scopes pedem) e a busca sobre primitivas,
      Functions e Actions. Ache a capacidade aqui e execute pela rota que o
      descritor aponta; não existe executor de módulo."
paths:
  /v1/health:
    get:
      responses:
        "200":
          description: Status
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Health"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getHealth
      tags:
        - System
      parameters: []
      summary: Status da API e frescor dos dados
      security: []
      description: 'Estado da API e a data-base mais recente de cada família de dados
        (cotações, fundamentos, fundos, macro…). Chame antes de responder
        "hoje", "agora" ou "último": `data_freshness` diz até quando cada dado
        vai. Resposta direta, sem `data`.'
      x-domain: system
  /v1/objects:
    get:
      responses:
        "200":
          description: A coorte, por identidade
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/EntityListRow"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      cohort_size:
                        type: integer
                        description: Tamanho da coorte inteira, presente com `total=true`.
                      applied_property_where:
                        type: array
                        items:
                          type: object
                          properties:
                            property:
                              type: string
                            op:
                              type: string
                              enum:
                                - eq
                                - ne
                            values:
                              type: array
                              items:
                                type: string
                              description: Valores pedidos, como vieram.
                            matched:
                              type: array
                              items:
                                type: string
                              description: Valores que casaram, na grafia canônica da fonte. Caixa e acento
                                são ignorados no casamento.
                            source:
                              type: string
                              description: Cadastro de origem da propriedade.
                          required:
                            - property
                            - op
                            - values
                            - matched
                            - source
                        description: Como cada corte por palavra foi aplicado. Ausente sem corte. Em
                          `ne`, objeto que não declara a propriedade passa.
                      filterable_properties:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                              description: Nome aceito em `where`, o mesmo de `getObjectProperties`.
                            vocabulary:
                              type:
                                - array
                                - "null"
                              items:
                                type: string
                              description: Valores possíveis. Nulo indica texto livre da fonte, não ausência
                                de valores.
                          required:
                            - name
                            - vocabulary
                        description: Propriedades que aceitam corte por palavra nesta coorte, com os
                          valores possíveis. Sai da mesma declaração que
                          `getObjectProperties` serve e que `where` valida.
                    required:
                      - next_cursor
                      - count
                      - filterable_properties
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: listObjects
      tags:
        - Objects
      parameters:
        - in: query
          name: kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: O tipo dos objetos a listar.
          required: true
        - in: query
          name: subkind
          schema:
            type: string
            description: Recorte dentro do tipo.
          required: false
        - in: query
          name: rel
          schema:
            type: string
            description: Restringe a quem tem esta relação com `rel_to`, a mesma coorte de
              `rankObjects`.
          required: false
        - in: query
          name: rel_to
          schema:
            type: string
            description: O outro lado de `rel`.
          required: false
        - in: query
          name: rel_direction
          schema:
            type: string
            enum:
              - in
              - out
            default: in
            description: Lado da coorte na aresta de `rel`.
          required: false
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Vigência das relações do recorte por `rel`. Sem `at`, usa o acervo
              histórico, como `listObjectLinks`.
          required: false
        - in: query
          name: where
          schema:
            type: string
            description: Cortes por palavra (`sector=Bancos`, `situation!=Em Liquidação`),
              com a sintaxe de `rankObjects`. Corte por número responde 422; use
              `rankObjects`.
          required: false
        - in: query
          name: q
          schema:
            type: string
            minLength: 2
            maxLength: 120
            description: Busca por nome dentro da coorte, sem acento nem caixa. Para
              resolver uma identidade por chave ou apelido, use `resolveObject`.
          required: false
        - in: query
          name: props
          schema:
            type: string
            description: Propriedades a projetar em cada linha, separadas por vírgula (até
              8), pelos nomes de `meta.filterable_properties` —
              `bdr_kind,last_traded`. Saem em `properties`, como texto; nulo é
              folha sem a linha. É o catálogo numa página, sem uma chamada de
              `getObjectProperties` por objeto.
          required: false
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
          required: false
        - in: query
          name: total
          schema:
            type: string
            description: true = inclui `meta.total` (contagem do universo filtrado). Custa
              uma consulta a mais.
          required: false
      summary: Lista objetos por tipo e propriedades
      description: Enumera a coorte do cadastro sem exigir uma medida. `kind`,
        `subkind`, relações e propriedades usam o mesmo recorte de `rankObjects`
        e `aggregateObjects`. Use `rankObjects` para filtros numéricos, `q` para
        nome dentro da coorte e `resolveObject` para localizar uma identidade.
        `props` projeta propriedades do catálogo em cada linha (`properties`),
        para o catálogo sair numa página. Com `total=true`, leia o total em
        `meta.cohort_size`.
      x-domain: objects
  /v1/objects/intersect:
    get:
      responses:
        "200":
          description: Objetos nos dois conjuntos
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        subkind:
                          type:
                            - string
                            - "null"
                          description: "Fundo: `fidc`, `fii`, `fip`, `fif`, `fiagro`, `fiim`, `etf`,
                            `fapi`, `funcine`. Instrumento: `debenture`,
                            `securitizado`, `bdr`, `coe`, `tesouro`,
                            `cota_fundo_fechado` (a cota negociada no balcão; o
                            sub-tipo do FUNDO que a emitiu continua sendo
                            `fidc`, `fii` ou `fip`). Emissão de securitização:
                            `cri`, `cra`, `ots`; `securitizado` é a série e
                            `securitizacao` é a oferta. Papel: `on`, `pn`,
                            `unit`. Norma: `resolucao_cvm`, `instrucao_cvm`,
                            `deliberacao_cvm`, `oficio_circular`,
                            `resolucao_cmn`, `resolucao_bcb`, `lei`, `decreto`,
                            `medida_provisoria`. Prestador: `gestora`,
                            `administradora_fiduciaria`, `assessoria`,
                            `agencia_rating`; auditor e custodiante não têm
                            subtipo e aparecem pelas arestas `audits` e
                            `custodies`. Nulo significa não classificado pela
                            fonte, como fundos encerrados."
                        name:
                          type:
                            - string
                            - "null"
                        cnpj:
                          type:
                            - string
                            - "null"
                        tickers:
                          type:
                            - array
                            - "null"
                          items:
                            type: string
                        a_count:
                          type: integer
                          description: Contrapartes distintas na relação A, não afirmações.
                        b_count:
                          type:
                            - integer
                            - "null"
                          description: Contrapartes distintas na relação B. Nulo em `union` e
                            `difference`.
                      required:
                        - id
                        - kind
                        - subkind
                        - name
                        - cnpj
                        - tickers
                        - a_count
                        - b_count
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      as_of:
                        type:
                          - string
                          - "null"
                        description: Data efetivamente aplicada; verbo de retrato recua até a última
                          competência publicada (`last_valid_to` em
                          `listObjectRelations`). Nulo quando a consulta mistura
                          formas.
                      as_of_by_rel:
                        type: object
                        additionalProperties:
                          type:
                            - string
                            - "null"
                        description: "Data efetivamente aplicada a cada verbo quando a consulta prende
                          mais de um: em retrato pode ter recuado; em evento é o
                          teto do corte."
                      excluded_shapes:
                        type: array
                        items:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        description: Formas removidas do conjunto pela data. `static` sai quando `at` é
                          passado e a consulta não prende um verbo, porque o
                          registro só publica o vigente.
                      order:
                        type: string
                        enum:
                          - name
                          - a_count
                          - b_count
                          - total
                        description: Como a página foi ordenada.
                    required:
                      - next_cursor
                      - count
                      - order
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: intersectObjects
      tags:
        - Objects
      parameters:
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
          required: false
        - in: query
          name: total
          schema:
            type: string
            description: true = inclui `meta.total` (contagem do universo filtrado). Custa
              uma consulta a mais.
          required: false
        - in: query
          name: a
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Primeira relação.
          required: true
        - in: query
          name: b
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Segunda relação.
          required: true
        - in: query
          name: a_direction
          schema:
            type: string
            enum:
              - out
              - in
            default: out
            description: Direção da relação `a` a partir do objeto da coorte (default out).
          required: false
        - in: query
          name: b_direction
          schema:
            type: string
            enum:
              - out
              - in
            default: out
            description: Direção da relação `b` a partir do objeto da coorte (default out).
          required: false
        - in: query
          name: a_to_id
          schema:
            type: string
            description: Prende a outra ponta da relação A.
          required: false
        - in: query
          name: b_to_id
          schema:
            type: string
            description: Prende a outra ponta da relação B.
          required: false
        - in: query
          name: a_to_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo da outra ponta de A. `issued` alcança `instrument` e
              `equity_security`; recorte para separar dívida de ação.
          required: false
        - in: query
          name: b_to_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo da outra ponta de B.
          required: false
        - in: query
          name: kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo canônico do objeto. `equity_security` é o papel, separado de
              `company`; `securitization` é a emissão, separada da série
              negociável (`instrument`); e `fund_share_class` é a subclasse,
              separada da classe com CNPJ (`fund`). `indicator` representa o
              conceito medido, enquanto `data_series` representa uma publicação
              ou cálculo específico. `offering`, `market_event` e `norm` são
              objetos porque possuem identidade, atributos e relações próprias.
              `person` é a pessoa física nomeada em papel regulado
              (administrador, conselheiro, acionista relevante), chaveada por
              `person_key`, um hash irreversível; o documento nunca é publicado.
          required: false
        - in: query
          name: subkind
          schema:
            type: string
            description: "Recorta dentro do tipo: `fidc`, `fii`, `debenture`."
          required: false
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Corte temporal (AAAA-MM-DD). Sem `at`, usa o acervo histórico.
              Conforme o `shape` de `listObjectRelations`, `event` acumula até a
              data, `snapshot` escolhe o retrato aplicável e `static` pode ser
              recusada por não afirmar vigência passada.
          required: false
        - in: query
          name: order
          schema:
            type: string
            enum:
              - name
              - a_count
              - b_count
              - total
            default: name
            description: "`name` é alfabética. `a_count`, `b_count` e `total` ordenam pelo
              número de contrapartes distintas; em `union` e `difference` só
              `a_count` se aplica."
          required: false
        - in: query
          name: op
          schema:
            type: string
            enum:
              - intersect
              - union
              - difference
            default: intersect
            description: "`intersect` = nos dois; `union` = em qualquer um; `difference` =
              em A e não em B."
          required: false
      summary: Combina conjuntos definidos por duas relações
      description: Aplica `intersect`, `union` ou `difference` a conjuntos definidos
        por duas relações. `a_to_id` e `b_to_id` prendem a contraparte e
        permitem comparar dois objetos concretos. Use `total=true` e leia
        `meta.total` para obter o tamanho sem paginar.
      x-domain: objects
  /v1/objects/path:
    get:
      responses:
        "200":
          description: Objetos de partida, com quantos alcançam
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        name:
                          type:
                            - string
                            - "null"
                        reached_count:
                          type: integer
                          description: Objetos distintos alcançados a partir deste, na posição de
                            `count_at`. Dois caminhos até o mesmo objeto contam
                            um.
                        count:
                          type: integer
                          description: "Depreciado: use `reached_count`."
                      required:
                        - id
                        - kind
                        - name
                        - reached_count
                        - count
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      as_of:
                        type:
                          - string
                          - "null"
                        description: Data efetivamente aplicada; verbo de retrato recua até a última
                          competência publicada (`last_valid_to` em
                          `listObjectRelations`). Nulo quando a consulta mistura
                          formas.
                      as_of_by_rel:
                        type: object
                        additionalProperties:
                          type:
                            - string
                            - "null"
                        description: "Data efetivamente aplicada a cada verbo quando a consulta prende
                          mais de um: em retrato pode ter recuado; em evento é o
                          teto do corte."
                      excluded_shapes:
                        type: array
                        items:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        description: Formas removidas do conjunto pela data. `static` sai quando `at` é
                          passado e a consulta não prende um verbo, porque o
                          registro só publica o vigente.
                    required:
                      - next_cursor
                      - count
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: traverseObjectPath
      tags:
        - Objects
      parameters:
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
          required: false
        - in: query
          name: total
          schema:
            type: string
            description: true = inclui `meta.total` (contagem do universo filtrado). Custa
              uma consulta a mais.
          required: false
        - in: query
          name: steps
          schema:
            type: string
            description: "Cadeia `verbo:direção` separada por vírgula, 1 a 3 passos. Ex.:
              `contains:out,issued:out`"
          required: true
        - in: query
          name: start_id
          schema:
            type: string
            description: Objeto de partida (`pub_…`); sem ele, parte de todos os objetos de
              `start_kind`.
          required: false
        - in: query
          name: start_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo canônico do objeto. `equity_security` é o papel, separado de
              `company`; `securitization` é a emissão, separada da série
              negociável (`instrument`); e `fund_share_class` é a subclasse,
              separada da classe com CNPJ (`fund`). `indicator` representa o
              conceito medido, enquanto `data_series` representa uma publicação
              ou cálculo específico. `offering`, `market_event` e `norm` são
              objetos porque possuem identidade, atributos e relações próprias.
              `person` é a pessoa física nomeada em papel regulado
              (administrador, conselheiro, acionista relevante), chaveada por
              `person_key`, um hash irreversível; o documento nunca é publicado.
          required: false
        - in: query
          name: start_subkind
          schema:
            type: string
            description: Subtipo na partida (`fidc` em vez de `fund`).
          required: false
        - in: query
          name: end_id
          schema:
            type: string
            description: Prende a ponta final a um objeto.
          required: false
        - in: query
          name: end_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo canônico do objeto. `equity_security` é o papel, separado de
              `company`; `securitization` é a emissão, separada da série
              negociável (`instrument`); e `fund_share_class` é a subclasse,
              separada da classe com CNPJ (`fund`). `indicator` representa o
              conceito medido, enquanto `data_series` representa uma publicação
              ou cálculo específico. `offering`, `market_event` e `norm` são
              objetos porque possuem identidade, atributos e relações próprias.
              `person` é a pessoa física nomeada em papel regulado
              (administrador, conselheiro, acionista relevante), chaveada por
              `person_key`, um hash irreversível; o documento nunca é publicado.
          required: false
        - in: query
          name: end_subkind
          schema:
            type: string
            description: Subtipo na ponta final (`debenture` em vez de `instrument`).
          required: false
        - in: query
          name: count_at
          schema:
            type: integer
            minimum: 0
            maximum: 3
            description: Posição contada na cadeia; 0 é a partida. Omitido conta a ponta
              final.
          required: false
        - in: query
          name: return_at
          schema:
            type: integer
            minimum: 0
            maximum: 3
            description: Posição listada; 0 (default) é a partida.
          required: false
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Corte temporal aplicado a todos os saltos. Sem `at`, cada relação
              `snapshot` usa o retrato vigente do próprio sujeito, `static` usa
              o vigente e `event` inclui todos os eventos. Para consultar o
              acervo histórico, use `listObjectLinks` ou `findObjectPaths` sem
              `at`.
          required: false
      summary: Percorre uma cadeia de relações
      description: Percorre de uma a três relações declaradas como `verbo:direção` e
        ordena por objetos distintos alcançados. `return_at` escolhe a posição
        listada; `count_at`, a contada. `end_id` e `end_kind` restringem a
        ponta. `at` aplica a mesma data a todos os passos. Com `total=true`,
        leia o total em `meta.total`.
      x-domain: objects
  /v1/objects/paths:
    get:
      responses:
        "200":
          description: Cadeias que ligam os dois objetos
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        hops:
                          type: integer
                          description: Saltos desta cadeia.
                        chain:
                          type: string
                          description: A cadeia da origem ao destino, como `issued:out → indexed_to:out`.
                        path_count:
                          type: integer
                          description: Caminhos distintos que seguem esta cadeia.
                        paths:
                          type: integer
                          description: "Depreciado: use `path_count`."
                        examples:
                          type: array
                          items:
                            type: string
                          description: Até 3 objetos intermediários.
                      required:
                        - hops
                        - chain
                        - path_count
                        - paths
                        - examples
                  meta:
                    type: object
                    properties:
                      at:
                        type: string
                        description: A data pedida.
                      as_of:
                        type:
                          - string
                          - "null"
                        description: Data efetivamente aplicada; verbo de retrato recua até a última
                          competência publicada (`last_valid_to` em
                          `listObjectRelations`). Nulo quando a consulta mistura
                          formas.
                      as_of_by_rel:
                        type: object
                        additionalProperties:
                          type:
                            - string
                            - "null"
                        description: "Data efetivamente aplicada a cada verbo quando a consulta prende
                          mais de um: em retrato pode ter recuado; em evento é o
                          teto do corte."
                      excluded_shapes:
                        type: array
                        items:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        description: Formas removidas do conjunto pela data. `static` sai quando `at` é
                          passado e a consulta não prende um verbo, porque o
                          registro só publica o vigente.
                    required:
                      - at
                    description: Presente só quando `at` foi pedido.
                required:
                  - data
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: findObjectPaths
      tags:
        - Objects
      parameters:
        - in: query
          name: from_id
          schema:
            type: string
            description: Objeto de origem (pub_…).
          required: true
        - in: query
          name: to_id
          schema:
            type: string
            description: Objeto de destino (pub_…).
          required: true
        - in: query
          name: max_hops
          schema:
            type: integer
            minimum: 1
            maximum: 3
            default: 2
            description: Comprimento máximo da cadeia (1–3, default 2). O terceiro salto
              custa segundos.
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 25
            default: 10
            description: Cadeias distintas a devolver (1–25, default 10).
          required: false
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Aplica a data a cada salto. Sem ela, a ligação pode ser histórica.
              Relações `static` são excluídas de buscas passadas e informadas em
              `meta.excluded_shapes`. Corte temporal (AAAA-MM-DD). Sem `at`, usa
              o acervo histórico. Conforme o `shape` de `listObjectRelations`,
              `event` acumula até a data, `snapshot` escolhe o retrato aplicável
              e `static` pode ser recusada por não afirmar vigência passada.
          required: false
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
          required: false
      summary: Descobre como dois objetos se conectam
      description: Descobre cadeias entre dois objetos; use `traverseObjectPath`
        quando a cadeia já for conhecida. Agrupa resultados por cadeia, traz
        intermediários em `examples` e conta sequências distintas em
        `path_count`, sem duplicar fontes. Cadeias curtas vêm primeiro. O padrão
        é dois saltos; o terceiro é mais caro.
      x-domain: objects
  /v1/objects/stats:
    get:
      responses:
        "200":
          description: Censo do grafo
          content:
            application/json:
              schema:
                type: object
                properties:
                  objects:
                    type: integer
                  by_kind:
                    type: array
                    items:
                      type: object
                      properties:
                        kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        count:
                          type: integer
                      required:
                        - kind
                        - count
                  by_subkind:
                    type: array
                    items:
                      type: object
                      properties:
                        kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        subkind:
                          type:
                            - string
                            - "null"
                          description: "Fundo: `fidc`, `fii`, `fip`, `fif`, `fiagro`, `fiim`, `etf`,
                            `fapi`, `funcine`. Instrumento: `debenture`,
                            `securitizado`, `bdr`, `coe`, `tesouro`,
                            `cota_fundo_fechado` (a cota negociada no balcão; o
                            sub-tipo do FUNDO que a emitiu continua sendo
                            `fidc`, `fii` ou `fip`). Emissão de securitização:
                            `cri`, `cra`, `ots`; `securitizado` é a série e
                            `securitizacao` é a oferta. Papel: `on`, `pn`,
                            `unit`. Norma: `resolucao_cvm`, `instrucao_cvm`,
                            `deliberacao_cvm`, `oficio_circular`,
                            `resolucao_cmn`, `resolucao_bcb`, `lei`, `decreto`,
                            `medida_provisoria`. Prestador: `gestora`,
                            `administradora_fiduciaria`, `assessoria`,
                            `agencia_rating`; auditor e custodiante não têm
                            subtipo e aparecem pelas arestas `audits` e
                            `custodies`. Nulo significa não classificado pela
                            fonte, como fundos encerrados."
                        count:
                          type: integer
                      required:
                        - kind
                        - subkind
                        - count
                    description: Contagem por (tipo, subtipo). Subtipo nulo é linha própria.
                  ambiguous_key_objects:
                    type: integer
                    description: Objetos com alguma chave que aponta para mais de um.
                  keys:
                    type: integer
                  by_key_type:
                    type: array
                    items:
                      type: object
                      properties:
                        key_type:
                          type: string
                          description: Tipo de identificador como o servidor o publica; `string`, não
                            enum. `getObjectCensus` lista os vigentes.
                        count:
                          type: integer
                      required:
                        - key_type
                        - count
                  keys_via_alias:
                    type: integer
                    description: Chaves que chegaram ao objeto por cadeia de apelido.
                  keys_low_confidence:
                    type: integer
                  relationships:
                    type: integer
                    description: Relações distintas (origem, verbo, destino) no grafo inteiro, de
                      todos os tempos.
                  assertions:
                    type: integer
                    description: Linhas de aresta, uma por (fonte, período contíguo). A diferença
                      para `relationships` é redundância de fonte.
                  links:
                    type: integer
                    description: "Depreciado: use `assertions` ou `relationships`."
                required:
                  - objects
                  - by_kind
                  - by_subkind
                  - ambiguous_key_objects
                  - keys
                  - by_key_type
                  - keys_via_alias
                  - keys_low_confidence
                  - relationships
                  - assertions
                  - links
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectCensus
      tags:
        - Objects
      parameters: []
      summary: Conta objetos e chaves do grafo
      description: Censo dos objetos por `kind` e `subkind` e das chaves que apontam
        para eles, com ambiguidades e apelidos. Para contar objetos com
        determinada relação, use `getObjectLinkStats`.
      x-domain: objects
  /v1/objects/links/stats:
    get:
      responses:
        "200":
          description: Resumo do conjunto
          content:
            application/json:
              schema:
                type: object
                properties:
                  shape:
                    type:
                      - string
                      - "null"
                    enum:
                      - event
                      - snapshot
                      - static
                      - interval
                      - null
                    description: Nulo quando a consulta não fixa `rel`.
                  as_of:
                    type:
                      - string
                      - "null"
                    description: Recorte efetivamente aplicado. Nulo quando os números são de todos
                      os tempos.
                  relationship_count:
                    type: integer
                    description: Relações distintas (origem, verbo, destino), já recortadas por
                      `as_of`. É o número a reportar.
                  assertion_count:
                    type: integer
                    description: Afirmações que sustentam essas relações, uma por (fonte, período
                      contíguo). Sempre maior ou igual a `relationship_count`.
                  edges:
                    type: integer
                    description: "Depreciado: use `assertion_count`."
                  from_count:
                    type: integer
                    description: Objetos distintos na ponta que pratica o verbo.
                  to_count:
                    type: integer
                    description: Objetos distintos na ponta que recebe.
                  source_count:
                    type: integer
                    description: Fontes distintas que afirmam alguma dessas relações.
                  magnitude_max:
                    type:
                      - number
                      - "null"
                    description: Máximo observado, nunca soma.
                  magnitude_unit:
                    type:
                      - string
                      - "null"
                  evidence_max:
                    type:
                      - number
                      - "null"
                    description: "Depreciado: use `magnitude_max`."
                  evidence_unit:
                    type:
                      - string
                      - "null"
                    description: "Depreciado: use `magnitude_unit`."
                  valid_from_min:
                    type:
                      - string
                      - "null"
                    description: Início mais antigo observado.
                  valid_to_max:
                    type:
                      - string
                      - "null"
                    description: Fim mais recente observado.
                required:
                  - shape
                  - as_of
                  - relationship_count
                  - assertion_count
                  - edges
                  - from_count
                  - to_count
                  - source_count
                  - magnitude_max
                  - magnitude_unit
                  - evidence_max
                  - evidence_unit
                  - valid_from_min
                  - valid_to_max
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectLinkStats
      tags:
        - Objects
      parameters:
        - in: query
          name: rel
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Verbo da relação; `from` é quem pratica a ação e `to` quem a
              recebe. `serves_on` liga a pessoa ao cargo que ocupa na companhia;
              o cargo viaja em `series` e o rótulo em `label`. `measures` liga
              uma série ao conceito observado; `forecasts`, ao conceito
              projetado. `manages` identifica o gestor e `administers` o
              administrador fiduciário. Consulte `listObjectRelations` para
              forma temporal, tipos de origem e destino e semântica de
              `magnitude` de cada verbo.
        - in: query
          name: from_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo do objeto que pratica o verbo.
        - in: query
          name: to_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo do objeto que recebe o verbo.
        - in: query
          name: from_subkind
          schema:
            type: string
            description: Subtipo na origem (`fidc` em vez de `fund`).
        - in: query
          name: to_subkind
          schema:
            type: string
            description: Subtipo no destino.
        - in: query
          name: from_id
          schema:
            type: string
            description: Prende a origem a um objeto (`pub_…`).
        - in: query
          name: to_id
          schema:
            type: string
            description: Prende o destino a um objeto (`pub_…`).
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Corte temporal (AAAA-MM-DD). Sem `at`, relações `snapshot` usam a
              última competência, diferente de `listObjectLinks`, que usa o
              histórico. `meta.as_of` informa a competência. Com `at`, aplica as
              regras temporais do verbo.
      summary: Resume um conjunto de relações
      description: Conta relações, afirmações e objetos distintos, além do período e
        da maior magnitude. `relationship_count` conta relações distintas;
        `assertion_count`, fontes e períodos que as sustentam. `magnitude_max` é
        máximo, não soma. Prefira recortar por `from_id` ou `to_id` quando a
        pergunta partir de um objeto.
      x-domain: objects
  /v1/objects/links:
    get:
      responses:
        "200":
          description: Página de relações
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        rel:
                          type: string
                          description: Verbo da relação como o servidor o publica; `string`, não enum,
                            para que verbo novo não derrube a resposta.
                            `listObjectRelations` lista os vigentes.
                        shape:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        from_id:
                          type: string
                        to_id:
                          type: string
                        source:
                          type: string
                        valid_from:
                          type:
                            - string
                            - "null"
                        valid_to:
                          type:
                            - string
                            - "null"
                        observations:
                          type: integer
                        magnitude:
                          type:
                            - number
                            - "null"
                          description: Tamanho da relação no corte pedido; sem `at`, a última observação
                            do segmento. Nulo não é zero.
                        magnitude_as_of:
                          type:
                            - string
                            - "null"
                          description: Data da observação que sustenta `magnitude`. Confira que as datas
                            coincidem antes de somar linhas.
                        magnitude_unit:
                          type:
                            - string
                            - "null"
                        evidence:
                          type:
                            - number
                            - "null"
                          description: "Depreciado: use `magnitude`."
                        evidence_unit:
                          type:
                            - string
                            - "null"
                          description: "Depreciado: use `magnitude_unit`."
                        confidence:
                          type: string
                          enum:
                            - high
                            - medium
                            - low
                          description: "Confiança da afirmação: `high` quando a fonte é cadastral ou uma
                            competência a afirma com chave forte; `medium` para
                            extração revisada (as ações de rating); `low` quando
                            nenhuma afirmação passou do palpite."
                      required:
                        - rel
                        - shape
                        - from_id
                        - to_id
                        - source
                        - valid_from
                        - valid_to
                        - observations
                        - magnitude
                        - magnitude_as_of
                        - magnitude_unit
                        - evidence
                        - evidence_unit
                        - confidence
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      as_of:
                        type:
                          - string
                          - "null"
                        description: Data efetivamente aplicada; verbo de retrato recua até a última
                          competência publicada (`last_valid_to` em
                          `listObjectRelations`). Nulo quando a consulta mistura
                          formas.
                      as_of_by_rel:
                        type: object
                        additionalProperties:
                          type:
                            - string
                            - "null"
                        description: "Data efetivamente aplicada a cada verbo quando a consulta prende
                          mais de um: em retrato pode ter recuado; em evento é o
                          teto do corte."
                      excluded_shapes:
                        type: array
                        items:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        description: Formas removidas do conjunto pela data. `static` sai quando `at` é
                          passado e a consulta não prende um verbo, porque o
                          registro só publica o vigente.
                    required:
                      - next_cursor
                      - count
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: listGlobalLinks
      tags:
        - Objects
      parameters:
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
        - in: query
          name: total
          schema:
            type: string
            description: true = inclui `meta.total` (contagem do universo filtrado). Custa
              uma consulta a mais.
        - in: query
          name: rel
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Verbo da relação; `from` é quem pratica a ação e `to` quem a
              recebe. `serves_on` liga a pessoa ao cargo que ocupa na companhia;
              o cargo viaja em `series` e o rótulo em `label`. `measures` liga
              uma série ao conceito observado; `forecasts`, ao conceito
              projetado. `manages` identifica o gestor e `administers` o
              administrador fiduciário. Consulte `listObjectRelations` para
              forma temporal, tipos de origem e destino e semântica de
              `magnitude` de cada verbo.
        - in: query
          name: from_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo do objeto que pratica o verbo.
        - in: query
          name: to_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Tipo do objeto que recebe o verbo.
        - in: query
          name: from_subkind
          schema:
            type: string
            description: Subtipo na origem (`fidc` em vez de `fund`).
        - in: query
          name: to_subkind
          schema:
            type: string
            description: Subtipo no destino.
        - in: query
          name: from_id
          schema:
            type: string
            description: Prende a origem a um objeto (`pub_…`).
        - in: query
          name: to_id
          schema:
            type: string
            description: Prende o destino a um objeto (`pub_…`).
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Corte temporal (AAAA-MM-DD). Sem `at`, usa o acervo histórico.
              Conforme o `shape` de `listObjectRelations`, `event` acumula até a
              data, `snapshot` escolhe o retrato aplicável e `static` pode ser
              recusada por não afirmar vigência passada.
      summary: Lista relações do grafo inteiro
      description: Pagina as relações de um verbo sem partir de um objeto,
        opcionalmente presas a um lado (`from_id`, `to_id`) ou a tipos
        (`from_kind`, `to_kind`). Para contagens e extremos, use
        `getObjectLinkStats`.
      x-domain: objects
  /v1/objects/resolve:
    get:
      responses:
        "200":
          description: Candidatos, chave exata primeiro
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        query:
                          type: string
                          description: A consulta que trouxe este candidato — com `q=a|b` a lista mistura
                            as duas.
                        id:
                          type: string
                        kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        subkind:
                          type:
                            - string
                            - "null"
                          description: "Fundo: `fidc`, `fii`, `fip`, `fif`, `fiagro`, `fiim`, `etf`,
                            `fapi`, `funcine`. Instrumento: `debenture`,
                            `securitizado`, `bdr`, `coe`, `tesouro`,
                            `cota_fundo_fechado` (a cota negociada no balcão; o
                            sub-tipo do FUNDO que a emitiu continua sendo
                            `fidc`, `fii` ou `fip`). Emissão de securitização:
                            `cri`, `cra`, `ots`; `securitizado` é a série e
                            `securitizacao` é a oferta. Papel: `on`, `pn`,
                            `unit`. Norma: `resolucao_cvm`, `instrucao_cvm`,
                            `deliberacao_cvm`, `oficio_circular`,
                            `resolucao_cmn`, `resolucao_bcb`, `lei`, `decreto`,
                            `medida_provisoria`. Prestador: `gestora`,
                            `administradora_fiduciaria`, `assessoria`,
                            `agencia_rating`; auditor e custodiante não têm
                            subtipo e aparecem pelas arestas `audits` e
                            `custodies`. Nulo significa não classificado pela
                            fonte, como fundos encerrados."
                        name:
                          type:
                            - string
                            - "null"
                        anchor_type:
                          type: string
                          description: Tipo de identificador como o servidor o publica; `string`, não
                            enum. `getObjectCensus` lista os vigentes.
                        anchor_value:
                          type: string
                        match_kind:
                          type: string
                          enum:
                            - exact_key
                            - exact_name
                            - prefix_name
                            - fuzzy_name
                          description: "`exact_key` = casou um identificador (é o único em que
                            `matched_key_*` significa alguma coisa). Os três de
                            nome são palpite ordenado, do melhor para o pior —
                            trate `fuzzy_name` como candidato a confirmar, nunca
                            como resposta."
                        matched_key_type:
                          type: string
                          description: A chave por onde casou. Em `match_kind` de NOME é uma chave
                            qualquer do objeto, e não diz nada sobre a busca.
                        matched_key_value:
                          type: string
                        confidence:
                          type: string
                          enum:
                            - high
                            - low
                      required:
                        - query
                        - id
                        - kind
                        - subkind
                        - name
                        - anchor_type
                        - anchor_value
                        - match_kind
                        - matched_key_type
                        - matched_key_value
                        - confidence
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      queries:
                        type: array
                        items:
                          type: object
                          properties:
                            q:
                              type: string
                            best_id:
                              type:
                                - string
                                - "null"
                              description: O id resolvido, só quando há UM candidato no melhor tier de chave
                                ou nome exato. Empate continua nulo mesmo com
                                `limit=1`; aumente o limite para inspecionar os
                                candidatos.
                            candidates:
                              type: integer
                              description: Quantidade de candidatos devolvidos para esta consulta, respeitando
                                `limit`.
                            reason:
                              type:
                                - string
                                - "null"
                              enum:
                                - no_match
                                - ambiguous
                                - null
                              description: Por que não há `best_id`. Nulo quando há.
                          required:
                            - q
                            - best_id
                            - candidates
                            - reason
                        description: "Um veredito por consulta, na ordem de `q`. Sem cursor: `limit`
                          vale por consulta e a lista é fechada."
                    required:
                      - next_cursor
                      - count
                      - queries
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: resolveObject
      tags:
        - Objects
      parameters:
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 20
            description: Candidatos por consulta (1–50, default 20). Sem cursor.
          required: false
        - in: query
          name: q
          schema:
            type: string
            minLength: 1
            description: Ticker, CNPJ, ISIN, código ou nome. Separe até 20 consultas por
              `|`; cada resultado traz `query` e o veredito em `meta.queries`.
              `limit` vale por consulta, sem cursor, até 200 candidatos no
              total. Chaves exatas têm prioridade; nomes ignoram ordem, acento e
              caixa, e termos como FIDC, debênture ou gestora restringem o tipo.
              `exact_key` e `exact_name` com um único melhor candidato já
              resolvem a identidade.
          required: true
        - in: query
          name: kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Restringe o tipo do objeto.
          required: false
        - in: query
          name: subkind
          schema:
            type: string
            description: "Restringe dentro do tipo: `fii`, `fidc`, `fip`, `etf`,
              `debenture`, `bdr`, `coe`, `tesouro`."
          required: false
      summary: Resolve ticker, CNPJ, ISIN, código ou nome
      description: "Retorna candidatos ordenados. `exact_key` identifica por chave;
        `fuzzy_name` exige confirmação. Prefira identificadores a nomes. Papéis
        e companhias são objetos distintos: por exemplo, `PETR4` resolve para o
        papel, ligado à emissora por `issued`."
      x-domain: objects
  /v1/objects/relations:
    get:
      responses:
        "200":
          description: Os verbos declarados, com forma, domínio, range e nota
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                    required:
                      - next_cursor
                      - count
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        rel:
                          type: string
                          description: Verbo da relação como o servidor o publica; `string`, não enum,
                            para que verbo novo não derrube a resposta.
                            `listObjectRelations` lista os vigentes.
                        shape:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        max_gap_days:
                          type:
                            - integer
                            - "null"
                          description: Distância máxima entre competências que ainda conta como a mesma
                            relação contínua; acima dela a aresta se parte. Nulo
                            em verbo sem série.
                        last_valid_to:
                          type:
                            - string
                            - "null"
                          description: Última competência publicada por este verbo, a data mais recente
                            que faz sentido em `at`. `at` posterior recua até
                            ela e `as_of` informa. Nulo em `event` e `static`.
                        domain_kinds:
                          type: array
                          items:
                            type: string
                            description: Tipo do objeto como o servidor o publica; `string`, não enum.
                              `getObjectCensus` lista os vigentes.
                          description: Tipos que podem praticar o verbo.
                        range_kinds:
                          type: array
                          items:
                            type: string
                            description: Tipo do objeto como o servidor o publica; `string`, não enum.
                              `getObjectCensus` lista os vigentes.
                          description: Tipos que podem receber o verbo.
                        forward_name:
                          type:
                            - string
                            - "null"
                          description: Nome do verbo visto de quem o pratica (`issued` em `company`); é o
                            acessor gerado no SDK.
                        inverse_name:
                          type:
                            - string
                            - "null"
                          description: Nome do verbo visto de quem o recebe (`issuer` no papel). Igual a
                            `forward_name` em verbo simétrico.
                        note:
                          type:
                            - string
                            - "null"
                          description: O que a fonte afirma e o que não afirma, em uma frase.
                      required:
                        - rel
                        - shape
                        - max_gap_days
                        - last_valid_to
                        - domain_kinds
                        - range_kinds
                        - forward_name
                        - inverse_name
                        - note
                    description: Todos os verbos declarados, inclusive os sem aresta.
                required:
                  - meta
                  - data
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: listObjectRelations
      tags:
        - Objects
      parameters: []
      summary: Lista o vocabulário de relações do grafo
      description: "Catálogo fechado dos verbos, inclusive os ainda sem arestas. Leia
        `note` para a semântica, `domain_kinds` e `range_kinds` para as pontas
        válidas, e `shape` para o tempo: `event` acumula eventos, `snapshot`
        representa retratos e `static` só admite o vigente."
      x-domain: objects
  /v1/objects/facts/catalog:
    get:
      responses:
        "200":
          description: Medidas declaradas no contrato
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      kinds:
                        type: array
                        items:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        description: Tipos que têm medida; são os valores que `kind` aceita.
                    required:
                      - next_cursor
                      - count
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        label:
                          type: string
                          description: Rótulo em pt-BR para eixo e legenda.
                        kind:
                          type: string
                          description: Tipo de objeto para o qual esta linha vale.
                        unit:
                          type: string
                          enum:
                            - brl
                            - usd
                            - pct
                            - ratio
                            - x
                            - count
                            - points
                            - native
                          description: "`ratio` é fração (0,08 é 8%) e `pct` é percentual (8,0 é 8%);
                            converta antes de comparar. `x` é múltiplo. `native`
                            é a unidade da própria série, declarada no catálogo
                            dela."
                        dimension:
                          type:
                            - string
                            - "null"
                          description: "O que o número é: `currency`, `rate`, `share`, `ratio`, `index`,
                            `points`, `count`, `duration`. Nulo em
                            `data_series`, onde a régua é da série e vem de
                            `getObjectFacts`."
                        scale:
                          type:
                            - string
                            - "null"
                          description: "Escala em que o valor é servido: `unit`, `percent`, `thousand`,
                            `million`, `billion`, `bps`, `business_days`. O
                            valor vem como publicado; a escala diz como lê-lo."
                        period:
                          type:
                            - string
                            - "null"
                          description: "Janela coberta: `none`, `daily`, `monthly`, `quarterly`, `annual`,
                            `ttm_12m`, `cagr_3y`. Não é `cadence`; confira antes
                            de comparar medidas."
                        cadence:
                          type: string
                          enum:
                            - daily
                            - weekly
                            - monthly
                            - quarterly
                            - annual
                            - irregular
                          description: Frequência de publicação da medida. Em `data_series` vale
                            `irregular`, porque o tipo abrange séries de várias
                            cadências; a real vem em `getObjectFacts` e
                            `getObjectHistory`.
                        grain:
                          type: string
                          enum:
                            - object
                            - paper
                          description: "`paper`: a medida é por classe de ação e somar classes duplica o
                            emissor. `object`: é do objeto inteiro."
                        expected_range:
                          type:
                            - object
                            - "null"
                          properties:
                            min:
                              type: number
                            max:
                              type: number
                          required:
                            - min
                            - max
                          description: Faixa plausível na unidade de `unit`. `null` é ausência de faixa,
                            não aprovação.
                        concept:
                          type: string
                          description: O conceito medido, sem a régua. Linhas com o mesmo `concept` têm
                            `dimension` e `period` iguais; para comparar entre
                            tipos, converta pela `scale`.
                      required:
                        - name
                        - label
                        - kind
                        - unit
                        - dimension
                        - scale
                        - period
                        - cadence
                        - grain
                        - expected_range
                        - concept
                required:
                  - meta
                  - data
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: listFactCatalog
      tags:
        - Objects
      parameters:
        - in: query
          name: kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Recorta o catálogo a um tipo de objeto. `meta.kinds` lista os que
              têm medida.
      summary: Lista as medidas e suas unidades
      description: "Lista os `fact` aceitos por `getObjectFacts` e `getObjectHistory`,
        com objetos aplicáveis e sua régua. Interprete o valor com `unit`,
        `dimension`, `scale` e `period`: `ratio` é fração, `pct` é percentual e
        escalas como `thousand` não são aplicadas ao valor servido. Em
        `unit=native`, a unidade varia por série; consulte o objeto da série
        para obter a unidade resolvida."
      x-domain: objects
  /v1/objects/aggregate:
    get:
      responses:
        "200":
          description: Os grupos, com o resumo de cada um
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                          description: "Chave do grupo: o valor da propriedade ou o `entity_id` do
                            vizinho."
                        label:
                          type: string
                          description: Nome do grupo para exibição. Igual à chave quando o grupo é
                            palavra.
                        entity_id:
                          type:
                            - string
                            - "null"
                          description: Preenchido quando o grupo é um objeto (agrupamento por relação).
                            Nulo quando é palavra.
                        value:
                          type:
                            - number
                            - "null"
                          description: Resultado da agregação. Nulo quando nenhum objeto do grupo tem
                            valor na medida, nunca zero.
                        objects:
                          type: integer
                          description: Objetos da coorte neste grupo.
                        with_value:
                          type: integer
                          description: Destes, quantos têm valor na medida.
                      required:
                        - key
                        - label
                        - entity_id
                        - value
                        - objects
                        - with_value
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                        description: Cursor da próxima página de grupos; `null` quando todos couberam.
                      count:
                        type: integer
                      fact:
                        type:
                          - string
                          - "null"
                        description: Medida resumida. Nulo no censo (sem `fact`), em que `value` conta
                          objetos.
                      unit:
                        type: string
                        enum:
                          - brl
                          - usd
                          - pct
                          - ratio
                          - x
                          - count
                          - points
                          - native
                        description: "`ratio` é fração (0,08 é 8%) e `pct` é percentual (8,0 é 8%);
                          converta antes de comparar. `x` é múltiplo. `native` é
                          a unidade da própria série, declarada no catálogo
                          dela."
                      agg:
                        type: string
                        enum:
                          - sum
                          - avg
                          - median
                          - min
                          - max
                          - count
                      group_by:
                        type: string
                      group_by_kind:
                        type: string
                        enum:
                          - property
                          - edge
                          - time
                        description: Natureza do grupo, resolvida pelo servidor a partir do nome.
                      source:
                        type: string
                      cadence:
                        type: string
                        enum:
                          - daily
                          - weekly
                          - monthly
                          - quarterly
                          - annual
                          - irregular
                        description: Frequência de publicação da fonte. `irregular` cobre papéis que não
                          negociam todo dia e séries sem calendário fixo. Não é
                          a janela coberta pelo número, que fica em
                          `axes.period`.
                      grain:
                        type: string
                        enum:
                          - object
                          - paper
                        description: "`object`: uma resposta para o objeto inteiro; somar papéis
                          duplica. `paper`: varia por classe de ação; peça por
                          papel."
                      description:
                        type: string
                      cohort_objects:
                        type: integer
                        description: Coorte inteira, com ou sem valor na medida. Em `rankObjects`,
                          `cohort_size` conta só quem tem valor.
                      cohort_with_value:
                        type: integer
                        description: Objetos da coorte com valor na medida; equivale a `cohort_size` de
                          `rankObjects`.
                      cohort_value:
                        type:
                          - number
                          - "null"
                        description: "Agregação sobre a coorte inteira, calculada antes do agrupamento:
                          inclui `ungrouped` e não depende de `limit`. Leia aqui
                          o total; não some a página. Nulo sem valores."
                      excluded_out_of_prior:
                        type:
                          - integer
                          - "null"
                        description: Objetos excluídos por `exclude_out_of_prior=true`. Nulo sem filtro,
                          sem `fact` ou sem faixa declarada; zero significa
                          faixa aplicada sem exclusões.
                      since:
                        type:
                          - string
                          - "null"
                        description: "Data-base mínima efetiva do valor, como em `rankObjects`: por
                          default, a janela da cadência da medida relativa a
                          `at`. Nula no censo e em medida `irregular`."
                      since_policy:
                        type:
                          - string
                          - "null"
                        enum:
                          - caller
                          - cadence
                          - null
                        description: "Origem do corte de frescor: `since` do chamador ou default da
                          cadência. Nulo sem corte."
                      stale_excluded:
                        type:
                          - integer
                          - "null"
                        description: Objetos com valor excluídos do total por data-base anterior a
                          `since`. Nulo sem corte de frescor.
                      order_by:
                        type: string
                        enum:
                          - value
                          - objects
                        description: "Como a página foi ordenada e cortada: pela agregação (`value`) ou
                          pelo tamanho do grupo (`objects`)."
                      total_groups:
                        type: integer
                        description: Grupos existentes na coorte, incluindo os que não couberam em
                          `data`.
                      groups_truncated:
                        type: boolean
                        description: "`true` quando `total_groups` excede os grupos devolvidos; `data`
                          traz os maiores, não o total."
                      current_state_rels:
                        type: array
                        items:
                          type: string
                        description: "Verbos de estado atual (`manages`, `audits`, `custodies`…) desta
                          consulta lidos como VIGENTES enquanto `at` cortou só a
                          medida: a coorte é quem é hoje, o valor é o da data.
                          Vazio sem `at` ou sem verbo de estado."
                      ungrouped:
                        type: integer
                        description: "Objetos da coorte fora de todo grupo: sem a propriedade, sem a
                          relação ou, no balde temporal, sem valor elegível para
                          cair num período."
                      multi_group:
                        type: integer
                        description: Objetos em mais de um grupo. Zero em verbos funcionais como
                          `manages`; alto em `issued`, onde `sum` conta a
                          companhia por emissão.
                      filterable_properties:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            vocabulary:
                              type:
                                - array
                                - "null"
                              items:
                                type: string
                          required:
                            - name
                            - vocabulary
                        description: Propriedades que aceitam corte por palavra nesta coorte, com os
                          valores possíveis, como em `rankObjects`.
                      groupable:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            kind:
                              type: string
                              enum:
                                - property
                                - edge
                          required:
                            - name
                            - kind
                        description: Eixos de agrupamento aceitos neste tipo.
                      empty_reason:
                        type: string
                        description: Por que `data` veio vazia; o caso comum é direção invertida, e o
                          campo nomeia a que funcionaria. Ausente quando há
                          grupos.
                    required:
                      - next_cursor
                      - count
                      - fact
                      - unit
                      - agg
                      - group_by
                      - group_by_kind
                      - source
                      - cadence
                      - grain
                      - description
                      - cohort_objects
                      - cohort_with_value
                      - cohort_value
                      - excluded_out_of_prior
                      - since
                      - since_policy
                      - stale_excluded
                      - order_by
                      - total_groups
                      - groups_truncated
                      - ungrouped
                      - multi_group
                      - filterable_properties
                      - groupable
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: aggregateObjects
      tags:
        - Objects
      parameters:
        - in: query
          name: kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: O tipo dos objetos que entram na coorte.
          required: true
        - in: query
          name: subkind
          schema:
            type: string
            description: Recorte dentro do tipo.
          required: false
        - in: query
          name: fact
          schema:
            type: string
            description: Medida a resumir, pelo nome de `listFactCatalog`. Omita com
              `agg=count` para contar objetos por grupo, o único caminho para
              tipos que só têm propriedades.
          required: false
        - in: query
          name: agg
          schema:
            type: string
            enum:
              - sum
              - avg
              - median
              - min
              - max
              - count
            description: Redução por grupo. `sum` é recusado em `pct`, `ratio`, `x` e
              `points`. `count` conta objetos com valor na medida; sem `fact`,
              conta todos os objetos do grupo.
          required: true
        - in: query
          name: group_by
          schema:
            type: string
            description: "Eixo do agrupamento: `subkind` (a classe dentro do tipo:
              ON/PN/UNIT, fii/fidc/etf, cri/cra), propriedade (`situation`),
              relação (`manages`, com `group_by_direction`) ou balde de tempo
              (`year`, `quarter`, `month`, que exigem `fact`). `meta.groupable`
              lista as opções e `meta.group_by_kind` informa a usada."
          required: true
        - in: query
          name: group_by_direction
          schema:
            type: string
            enum:
              - in
              - out
            default: out
            description: Lado da coorte na aresta quando `group_by` é relação, como em
              `rel_direction`. Direção errada devolve lista vazia e
              `meta.empty_reason` indica a correta.
          required: false
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Data-base dos valores e vigência das relações da coorte. Sem `at`,
              usa o valor mais recente por objeto e o acervo histórico das
              relações, como `listObjectLinks`. Com `fact`, verbo de estado no
              `rel` (`manages`, `audits`) é lido como vigente e declarado em
              `meta.current_state_rels`; no censo sem `fact` a data passada é
              recusada.
          required: false
        - in: query
          name: rel
          schema:
            type: string
            description: Restringe a coorte a quem tem esta relação com `rel_to`.
          required: false
        - in: query
          name: rel_to
          schema:
            type: string
            description: O outro lado de `rel`.
          required: false
        - in: query
          name: rel_direction
          schema:
            type: string
            enum:
              - in
              - out
            default: in
            description: Onde a coorte está na aresta de `rel`.
          required: false
        - in: query
          name: where
          schema:
            type: string
            description: Os mesmos cortes de `rankObjects`, por número e por palavra,
              aplicados antes do agrupamento — inclusive a medida do objeto
              relacionado pelo prefixo `<verbo>:<direção>.`
              (`issued:in.roe>0.15`).
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 50
            description: Grupos por página (1–200, default 50).
          required: false
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor de `meta.next_cursor` da página anterior de grupos.
          required: false
        - in: query
          name: q
          schema:
            type: string
            minLength: 2
            maxLength: 120
            description: Busca no rótulo do grupo, sem acento nem caixa. `meta.total_groups`
              conta só os que casam.
          required: false
        - in: query
          name: order_by
          schema:
            type: string
            enum:
              - value
              - objects
            default: value
            description: Ordena e corta a página pela agregação (`value`) ou pelo número de
              objetos do grupo (`objects`).
          required: false
        - in: query
          name: since
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Data-base mínima aceita no valor, como em `rankObjects`. Sem ela, a
              cadência da medida define o piso e `meta.stale_excluded` conta os
              objetos parados que ficaram fora. `meta.since` e `since_policy`
              informam o corte efetivo.
          required: false
        - in: query
          name: exclude_out_of_prior
          schema:
            type: boolean
            description: Exclui da agregação os valores fora da faixa plausível declarada
              para `fact`. `meta.excluded_out_of_prior` informa quantos valores
              saíram; vem nulo quando o filtro não foi pedido ou a medida não
              declara faixa. No censo sem `fact`, não há medida a validar.
          required: false
      summary: Agrega uma coorte por propriedade ou relação
      description: >-
        Agrega a mesma coorte de `rankObjects`, recortada por `kind`, `subkind`,
        relações e `where`. `group_by` aceita propriedade ou relação;
        `meta.group_by_kind` identifica o caso e grupos relacionais trazem
        `entity_id`. Use `group_by_direction` para indicar onde a coorte está na
        aresta.


        `sum` é recusado para percentual, razão, múltiplo e ponto de índice;
        `avg`, `median`, `min` e `max` preservam a unidade. Sem `fact`,
        `agg=count` conta objetos. `cohort_objects`, `cohort_with_value`,
        `ungrouped` e `multi_group` mostram cobertura e sobreposição; ausência
        de valor produz `null`, nunca zero.


        Leia o total da coorte em `meta.cohort_value`, não somando a página.
        `cursor` pagina os grupos, `q` filtra seus rótulos e `order_by` escolhe
        ordenar pelo valor ou pelo número de objetos.
      x-domain: objects
  /v1/objects/rank:
    get:
      responses:
        "200":
          description: A coorte ordenada pela medida
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: O objeto ranqueado, o mesmo id de `getObject`.
                        name:
                          type:
                            - string
                            - "null"
                        kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        subkind:
                          type:
                            - string
                            - "null"
                          description: "Fundo: `fidc`, `fii`, `fip`, `fif`, `fiagro`, `fiim`, `etf`,
                            `fapi`, `funcine`. Instrumento: `debenture`,
                            `securitizado`, `bdr`, `coe`, `tesouro`,
                            `cota_fundo_fechado` (a cota negociada no balcão; o
                            sub-tipo do FUNDO que a emitiu continua sendo
                            `fidc`, `fii` ou `fip`). Emissão de securitização:
                            `cri`, `cra`, `ots`; `securitizado` é a série e
                            `securitizacao` é a oferta. Papel: `on`, `pn`,
                            `unit`. Norma: `resolucao_cvm`, `instrucao_cvm`,
                            `deliberacao_cvm`, `oficio_circular`,
                            `resolucao_cmn`, `resolucao_bcb`, `lei`, `decreto`,
                            `medida_provisoria`. Prestador: `gestora`,
                            `administradora_fiduciaria`, `assessoria`,
                            `agencia_rating`; auditor e custodiante não têm
                            subtipo e aparecem pelas arestas `audits` e
                            `custodies`. Nulo significa não classificado pela
                            fonte, como fundos encerrados."
                        value:
                          type: number
                          description: "Número que ordenou a linha: o nível em `value`, a variação em
                            `delta` e `pct_change`, e a redução da janela
                            `since`→`at` em `min`, `max`, `avg`, `sum` e
                            `count`."
                        value_from:
                          type:
                            - number
                            - "null"
                          description: Valor na ponta inicial da janela. Nulo em `measure=value`.
                        value_to:
                          type:
                            - number
                            - "null"
                          description: Valor na ponta final da janela. Nulo em `measure=value`.
                        as_of:
                          type: string
                          description: "Data-base do valor final. Nas agregações por janela é a data da
                            ÚLTIMA observação usada, não a do extremo: o mínimo
                            pode ter acontecido antes."
                        statement_date:
                          type:
                            - string
                            - "null"
                          description: Competência do valor final, quando difere de `as_of`. Para datar um
                            fundamento, cite este campo.
                        statement_date_from:
                          type:
                            - string
                            - "null"
                          description: Competência do valor inicial. Nula em `measure=value`.
                        as_of_from:
                          type:
                            - string
                            - "null"
                          description: "Data-base do valor inicial: a última competência publicada até
                            `from`, que pode ser anterior à pedida."
                        series:
                          type:
                            - string
                            - "null"
                          description: Papel de onde o número saiu, quando a medida é por papel. Medida da
                            emissora sai uma vez por companhia.
                        out_of_prior:
                          type:
                            - boolean
                            - "null"
                          description: "`true` quando o valor está fora da faixa plausível da medida, como
                            em `getObjectFacts`. Valores são servidos como
                            publicados; use `exclude_out_of_prior=true` para
                            tirá-los da ordenação. Nulo quando a medida não
                            declara faixa."
                        related:
                          type: array
                          items:
                            type: object
                            properties:
                              rel:
                                type: string
                              direction:
                                type: string
                                enum:
                                  - out
                                  - in
                              id:
                                type: string
                              kind:
                                type: string
                                description: Tipo do objeto como o servidor o publica; `string`, não enum.
                                  `getObjectCensus` lista os vigentes.
                              name:
                                type:
                                  - string
                                  - "null"
                              key_type:
                                type:
                                  - string
                                  - "null"
                                description: "Tipo de `key`: `ticker`, `cnpj`, `series_code`."
                              key:
                                type:
                                  - string
                                  - "null"
                                description: Chave pública do objeto.
                            required:
                              - rel
                              - direction
                              - id
                              - kind
                              - name
                              - key_type
                              - key
                          description: Até três objetos ligados à linha pelo verbo de `expand`. Ausente
                            sem `expand` ou sem vizinho. Para a lista inteira de
                            um objeto, use `listObjectLinks`.
                        observations:
                          type:
                            - integer
                            - "null"
                          description: Observações que entraram na janela desta linha, em `min`, `max`,
                            `avg`, `sum` e `count`. Nulo em `value`, `delta` e
                            `pct_change`. Um mínimo apurado sobre UMA observação
                            tem a mesma cara de um sobre vinte, e este é o campo
                            que separa os dois.
                        where_values:
                          type: array
                          items:
                            type: object
                            properties:
                              fact:
                                type: string
                                description: Medida do corte.
                              measure:
                                type: string
                                enum:
                                  - value
                                  - delta
                                  - pct_change
                                description: "`value` compara o nível; `delta` e `pct_change`, a variação na
                                  janela do ranking."
                              value:
                                type: number
                                description: Valor desta linha na medida do corte, na escala de
                                  `meta.applied_where`.
                              as_of:
                                type: string
                                description: Data-base deste valor; pode diferir do `as_of` da medida ordenada.
                            required:
                              - fact
                              - measure
                              - value
                              - as_of
                          description: Valor de cada condição de `where` nesta linha. Ausente sem filtro.
                      required:
                        - id
                        - name
                        - kind
                        - subkind
                        - value
                        - value_from
                        - value_to
                        - as_of
                        - statement_date
                        - statement_date_from
                        - as_of_from
                        - series
                        - out_of_prior
                        - observations
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      fact:
                        type: string
                      unit:
                        type: string
                        enum:
                          - brl
                          - usd
                          - pct
                          - ratio
                          - x
                          - count
                          - points
                          - native
                        description: "Unidade da medida ordenada: `ratio` é fração e `pct` é percentual.
                          Em `pct_change`, `value` é sempre percentual; em
                          `count`, `count`. `min`, `max`, `avg` e `sum` mantêm a
                          régua da medida."
                      measure:
                        type: string
                        enum:
                          - value
                          - delta
                          - pct_change
                          - min
                          - max
                          - avg
                          - sum
                          - count
                        description: "`value` ordena pelo nível em `at`; `delta` pela variação absoluta
                          entre `from` e `at`; `pct_change` pela variação
                          relativa em percentual. Para medidas que cruzam zero,
                          use `delta`. `min`, `max`, `avg`, `sum` e `count`
                          reduzem TODAS as observações entre `since` e `at`, que
                          passam a ser obrigatórias em `since`; `count` conta
                          observações e sai em `count`."
                      cadence:
                        type: string
                        enum:
                          - daily
                          - weekly
                          - monthly
                          - quarterly
                          - annual
                          - irregular
                        description: Frequência de publicação da fonte. `irregular` cobre papéis que não
                          negociam todo dia e séries sem calendário fixo. Não é
                          a janela coberta pelo número, que fica em
                          `axes.period`.
                      grain:
                        type: string
                        enum:
                          - object
                          - paper
                        description: "`object`: uma resposta para o objeto inteiro; somar papéis
                          duplica. `paper`: varia por classe de ação; peça por
                          papel."
                      source:
                        type: string
                      availability:
                        type: string
                        enum:
                          - filed
                          - unknown
                        description: "`filed`: o corte por `at` e `to` é point-in-time completo.
                          `unknown`: o corte usa só a data-base e um ranking
                          datado pode enxergar números ainda não públicos na
                          data."
                      order:
                        type: string
                        enum:
                          - asc
                          - desc
                      window_from:
                        type:
                          - string
                          - "null"
                        description: Ponta inicial pedida; as efetivas vão em `as_of_from`.
                      window_to:
                        type:
                          - string
                          - "null"
                        description: Ponta final pedida.
                      since:
                        type:
                          - string
                          - "null"
                        description: Data-base mínima efetiva da ponta final. Por default, a janela da
                          cadência da medida relativa a `at`. Nula em medida
                          `irregular`. Em `min`, `max`, `avg`, `sum` e `count` é
                          o COMEÇO da janela agregada, não um corte de frescor.
                      since_policy:
                        type:
                          - string
                          - "null"
                        enum:
                          - caller
                          - cadence
                          - null
                        description: "Origem do corte de frescor: `since` do chamador ou default da
                          cadência. Nulo sem corte."
                      stale_excluded:
                        type:
                          - integer
                          - "null"
                        description: Objetos com valor excluídos por data-base anterior a `since`. Nulo
                          sem corte de frescor — inclusive nas agregações por
                          janela, em que `since` é a janela e não um corte.
                      as_of_range:
                        type:
                          - object
                          - "null"
                        properties:
                          min:
                            type: string
                          max:
                            type: string
                        required:
                          - min
                          - max
                        description: Faixa de data-base desta página. `min` diferente de `max` indica
                          competências misturadas; aperte `since` para exigir
                          contemporaneidade. Nulo em página vazia.
                      mixed_vintage:
                        type: boolean
                        description: "`true` quando a página mistura competências distantes demais para
                          a cadência da medida (cerca de duas competências).
                          Leia `vintage_spread_days` e aperte `since` se
                          necessário."
                      vintage_spread_days:
                        type:
                          - number
                          - "null"
                        description: Dias entre a competência mais antiga e a mais nova da página. Nulo
                          em página vazia.
                      current_state_rels:
                        type: array
                        items:
                          type: string
                        description: "Verbos de estado atual (`manages`, `audits`, `custodies`…) desta
                          consulta lidos como VIGENTES enquanto `at` cortou só a
                          medida: a coorte é quem é hoje, o valor é o da data.
                          Vazio sem `at` ou sem verbo de estado."
                      as_of_from_range:
                        type:
                          - object
                          - "null"
                        properties:
                          min:
                            type: string
                          max:
                            type: string
                        required:
                          - min
                          - max
                        description: Faixa de data-base da ponta inicial nesta página. Use `since_from`
                          para limitar a antiguidade.
                      excluded_out_of_prior:
                        type:
                          - integer
                          - "null"
                        description: Objetos excluídos por valor implausível. `null` quando não houve
                          teste (filtro não pedido ou medida sem faixa); zero
                          quando a faixa foi aplicada sem exclusões. A faixa não
                          examina o denominador de uma razão; para isso, use
                          `where`.
                      cohort_size:
                        type: integer
                        description: Objetos da coorte com valor nas pontas necessárias, após `where`.
                          `filtered_out` conta os derrubados pelo corte.
                      filterable_facts:
                        type: array
                        items:
                          type: string
                        description: Outras medidas da coorte aceitas em `where`. Consulte a escala em
                          `listFactCatalog`.
                      filterable_properties:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                              description: Nome aceito em `where`, o mesmo de `getObjectProperties`.
                            vocabulary:
                              type:
                                - array
                                - "null"
                              items:
                                type: string
                              description: Valores possíveis. Nulo indica texto livre da fonte, não ausência
                                de valores.
                          required:
                            - name
                            - vocabulary
                        description: Propriedades que aceitam corte por palavra nesta coorte, com os
                          valores possíveis. Sai da mesma declaração que
                          `getObjectProperties` serve e que `where` valida.
                      applied_property_where:
                        type: array
                        items:
                          type: object
                          properties:
                            property:
                              type: string
                            op:
                              type: string
                              enum:
                                - eq
                                - ne
                            values:
                              type: array
                              items:
                                type: string
                              description: Valores pedidos, como vieram.
                            matched:
                              type: array
                              items:
                                type: string
                              description: Valores que casaram, na grafia canônica da fonte. Caixa e acento
                                são ignorados no casamento.
                            source:
                              type: string
                              description: Cadastro de origem da propriedade.
                          required:
                            - property
                            - op
                            - values
                            - matched
                            - source
                        description: Como cada corte por palavra foi aplicado. Ausente sem corte. Em
                          `ne`, objeto que não declara a propriedade passa.
                      filtered_out:
                        type: integer
                        description: Objetos derrubados por `where`. Ausente sem `where`.
                      applied_where:
                        type: array
                        items:
                          type: object
                          properties:
                            fact:
                              type: string
                            op:
                              type: string
                              enum:
                                - lt
                                - lte
                                - gt
                                - gte
                            value:
                              type: number
                            measure:
                              type: string
                              enum:
                                - value
                                - delta
                                - pct_change
                              description: "O que foi comparado: o nível em `value`, a variação em `delta`, a
                                variação relativa em `pct_change`."
                            unit:
                              type: string
                              enum:
                                - brl
                                - usd
                                - pct
                                - ratio
                                - x
                                - count
                                - points
                                - native
                              description: "`ratio` é fração (0,08 é 8%) e `pct` é percentual (8,0 é 8%);
                                converta antes de comparar. `x` é múltiplo.
                                `native` é a unidade da própria série, declarada
                                no catálogo dela."
                            description:
                              type: string
                            via_rel:
                              type: string
                              description: Aresta atravessada num corte relacional (`verbo:direção.fato`).
                            via_direction:
                              type: string
                              enum:
                                - in
                                - out
                            fact_kind:
                              type: string
                              description: Tipo do objeto cujo fato foi comparado no corte relacional. Passa
                                quem tem algum relacionado que satisfaz; sem
                                relação ou sem o fato publicado, não passa.
                          required:
                            - fact
                            - op
                            - value
                            - measure
                            - unit
                            - description
                        description: Como cada condição de `where` foi aplicada, com a unidade usada na
                          comparação. Confira a escala aqui.
                      description:
                        type: string
                    required:
                      - next_cursor
                      - count
                      - fact
                      - unit
                      - measure
                      - cadence
                      - grain
                      - source
                      - availability
                      - order
                      - window_from
                      - window_to
                      - since
                      - since_policy
                      - stale_excluded
                      - as_of_range
                      - mixed_vintage
                      - vintage_spread_days
                      - excluded_out_of_prior
                      - cohort_size
                      - filterable_facts
                      - filterable_properties
                      - description
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: rankObjects
      tags:
        - Objects
      parameters:
        - in: query
          name: kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: O tipo dos objetos que entram na coorte.
          required: true
        - in: query
          name: subkind
          schema:
            type: string
            description: Recorte dentro do tipo.
          required: false
        - in: query
          name: fact
          schema:
            type: string
            description: A medida, pelo nome do `listFactCatalog`.
          required: true
        - in: query
          name: measure
          schema:
            type: string
            enum:
              - value
              - delta
              - pct_change
              - min
              - max
              - avg
              - sum
              - count
            default: value
            description: "`value` ordena pelo último valor até `at`; `delta` pela variação
              absoluta e `pct_change` pela relativa, as duas entre `from` e
              `at`. `min`, `max`, `avg`, `sum` e `count` reduzem TODAS as
              observações da medida entre `since` e `at`, as duas pontas
              inclusive: exigem `since`, recusam `from`, devolvem `observations`
              na linha e datam `as_of` pela última observação da janela. `sum` é
              recusado onde a régua não sustenta a soma, como em
              `aggregateObjects`; `count` sai em `count`."
          required: false
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Teto da data-base do valor e vigência das relações. Com `since`,
              forma a janela aceita. Sem `since`, a cadência da medida define o
              piso; `meta.since`, `since_policy` e `as_of_range` informam o
              recorte efetivo. Verbo de estado no `rel` (`manages`, `audits`) é
              lido como vigente — a coorte é quem é hoje, o valor é o da data —
              e declarado em `meta.current_state_rels`.
          required: false
        - in: query
          name: from
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Ponta INICIAL. Obrigatória em `delta` e `pct_change`.
          required: false
        - in: query
          name: since_from
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Piso da data-base aceita na ponta inicial. Sem ele, o último valor
              anterior a `from` pode ser mais antigo que a janela pretendida.
              Confira `meta.as_of_from_range`.
          required: false
        - in: query
          name: order
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
            description: "`asc` lista os menores primeiro; com `delta`, é a maior queda."
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 20
            description: Linhas do ranking (1–200, default 20).
          required: false
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor de `meta.next_cursor` da página anterior. A ordem é estável,
              então a coorte inteira sai sem repetir nem pular linha.
          required: false
        - in: query
          name: expand
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Inclui em cada linha até três objetos ligados pelo verbo, com id,
              nome e chave pública. Para todos os vizinhos de um objeto, use
              `listObjectLinks`.
          required: false
        - in: query
          name: expand_direction
          schema:
            type: string
            enum:
              - out
              - in
            default: in
            description: "Lado do vizinho na aresta: `in` (default) é quem aponta para a
              linha, como o emissor de uma oferta."
          required: false
        - in: query
          name: rel
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Restringe a coorte a quem tem esta relação com `rel_to`. Sem ela, a
              coorte é o tipo inteiro.
          required: false
        - in: query
          name: rel_to
          schema:
            type: string
            description: "O outro lado da relação: o índice, o fundo, a empresa."
          required: false
        - in: query
          name: rel_direction
          schema:
            type: string
            enum:
              - out
              - in
            default: in
            description: "Lado da coorte na aresta. `in` (default): `rel_to` aponta para os
              membros, como o índice que contém papéis. `out`: os membros
              apontam para `rel_to`, como cedentes de um fundo."
          required: false
        - in: query
          name: since
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Data-base mínima aceita na ponta final. Sem ela, a cadência da
              medida define o piso relativo a `at` e `meta.stale_excluded` conta
              os objetos parados que ficaram fora. `meta.since` e `since_policy`
              informam o corte efetivo. Em `min`, `max`, `avg`, `sum` e `count`
              é o COMEÇO da janela agregada e passa a ser obrigatória.
          required: false
        - in: query
          name: exclude_out_of_prior
          schema:
            type: boolean
            description: Exclui valores fora da faixa plausível declarada para a medida
              ordenada. `meta.excluded_out_of_prior` informa quantos saíram e
              fica nulo quando não houve teste. A validação não examina o
              denominador de uma razão; para isso, filtre a medida de tamanho em
              `where`.
          required: false
        - in: query
          name: where
          schema:
            type: string
            description: "Condições separadas por vírgula, combinadas por E. Medidas usam
              `<medida><operador><número>`; `delta(x)` e `pct_change(x)` filtram
              variação e exigem `from`. O prefixo `<verbo>:<direção>.` corta
              pela medida do objeto do outro lado da aresta e resolve o filtro
              cruzado entre tipos numa chamada: `pl<10,issued:in.roe>0.15` é o
              papel barato cuja emissora é rentável. Propriedades usam `=` ou
              `!=`; `|` representa alternativas no mesmo campo e valores com
              vírgula devem estar entre aspas. Confira a unidade e a aresta
              atravessada em `meta.applied_where`. Objetos sem a medida não
              passam; em `!=`, objetos sem a propriedade passam."
          required: false
      summary: Filtra e ordena uma coorte por medidas
      description: >-
        Ordena uma coorte por uma medida e permite filtrá-la por outras em
        `where`; cada linha traz os valores usados nos cortes. `expand` inclui o
        objeto ligado indicado, evitando uma consulta adicional.


        Para períodos, `at` é o teto da data-base e `since` o piso. Em `delta` e
        `pct_change`, `since_from` limita a observação inicial. Use `delta` para
        medidas que podem cruzar zero e confira `unit` antes de comparar
        medidas.


        `measure=min|max|avg|sum|count` ordena pela redução de TODAS as
        observações entre `since` e `at`, e não por uma leitura: é como
        responder qual título teve a menor fração aceita nos leilões do mês.
        `since` é obrigatório nesses casos, `observations` diz quantos pontos
        entraram em cada linha e `exclude_out_of_prior` descarta a observação
        implausível antes de reduzir.


        Objetos sem valor nas pontas necessárias ficam fora; `cohort_size`
        informa o denominador e também o fim da paginação: siga
        `meta.next_cursor` até null para varrer a coorte, em vez de fatiá-la por
        faixa de valor no `where`. `as_of` e `as_of_from` mostram as
        competências efetivamente comparadas. Com `availability=unknown`, o
        recorte histórico usa somente a data-base; com `filed`, também respeita
        a data de publicação.
      x-domain: objects
  /v1/objects/table:
    get:
      responses:
        "200":
          description: A tabela, com a consulta que a produziu em `meta.query`
          content:
            application/json:
              schema:
                type: object
                properties:
                  schema:
                    type: object
                    properties:
                      columns:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            type:
                              type: string
                              enum:
                                - string
                                - number
                                - boolean
                                - date
                                - entity_id
                            role:
                              type: string
                              enum:
                                - identity
                                - label
                                - dimension
                                - time
                                - measure
                                - status
                              description: "`identity` é a chave do objeto; `label` é como exibi-lo;
                                `dimension` separa séries/barras; `time` é o
                                eixo x de série; `measure` é o número; `status`
                                é metadado da linha (data-base, competência)."
                            label:
                              type:
                                - string
                                - "null"
                              description: Rótulo em pt-BR para cabeçalho e eixo.
                            semantic:
                              type:
                                - string
                                - "null"
                              description: O conceito da medida (`concept` do catálogo), quando a coluna é
                                uma.
                            unit:
                              type:
                                - string
                                - "null"
                              enum:
                                - brl
                                - usd
                                - pct
                                - ratio
                                - x
                                - count
                                - points
                                - native
                                - null
                              description: A régua da coluna. Nula quando a tabela mistura réguas — e aí há
                                coluna `unit` por linha e aviso em
                                `meta.warnings`.
                            nullable:
                              type: boolean
                          required:
                            - name
                            - type
                            - role
                            - label
                            - semantic
                            - unit
                            - nullable
                      primary_key:
                        type: array
                        items:
                          type: string
                        description: As colunas que identificam uma linha.
                    required:
                      - columns
                      - primary_key
                  rows:
                    type: array
                    items:
                      type: array
                      items:
                        anyOf:
                          - type: string
                          - type: number
                          - type: boolean
                          - type: "null"
                    description: Na ordem de `schema.columns`.
                  meta:
                    type: object
                    properties:
                      ontology_version:
                        type: integer
                      query:
                        type: object
                        properties:
                          operation:
                            type: string
                            enum:
                              - resolveObject
                              - listObjects
                              - getObject
                              - getObjectFacts
                              - getObjectHistory
                              - getObjectProperties
                              - getObjectEvents
                              - getObjectEvidence
                              - listObjectLinks
                              - getObjectLinkHistory
                              - listGlobalLinks
                              - getObjectLinkStats
                              - getObjectCensus
                              - listObjectRelations
                              - listFactCatalog
                              - rankObjects
                              - aggregateObjects
                              - intersectObjects
                              - traverseObjectPath
                              - findObjectPaths
                              - getObjectTable
                          subject:
                            type: object
                            properties:
                              entity_id:
                                type: string
                                description: O id resolvido; é a chave.
                              label:
                                type: string
                                description: Como o usuário chamou o objeto. Só para exibir.
                            required:
                              - entity_id
                            description: Objeto endereçado nas operações por `{id}`. Ausente nas operações
                              de coorte.
                          input:
                            type: object
                            additionalProperties: {}
                            description: Parâmetros de query da operação, pelo nome do contrato.
                          description:
                            type: string
                            description: O que esta consulta responde, em uma frase.
                        required:
                          - operation
                          - input
                        description: A consulta que produziu esta tabela, reexecutável como veio.
                      as_of:
                        type:
                          - string
                          - "null"
                        description: A data-base mais recente entre as linhas.
                      count:
                        type: integer
                      warnings:
                        type: array
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                              enum:
                                - mixed_scales
                                - truncated
                                - series_error
                            message:
                              type: string
                          required:
                            - code
                            - message
                      lineage:
                        type: array
                        items:
                          type: object
                          properties:
                            source:
                              type:
                                - string
                                - "null"
                            lineage:
                              type:
                                - string
                                - "null"
                              description: A receita do número quando a fonte a publica por linha.
                          required:
                            - source
                            - lineage
                    required:
                      - ontology_version
                      - query
                      - as_of
                      - count
                      - warnings
                      - lineage
                required:
                  - schema
                  - rows
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectTable
      tags:
        - Objects
      parameters:
        - in: query
          name: operation
          schema:
            type: string
            enum:
              - getObjectHistory
              - rankObjects
              - getObjectFacts
              - aggregateObjects
            description: Operação com projeção tabular.
          required: true
        - in: query
          name: id
          schema:
            type: string
            description: Ids do sujeito, separados por vírgula. Obrigatório em
              `getObjectHistory` e `getObjectFacts`; ausente em `rankObjects` e
              `aggregateObjects`.
          required: false
        - in: query
          name: input
          schema:
            type: string
            default: "{}"
            description: 'Parâmetros de query da operação em JSON, pelo nome do contrato:
              `{"facts":"close","from":"2025-01-01"}`.'
          required: false
      summary: Converte uma consulta de objetos em tabela
      description: Executa `getObjectHistory`, `getObjectFacts`, `rankObjects` ou
        `aggregateObjects` e retorna `{ schema.columns, rows, meta }`. As
        colunas declaram tipo, papel e unidade; os valores não são recalculados.
        Passe os parâmetros da operação em `input`; `meta.query` devolve a
        consulta reexecutável. Lotes com unidades diferentes informam a unidade
        por linha e deixam a unidade da coluna nula.
      x-domain: objects
  /v1/objects/{id}:
    get:
      responses:
        "200":
          description: O objeto com apelidos e mapa de relações
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Determinístico na cunhagem (`pub_` é fonte pública) e congelado daí
                      em diante; código antigo continua resolvendo como apelido.
                      Fusão redireciona com `redirected_from`; cisão responde
                      409 com os sucessores.
                  redirected_from:
                    type:
                      - string
                      - "null"
                    description: Id pedido que saiu de circulação com sucessor único; este é o
                      objeto atual. Nulo no caso normal.
                  kind:
                    type: string
                    description: Tipo do objeto como o servidor o publica; `string`, não enum.
                      `getObjectCensus` lista os vigentes.
                  subkind:
                    type:
                      - string
                      - "null"
                    description: "Fundo: `fidc`, `fii`, `fip`, `fif`, `fiagro`, `fiim`, `etf`,
                      `fapi`, `funcine`. Instrumento: `debenture`,
                      `securitizado`, `bdr`, `coe`, `tesouro`,
                      `cota_fundo_fechado` (a cota negociada no balcão; o
                      sub-tipo do FUNDO que a emitiu continua sendo `fidc`,
                      `fii` ou `fip`). Emissão de securitização: `cri`, `cra`,
                      `ots`; `securitizado` é a série e `securitizacao` é a
                      oferta. Papel: `on`, `pn`, `unit`. Norma: `resolucao_cvm`,
                      `instrucao_cvm`, `deliberacao_cvm`, `oficio_circular`,
                      `resolucao_cmn`, `resolucao_bcb`, `lei`, `decreto`,
                      `medida_provisoria`. Prestador: `gestora`,
                      `administradora_fiduciaria`, `assessoria`,
                      `agencia_rating`; auditor e custodiante não têm subtipo e
                      aparecem pelas arestas `audits` e `custodies`. Nulo
                      significa não classificado pela fonte, como fundos
                      encerrados."
                  name:
                    type:
                      - string
                      - "null"
                  anchor_type:
                    type: string
                    description: A melhor chave de hoje, não a que originou o `id`. O `id` não muda
                      quando a âncora muda.
                  anchor_value:
                    type: string
                  has_ambiguous_key:
                    type: boolean
                    description: Alguma chave aponta para mais de um objeto.
                  keys:
                    type: array
                    items:
                      type: object
                      properties:
                        key_type:
                          type: string
                          description: Tipo de identificador como o servidor o publica; `string`, não
                            enum. `getObjectCensus` lista os vigentes.
                        key_value:
                          type: string
                        confidence:
                          type: string
                          enum:
                            - high
                            - low
                          description: "`low` indica chave ambígua, como código reaproveitado após
                            encerramento."
                        is_anchor:
                          type: boolean
                          description: A chave que define o `id` do objeto.
                        share_class:
                          type:
                            - string
                            - "null"
                          enum:
                            - ON
                            - PN
                            - UNIT
                            - COTA
                            - BDR
                            - null
                          description: "Só em chave de `ticker`: a classe do papel (PETR3 ON, PETR4 PN,
                            HGLG11 COTA). Nulo quando o código foge da convenção
                            da B3; ausente em chave que não é de negociação."
                      required:
                        - key_type
                        - key_value
                        - confidence
                        - is_anchor
                    description: "TODOS os identificadores do objeto, um por linha. Filtre por
                      `key_type` para o que antes vinha em campo próprio:
                      `cnpj`, `cd_cvm`, `isin`, `ticker`. A companhia não tem o
                      ticker como chave — os papéis dela são a aresta `issued`
                      na direção `out`."
                  links:
                    type: array
                    items:
                      type: object
                      properties:
                        rel:
                          type: string
                          description: Verbo da relação como o servidor o publica; `string`, não enum,
                            para que verbo novo não derrube a resposta.
                            `listObjectRelations` lista os vigentes.
                        direction:
                          type: string
                          enum:
                            - out
                            - in
                          description: "`out`: este objeto pratica o verbo; `in`: recebe."
                        shape:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        relationship_count:
                          type: integer
                          description: Objetos distintos do outro lado, no recorte que `shape` determina.
                            É o número a reportar.
                        assertion_count:
                          type: integer
                          description: Afirmações que sustentam essas relações, uma por (fonte, período
                            contíguo). Sempre maior ou igual a
                            `relationship_count`.
                        relationship_count_ever:
                          type: integer
                          description: Objetos distintos de todos os tempos. Em `snapshot` e `static`
                            responde quantos já se relacionaram.
                        count:
                          type: integer
                          description: "Depreciado: use `relationship_count`."
                        count_ever:
                          type: integer
                          description: "Depreciado: use `relationship_count_ever`."
                        as_of:
                          type:
                            - string
                            - "null"
                          description: Valor de `at` que reproduz `relationship_count`. Nulo significa
                            omitir `at`.
                        note:
                          type:
                            - string
                            - "null"
                          description: O que o verbo afirma e o que não afirma, do vocabulário.
                        domain_kinds:
                          type: array
                          items:
                            type: string
                          description: Tipos que podem praticar o verbo.
                        range_kinds:
                          type: array
                          items:
                            type: string
                          description: Tipos que podem receber o verbo.
                        traverse:
                          type: object
                          properties:
                            operation:
                              type: string
                              const: listObjectLinks
                            id:
                              type: string
                            rel:
                              type: string
                              description: Verbo da relação como o servidor o publica; `string`, não enum,
                                para que verbo novo não derrube a resposta.
                                `listObjectRelations` lista os vigentes.
                            direction:
                              type: string
                              enum:
                                - out
                                - in
                            at:
                              type:
                                - string
                                - "null"
                          required:
                            - operation
                            - id
                            - rel
                            - direction
                            - at
                          description: Argumentos prontos para `listObjectLinks`; `at=null` significa
                            omitir o parâmetro.
                      required:
                        - rel
                        - direction
                        - shape
                        - relationship_count
                        - assertion_count
                        - relationship_count_ever
                        - count
                        - count_ever
                        - as_of
                        - note
                        - domain_kinds
                        - range_kinds
                        - traverse
                    description: Mapa das relações que dá para atravessar.
                  aspects:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: "Nome do capítulo: quotes, indicators, dividends, documents."
                        function:
                          type: string
                          description: Função que a instância executa, estável entre tipos
                            (`market.corporate_events.list`,
                            `documents.company.list`). É a chave do registry em
                            `x-ontology.aspects`.
                        description:
                          type: string
                          description: O que o aspecto contém, com as convenções que valem.
                        grain:
                          type: string
                          enum:
                            - object
                            - paper
                          description: "`object`: uma resposta para o objeto inteiro; somar papéis
                            duplica. `paper`: varia por classe de ação; peça por
                            papel."
                        shape:
                          type: string
                          enum:
                            - series
                            - snapshot
                            - event
                            - static
                          description: "`series` é linha no tempo; `event`, ocorrências datadas;
                            `snapshot`, estado numa data; `static`, cadastro sem
                            tempo."
                        available:
                          type: boolean
                          description: "`true` quando há dado para este objeto; `false` quando o tipo tem
                            o capítulo e o objeto não tem dado observado (a
                            chamada responde 200 vazio). Capítulo que o tipo não
                            tem não aparece."
                        execute:
                          type: string
                          description: "A chamada canônica deste capítulo, pronta para copiar:
                            `executeFunction({ id, subject })`."
                      required:
                        - name
                        - function
                        - description
                        - grain
                        - shape
                        - available
                        - execute
                    description: Mapa dos capítulos do tipo, com a chamada de cada um e `available`
                      dizendo se este objeto tem dado. Capítulo que o tipo não
                      tem não aparece.
                  declared_facts:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        label:
                          type: string
                          description: Rótulo em pt-BR para eixo e legenda.
                        unit:
                          type: string
                          enum:
                            - brl
                            - usd
                            - pct
                            - ratio
                            - x
                            - count
                            - points
                            - native
                          description: "`ratio` é fração (0,08 é 8%) e `pct` é percentual (8,0 é 8%);
                            converta antes de comparar. `x` é múltiplo. `native`
                            é a unidade da própria série, declarada no catálogo
                            dela."
                        cadence:
                          type: string
                          enum:
                            - daily
                            - weekly
                            - monthly
                            - quarterly
                            - annual
                            - irregular
                          description: Frequência de publicação da fonte. `irregular` cobre papéis que não
                            negociam todo dia e séries sem calendário fixo. Não
                            é a janela coberta pelo número, que fica em
                            `axes.period`.
                        period:
                          type:
                            - string
                            - "null"
                        grain:
                          type: string
                          enum:
                            - object
                            - paper
                          description: "`object`: uma resposta para o objeto inteiro; somar papéis
                            duplica. `paper`: varia por classe de ação; peça por
                            papel."
                        series:
                          type:
                            - string
                            - "null"
                          description: Código negociado sob o qual a medida é observada, aceito em
                            `getObjectHistory?series=`. Nulo no objeto que é o
                            próprio papel.
                      required:
                        - name
                        - label
                        - unit
                        - cadence
                        - period
                        - grain
                        - series
                    description: "Medidas que este objeto declara, com unidade e janela: os nomes
                      aceitos em `facts` de `getObjectFacts` e
                      `getObjectHistory`. Declaração, não valor."
                required:
                  - id
                  - redirected_from
                  - kind
                  - subkind
                  - name
                  - anchor_type
                  - anchor_value
                  - has_ambiguous_key
                  - keys
                  - links
                  - aspects
                  - declared_facts
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObject
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificador canônico de UM objeto (`pub_…`). Esta operação lê um
            sujeito por chamada; vários ids separados por vírgula respondem 400.
            Para ler em lote, use `getObjectProperties`, `getObjectFacts` ou
            `getObjectHistory`.
          schema:
            type: string
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
      summary: Obtém um objeto e suas relações disponíveis
      description: Retorna a identidade, os identificadores em `keys` e um resumo das
        relações em `links`. IDs com um sucessor são redirecionados e preenchem
        `redirected_from`; uma cisão responde 409 com os sucessores. Use
        `resolve=exact` para ler literalmente um ramo que preservou o ID antigo.
      x-domain: objects
  /v1/objects/{id}/links:
    get:
      responses:
        "200":
          description: Página de arestas
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        rel:
                          type: string
                          description: Verbo da relação como o servidor o publica; `string`, não enum,
                            para que verbo novo não derrube a resposta.
                            `listObjectRelations` lista os vigentes.
                        shape:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        direction:
                          type: string
                          enum:
                            - out
                            - in
                        other_id:
                          type: string
                        other_kind:
                          type: string
                          description: Tipo do objeto como o servidor o publica; `string`, não enum.
                            `getObjectCensus` lista os vigentes.
                        other_subkind:
                          type:
                            - string
                            - "null"
                          description: Subtipo do outro lado (`debenture`, `fii`, `pn`), quando o tipo tem
                            subtipo.
                        other_name:
                          type:
                            - string
                            - "null"
                        other_code:
                          type:
                            - string
                            - "null"
                          description: "Código de negociação do outro lado, quando existe: ticker, código
                            ANBIMA da debênture, código da série. Diferente de
                            `other_key`, que é a chave de identidade."
                        other_key_type:
                          type:
                            - string
                            - "null"
                          description: "Tipo de `other_key`: `ticker`, `cnpj`, `isin`, `series_code`,
                            `offering_id`."
                        other_key:
                          type:
                            - string
                            - "null"
                          description: Chave pública do objeto relacionado; dispensa `resolveObject` por
                            aresta.
                        source:
                          type: string
                          description: Formulário que afirmou a relação. Duas fontes são duas afirmações,
                            não uma mais forte.
                        valid_from:
                          type:
                            - string
                            - "null"
                        valid_to:
                          type:
                            - string
                            - "null"
                        observations:
                          type: integer
                          description: Quantas vezes a fonte declarou a relação.
                        magnitude:
                          type:
                            - number
                            - "null"
                          description: Tamanho da relação. Com `at`, a última observação até a
                            competência; sem `at`, a última observação do
                            segmento, datada em `magnitude_as_of`. Para a série,
                            use `getObjectLinkHistory`. Nulo não é zero.
                        magnitude_as_of:
                          type:
                            - string
                            - "null"
                          description: Data da observação que sustenta `magnitude`. Confira que as datas
                            coincidem antes de somar linhas.
                        magnitude_unit:
                          type:
                            - string
                            - "null"
                          description: "`brl`, `share_pct`, `weight_pct`, `index_pct`, `ratio`."
                        quantity:
                          type:
                            - number
                            - "null"
                          description: "A OUTRA grandeza da mesma afirmação, nunca a mesma duas vezes:
                            onde `magnitude` é participação, aqui está o
                            absoluto (produção do país, quantidade teórica da
                            carteira do índice); onde `magnitude` é reais, aqui
                            está a participação (quanto o investidor representa
                            do PL do fundo investido). Nulo não é zero — em
                            `holds` de fundo em fundo o motivo está em
                            `weight_reason`; em `holds` de fundo em ação ou
                            debênture a quantidade de papéis não viaja na
                            aresta: está na carteira declarada,
                            `funds.holdings.latest` no fundo."
                        quantity_unit:
                          type:
                            - string
                            - "null"
                          description: "Unidade de `quantity`, do vocabulário declarado: `pct`
                            (participação), `shares` (quantidade teórica do
                            índice) e as unidades do USGS como a fonte as
                            publica — `metric_tons`, `thousand_metric_tons`,
                            `million_metric_tons`, `thousand_metric_dry_tons`,
                            `tons`, `kilograms`, `million_carats`,
                            `thousands_of_carats`, `million_cubic_meters`,
                            `million_liters`, `million_dollars`, `percent`.
                            Quilate e tonelada não se convertem: compare só
                            dentro da mesma unidade."
                        quantity_as_of:
                          type:
                            - string
                            - "null"
                          description: "Data que sustenta `quantity` quando ela é DIFERENTE de
                            `magnitude_as_of`: no fundo de fundos o peso divide
                            pelo PL do informe diário, que não é a competência
                            da carteira. Nula quando as duas grandezas vêm da
                            mesma data."
                        rank:
                          type:
                            - integer
                            - "null"
                          description: "A ordem que a FONTE declara, não ordenação da resposta: posição do
                            cedente no bloco do informe de FIDC, posição do país
                            no ranking de produção do ano. Empate compartilha a
                            posição."
                        event_type:
                          type:
                            - string
                            - "null"
                          enum:
                            - rename
                            - incorporation
                            - null
                          description: "`succeeded_by`: `rename` é troca de código 1:1; `incorporation` é
                            M&A, e a posição converte pelo `magnitude` (ratio)."
                        origin_block:
                          type:
                            - string
                            - "null"
                          enum:
                            - with_risk
                            - no_risk
                            - legacy
                            - null
                          description: "`assigned_to`: bloco do informe mensal de FIDC. A aresta é UMA por
                            (cedente, fundo) e traz o bloco da declaração de
                            MAIOR participação — o detalhe por bloco não viaja."
                        weight_reason:
                          type:
                            - string
                            - "null"
                          enum:
                            - sem_pl_no_informe
                            - peso_acima_do_cap
                            - null
                          description: "Por que `quantity` não existe em `holds` de fundo em fundo:
                            `sem_pl_no_informe` é investido sem patrimônio
                            publicado na competência; `peso_acima_do_cap` é
                            posição declarada acima de 1,5x o PL do investido,
                            recusada. Nunca zero por ausência."
                        risk_retained:
                          type:
                            - boolean
                            - "null"
                          description: "`assigned_to`: o cedente reteve o risco do recebível cedido, como
                            o informe declara."
                        series:
                          type:
                            - string
                            - "null"
                          description: "`rates`: a camada avaliada, como `classe:número:tranche:emissão`
                            (`senior:1::`, `mezzanine::I:`). Vazia quando a nota
                            é do sujeito inteiro. Sem o parâmetro `series` a
                            resposta traz uma camada por contraparte — sênior,
                            depois a nota do sujeito inteiro, depois a ação mais
                            recente —, e este campo diz qual. Não é identidade:
                            a camada não casa com a subclasse registrada do
                            fundo."
                        label:
                          type:
                            - string
                            - "null"
                          description: "`rates`: a nota como a agência a escreveu (`brAAA(sf)`, `AA+`), da
                            última ação da camada. `magnitude` é o notch da
                            mesma decisão e não reconstrói o rótulo, porque a
                            escala carrega sufixo de produto."
                        outlook:
                          type:
                            - string
                            - "null"
                          description: "`rates`: perspectiva da última ação (`stable`, `positive`,
                            `negative`, `developing`). Nula quando a fonte não a
                            afirma."
                        watch:
                          type:
                            - string
                            - "null"
                          description: "`rates`: aviso de revisão da última ação (`positive`, `negative`).
                            Nulo quando não há."
                        action:
                          type:
                            - string
                            - "null"
                          description: "`rates`: a última ação da camada (`assigned`, `affirmed`,
                            `upgraded`, `downgraded`, `withdrawn`,
                            `watch_placed`). `withdrawn` com `magnitude` nula é
                            nota retirada, não ausência de dado. As anteriores
                            estão em `getObjectLinkHistory`."
                        evidence:
                          type:
                            - number
                            - "null"
                          description: "Depreciado: use `magnitude`."
                        evidence_unit:
                          type:
                            - string
                            - "null"
                          description: "Depreciado: use `magnitude_unit`."
                        confidence:
                          type: string
                          enum:
                            - high
                            - medium
                            - low
                          description: "Confiança da afirmação: `high` quando a fonte é cadastral ou uma
                            competência a afirma com chave forte; `medium` para
                            extração revisada (as ações de rating); `low` quando
                            nenhuma afirmação passou do palpite."
                      required:
                        - rel
                        - shape
                        - direction
                        - other_id
                        - other_kind
                        - other_subkind
                        - other_name
                        - other_code
                        - other_key_type
                        - other_key
                        - source
                        - valid_from
                        - valid_to
                        - observations
                        - magnitude
                        - magnitude_as_of
                        - magnitude_unit
                        - quantity
                        - quantity_unit
                        - quantity_as_of
                        - rank
                        - event_type
                        - origin_block
                        - weight_reason
                        - risk_retained
                        - series
                        - label
                        - outlook
                        - watch
                        - action
                        - evidence
                        - evidence_unit
                        - confidence
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      as_of:
                        type:
                          - string
                          - "null"
                        description: Data efetivamente aplicada; verbo de retrato recua até a última
                          competência publicada (`last_valid_to` em
                          `listObjectRelations`). Nulo quando a consulta mistura
                          formas.
                      as_of_by_rel:
                        type: object
                        additionalProperties:
                          type:
                            - string
                            - "null"
                        description: "Data efetivamente aplicada a cada verbo quando a consulta prende
                          mais de um: em retrato pode ter recuado; em evento é o
                          teto do corte."
                      excluded_shapes:
                        type: array
                        items:
                          type: string
                          enum:
                            - event
                            - snapshot
                            - static
                            - interval
                          description: "`event`: aconteceu numa data e se acumula (emissão, sucessão); a
                            contagem é o total. `snapshot`: retrato por
                            competência que substitui o anterior (carteira de
                            fundo, de índice); a contagem é o último retrato.
                            `static`: o registro publica só o vigente (gestor,
                            custodiante, auditor, sócio). `interval`: a fonte
                            declara começo e fim (registro na CVM, distribuição
                            de oferta); `valid_to` nulo é aberto."
                        description: Formas removidas do conjunto pela data. `static` sai quando `at` é
                          passado e a consulta não prende um verbo, porque o
                          registro só publica o vigente.
                      coverage:
                        type: object
                        properties:
                          status:
                            type: string
                            enum:
                              - partial
                              - closed
                              - unknown
                              - inconsistent
                            description: "`partial` cobre parte do agregado; `closed` fecha dentro da
                              tolerância; `unknown` sem denominador;
                              `inconsistent` numerador incompatível com o
                              denominador."
                          as_of:
                            type:
                              - string
                              - "null"
                            description: Competência do retrato que a cobertura descreve. A listagem sem
                              `at` é acervo histórico e pode ter mais arestas.
                          denominator_brl:
                            type:
                              - number
                              - "null"
                            description: Agregado da folha autoritativa na competência.
                          covered_brl:
                            type:
                              - number
                              - "null"
                            description: Soma das magnitudes das arestas na mesma competência e no mesmo
                              `scope` do denominador.
                          ratio:
                            type:
                              - number
                              - "null"
                            description: Fração de 0 a 1. Nula em `unknown` e `inconsistent`.
                          excluded:
                            type: array
                            items:
                              type: object
                              properties:
                                category:
                                  type: string
                                value_brl:
                                  type: number
                              required:
                                - category
                                - value_brl
                            description: O que ficou fora, nas categorias da fonte, do maior para o menor.
                          source:
                            type: string
                          scope:
                            type: string
                            const: cda_blc4
                            description: Universo comum de numerador e denominador. `cda_blc4` mede apenas a
                              carteira BLC4.
                        required:
                          - status
                          - as_of
                          - denominator_brl
                          - covered_brl
                          - ratio
                          - excluded
                          - source
                          - scope
                    required:
                      - next_cursor
                      - count
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: listObjectLinks
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificador canônico de UM objeto (`pub_…`). Esta operação lê um
            sujeito por chamada; vários ids separados por vírgula respondem 400.
            Para ler em lote, use `getObjectProperties`, `getObjectFacts` ou
            `getObjectHistory`.
          schema:
            type: string
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
        - in: query
          name: total
          schema:
            type: string
            description: true = inclui `meta.total` (contagem do universo filtrado). Custa
              uma consulta a mais.
        - in: query
          name: rel
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Omitir = todas as relações desta direção.
        - in: query
          name: direction
          schema:
            type: string
            enum:
              - out
              - in
            default: out
            description: "`out`: este objeto pratica o verbo (fundo `holds` ativo); `in`:
              recebe (ativo é detido por fundo)."
        - in: query
          name: series
          schema:
            type: string
            description: "Camada avaliada, em `rates`: a classe de cota como
              `classe:número:tranche:emissão` (`senior:1::`, `mezzanine::I:`),
              ou vazio para a nota do sujeito inteiro. Sem ela, a resposta traz
              uma aresta por contraparte, na ordem sênior → sujeito inteiro →
              ação mais recente. Os valores existentes de um sujeito estão em
              `getObjectLinkHistory(rel=rates)`. Verbo sem camada ignora o
              parâmetro."
        - in: query
          name: other_kind
          schema:
            type: string
            enum:
              - company
              - equity_security
              - fund
              - service_provider
              - instrument
              - index
              - crypto_asset
              - commodity
              - country
              - indicator
              - data_series
              - offering
              - fund_share_class
              - market_event
              - role
              - sector
              - securitization
              - norm
              - person
            description: Recorta pelo TIPO da contraparte, antes da paginação e do `total`.
              Um cedente pratica `assigned_to` contra série de CRI e contra FIDC
              no mesmo verbo — `other_kind=fund` responde só o segundo grupo.
        - in: query
          name: other_subkind
          schema:
            type: string
            description: Recorta pelo SUBTIPO da contraparte (`fidc` em vez de `fund`,
              `cota_fundo_fechado` em vez de `instrument`).
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Corte temporal (AAAA-MM-DD). Sem `at`, usa o acervo histórico.
              Conforme o `shape` de `listObjectRelations`, `event` acumula até a
              data, `snapshot` escolhe o retrato aplicável e `static` pode ser
              recusada por não afirmar vigência passada.
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
      summary: Lista relações de um objeto
      description: >-
        Retorna uma linha por afirmação, com a contraparte resolvida. A mesma
        relação pode aparecer por mais de uma fonte ou período; conte objetos
        por `other_id`. `magnitude` nula significa não publicada, não zero. A
        ordem é `magnitude` decrescente, portanto `limit=5` já produz o top 5.
        Com `at`, usa a última observação válida até a data; sem `at`, inclui
        relações históricas e a `magnitude` de cada aresta é a da ÚLTIMA
        observação dela (`magnitude_as_of` diz qual), não um máximo nem uma soma
        do período — em `produces`, o país cuja última safra é anterior à mais
        recente do verbo sai com magnitude nula.


        Em `rates` a aresta é por CAMADA avaliada: um FIDC tem uma nota por
        classe de cota. Sem `series`, a resposta traz a camada default de cada
        contraparte (sênior, depois a nota do sujeito inteiro, depois a ação
        mais recente) e `series` diz qual saiu; com `series`, apenas aquela
        camada. Por isso a contagem aqui pode ser menor que `assertion_count` de
        `getObjectLinkStats`, que conta todas as camadas.


        `other_kind` e `other_subkind` recortam pelo OUTRO lado da aresta, antes
        da paginação e do `total`: um cedente com 331 arestas `assigned_to`
        exigia cinco páginas para achar o FIDC entre as séries de CRI. Com o
        recorte, `coverage` sai do `meta` — a fração é do verbo inteiro contra a
        folha autoritativa e não descreve a fatia.
      x-domain: objects
  /v1/objects/{id}/links/history:
    get:
      responses:
        "200":
          description: Página de observações da relação
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/EntityLinkObservationRow"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                    required:
                      - next_cursor
                      - count
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectLinkHistory
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificador canônico de UM objeto (`pub_…`). Esta operação lê um
            sujeito por chamada; vários ids separados por vírgula respondem 400.
            Para ler em lote, use `getObjectProperties`, `getObjectFacts` ou
            `getObjectHistory`.
          schema:
            type: string
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
          required: false
        - in: query
          name: rel
          schema:
            type: string
            enum:
              - issued
              - distributes
              - tokenized_as
              - registered_as
              - assigned_to
              - owes_under
              - holds
              - manages
              - administers
              - custodies
              - audits
              - same_owner
              - shareholder_of
              - indexed_to
              - rates
              - mentions
              - measures
              - forecasts
              - contains
              - member_of
              - exposed_to_issuer
              - succeeded_by
              - produces
              - covers
              - coordinates
              - offers
              - exposed_to_sector
              - regulated_by
              - amends
              - revokes
              - serves_on
            description: Relação snapshot cuja magnitude será lida competência a
              competência.
          required: true
        - in: query
          name: direction
          schema:
            type: string
            enum:
              - out
              - in
            default: out
            description: "Sentido da aresta a partir deste objeto: out = ele pratica o
              verbo; in = recebe."
          required: false
        - in: query
          name: other_id
          schema:
            type: string
            description: Prende o outro lado a um objeto específico.
          required: false
        - in: query
          name: source
          schema:
            type: string
            description: Prende a afirmação a uma fonte específica.
          required: false
        - in: query
          name: from
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Início do período (AAAA-MM-DD, inclusive).
          required: false
        - in: query
          name: to
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Fim do período (AAAA-MM-DD, inclusive).
          required: false
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
          required: false
      summary: Histórico das observações de uma relação
      description: "Retorna uma linha por observação da relação, mais recente
        primeiro: em `snapshot`, uma por competência com a magnitude; em `event`
        (como `rates`), uma por decisão datada, com rótulo, perspectiva, ação e
        recorte de série. `static` não tem série. `magnitude` nula numa
        observação é vínculo observado sem número (`exposed_to_issuer` responde
        COM QUEM, nunca QUANTO); competência sem observação é competência sem
        vínculo declarado, não zero."
      x-domain: objects
  /v1/objects/{id}/evidence:
    get:
      responses:
        "200":
          description: Página de trechos com proveniência
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/EntityEvidence"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      uncovered_reason:
                        type: string
                        description: Presente só quando a lista está vazia porque o objeto não tem
                          cd_cvm, CNPJ, ISIN nem ticker, as chaves que ligam
                          documento a objeto. Significa ausência de caminho, não
                          de documento.
                    required:
                      - next_cursor
                      - count
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectEvidence
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificador canônico de UM objeto (`pub_…`). Esta operação lê um
            sujeito por chamada; vários ids separados por vírgula respondem 400.
            Para ler em lote, use `getObjectProperties`, `getObjectFacts` ou
            `getObjectHistory`.
          schema:
            type: string
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
        - in: query
          name: order
          schema:
            type: string
            enum:
              - newest
              - oldest
            default: newest
            description: "`newest` (default): o mais recente ingerido primeiro. `oldest`: da
              data de referência mais antiga para a mais nova — a borda do
              acervo é a primeira linha, sem paginar tudo."
        - in: query
          name: from
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Data de referência mínima do documento.
        - in: query
          name: to
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Data de referência máxima do documento.
        - in: query
          name: category
          schema:
            type: string
            description: Recorte pelo tipo do documento, por trecho do nome e sem
              diferenciar caixa (`regulamento`, `fato relevante`, `termo de
              securitiza`).
        - in: query
          name: heading
          schema:
            type: string
            description: Recorte pela seção do documento, por trecho do título (`garantias`,
              `cascata`). Documentos sem estrutura reconhecida não têm seção e
              respondem vazio.
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
      summary: Lista trechos de documentos que sustentam o objeto
      description: >-
        Retorna trechos de documentos associados ao objeto, com protocolo, fonte
        e páginas. `excerpt` preserva o texto do documento. A associação prova
        que o documento pertence ao objeto; não prova, sozinha, uma relação ou
        medida específica. Para relações, consulte `source` na própria aresta.


        Os resultados seguem a ordem de entrada no acervo, do mais recente para
        o mais antigo, e podem ser recortados por `from`/`to`. Resposta vazia
        significa que não há evidência indexada para o recorte, não que a
        afirmação investigada seja falsa.
      x-domain: objects
  /v1/objects/{id}/properties:
    get:
      responses:
        "200":
          description: As propriedades declaradas do objeto
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Nome canônico da propriedade, estável entre tipos.
                        value:
                          type: string
                          description: Valor como texto, preservado da fonte; booleano vem como
                            `"true"`/`"false"`.
                        description:
                          type: string
                          description: O que a propriedade significa.
                        source:
                          type: string
                          description: Cadastro de origem do valor.
                        as_of:
                          type:
                            - string
                            - "null"
                          description: Competência da propriedade. Nulo quando a fonte não publica
                            vintage.
                        vocabulary:
                          type:
                            - array
                            - "null"
                          items:
                            type: string
                          description: Valores possíveis quando a fonte tem lista fechada. `null` quando a
                            lista é aberta ou não declarada.
                        entity_id:
                          type: string
                          description: O id resolvido a que a propriedade pertence.
                      required:
                        - name
                        - value
                        - description
                        - source
                        - as_of
                        - vocabulary
                        - entity_id
                    description: Só propriedades com valor; nula não vira linha.
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      subjects:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: O id como foi pedido.
                            resolved_id:
                              type:
                                - string
                                - "null"
                              description: O id que respondeu; difere de `id` numa fusão. Nulo quando nada
                                respondeu.
                            redirected_from:
                              type:
                                - string
                                - "null"
                            status:
                              type: string
                              enum:
                                - ok
                                - not_found
                                - split
                                - no_data
                                - unknown_fact
                              description: "`ok` leu; `not_found` o id não existe; `split` cindido, veja
                                `successors`; `no_data` o objeto declara a
                                medida e a fonte não publicou; `unknown_fact`
                                nenhuma das medidas pedidas se aplica e `reason`
                                lista as que existem. Medida parcialmente
                                desconhecida mantém `ok` e o erro vai no item."
                            reason:
                              type:
                                - string
                                - "null"
                              description: Por que não veio dado. Nulo quando `ok`.
                            successors:
                              type: array
                              items:
                                type: string
                              description: "Só em `split`: os objetos que herdaram a identidade."
                          required:
                            - id
                            - resolved_id
                            - redirected_from
                            - status
                            - reason
                        description: Um por id pedido, na ordem pedida; `no_data` traz o motivo do
                          vazio.
                    required:
                      - next_cursor
                      - count
                      - subjects
                  uncovered_reason:
                    type: string
                    description: Presente só quando `data` é vazio. Distingue recorte sem folha de
                      propriedades de folha existente sem valores declarados
                      para o objeto.
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectProperties
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificadores canônicos (`pub_…`), um ou vários separados por
            vírgula (até 50). Cada linha da resposta traz `entity_id`, e
            `meta.subjects` informa o status de cada id pedido.
          schema:
            type: string
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
      summary: Obtém propriedades textuais de um ou vários objetos
      description: >-
        Retorna propriedades textuais de até 50 objetos, com o `entity_id` em
        cada linha e o resultado de cada id em `meta.subjects`. Propriedades
        descrevem o objeto; números ficam em `getObjectFacts` e ligações com
        outros objetos em `listObjectLinks`.


        `vocabulary` lista valores possíveis quando a fonte possui domínio
        fechado; quando nulo, não assuma que os valores observados formam a
        lista completa. Valores são preservados como texto da fonte.
        Propriedades nulas não geram linha: ausência significa não declarado,
        não uma resposta negativa.
      x-domain: objects
  /v1/objects/{id}/facts:
    get:
      responses:
        "200":
          description: Medidas com valor, mais recentes primeiro
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Identificador estável da medida; use em `facts` para pedir a série.
                        label:
                          type: string
                          description: Rótulo em pt-BR para eixo e legenda, sem unidade.
                        series:
                          type:
                            - string
                            - "null"
                          description: Código negociado sob o qual a medida foi observada, quando o objeto
                            tem vários (papéis de uma companhia, códigos de um
                            fundo). Nulo quando a medida é do objeto inteiro.
                        value:
                          type: number
                        unit:
                          type: string
                          enum:
                            - brl
                            - usd
                            - pct
                            - ratio
                            - x
                            - count
                            - points
                            - native
                          description: "`ratio` é fração (0,08 é 8%) e `pct` é percentual (8,0 é 8%);
                            converta antes de comparar. `x` é múltiplo. `native`
                            é a unidade da própria série, declarada no catálogo
                            dela."
                        as_of:
                          type: string
                          description: Data do registro que produziu o valor. Cadências diferentes têm
                            datas diferentes no mesmo objeto.
                        statement_date:
                          type:
                            - string
                            - "null"
                          description: Competência a que o número se refere, quando difere de `as_of`.
                            Múltiplos de preço são reprecificados todo dia;
                            margens e retornos repetem o valor do trimestre.
                            Para datar um fundamento, cite este campo.
                        available_at:
                          type:
                            - string
                            - "null"
                          description: "Data em que o número ficou público. Nulo quando a fonte não
                            publica entrega (`availability: unknown`)."
                        availability:
                          type: string
                          enum:
                            - filed
                            - unknown
                          description: "`filed`: a fonte publica data de entrega, `available_at` vem
                            preenchido e o corte por `at` é point-in-time
                            completo. `unknown`: o corte usa apenas a data-base
                            e ignora o atraso de divulgação."
                        cadence:
                          type: string
                          enum:
                            - daily
                            - weekly
                            - monthly
                            - quarterly
                            - annual
                            - irregular
                          description: Frequência de publicação da fonte. `irregular` cobre papéis que não
                            negociam todo dia e séries sem calendário fixo. Não
                            é a janela coberta pelo número, que fica em
                            `axes.period`.
                        grain:
                          type: string
                          enum:
                            - object
                            - paper
                          description: "`object`: uma resposta para o objeto inteiro; somar papéis
                            duplica. `paper`: varia por classe de ação; peça por
                            papel."
                        source:
                          type: string
                          description: Formulário ou conjunto de dados que publicou o número.
                        lineage:
                          type:
                            - string
                            - "null"
                          description: Composição do número quando a fonte a publica por registro, como
                            `sgs:432;focus:inflacao_12m/ipca`. Nulo quando a
                            procedência é só o `source`.
                        provenance:
                          oneOf:
                            - $ref: "#/components/schemas/PriceProvenance"
                            - type: "null"
                          description: A procedência do ajuste, na linha que produziu o valor. Presente
                            nas medidas de preço cuja fonte declara o ajuste;
                            nula nas demais.
                        description:
                          type: string
                        out_of_prior:
                          type:
                            - boolean
                            - "null"
                          description: "`true` quando o valor está fora da faixa plausível declarada
                            (`expected_range` em `listFactCatalog`); pode ser
                            erro de unidade na fonte ou extremo real. `null`
                            quando a medida não declara faixa."
                        axes:
                          $ref: "#/components/schemas/FactAxes"
                          description: Dimensão, escala, janela e faixa plausível da medida. Nulo apenas
                            em `data_series`, onde a régua é da série e vem do
                            catálogo dela.
                        entity_id:
                          type: string
                          description: O id resolvido a que a medida pertence.
                      required:
                        - name
                        - label
                        - series
                        - value
                        - unit
                        - as_of
                        - statement_date
                        - available_at
                        - availability
                        - cadence
                        - grain
                        - source
                        - lineage
                        - provenance
                        - description
                        - out_of_prior
                        - axes
                        - entity_id
                    description: Só medidas com valor; nula não entra.
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      subjects:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: O id como foi pedido.
                            resolved_id:
                              type:
                                - string
                                - "null"
                              description: O id que respondeu; difere de `id` numa fusão. Nulo quando nada
                                respondeu.
                            redirected_from:
                              type:
                                - string
                                - "null"
                            status:
                              type: string
                              enum:
                                - ok
                                - not_found
                                - split
                                - no_data
                                - unknown_fact
                              description: "`ok` leu; `not_found` o id não existe; `split` cindido, veja
                                `successors`; `no_data` o objeto declara a
                                medida e a fonte não publicou; `unknown_fact`
                                nenhuma das medidas pedidas se aplica e `reason`
                                lista as que existem. Medida parcialmente
                                desconhecida mantém `ok` e o erro vai no item."
                            reason:
                              type:
                                - string
                                - "null"
                              description: Por que não veio dado. Nulo quando `ok`.
                            successors:
                              type: array
                              items:
                                type: string
                              description: "Só em `split`: os objetos que herdaram a identidade."
                          required:
                            - id
                            - resolved_id
                            - redirected_from
                            - status
                            - reason
                        description: Um por id pedido, na ordem pedida. `status` e `reason` explicam uma
                          lista vazia.
                    required:
                      - next_cursor
                      - count
                      - subjects
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectFacts
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificadores canônicos (`pub_…`), um ou vários separados por
            vírgula (até 50). Cada linha da resposta traz `entity_id`, e
            `meta.subjects` informa o status de cada id pedido.
          schema:
            type: string
        - in: query
          name: at
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: "Corte point-in-time (AAAA-MM-DD): o último valor já público
              naquele dia."
        - in: query
          name: facts
          schema:
            type: string
            description: Nomes de medida separados por vírgula (até 10), como
              `margem_ebit,roe`. Sem ele, todas.
        - in: query
          name: series
          schema:
            type: string
            description: "Qualificador da medida dentro do objeto: a classe de ação
              (`PETR4`), quando a medida é por papel, ou o escopo contábil da
              demonstração (`consolidado` | `individual`). Sem ele, a
              demonstração responde o consolidado, que é o que o contrato
              promete."
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
      summary: Obtém as medidas mais recentes de um ou vários objetos
      description: >-
        Retorna as medidas mais recentes de até 50 objetos; `facts` pode
        selecionar até 10 medidas. Cada linha traz `entity_id`, e
        `meta.subjects` informa ids inexistentes, divididos ou sem dados sem
        reduzir o lote em silêncio.


        Confira `unit`, escala e `as_of` de cada medida: frequências e
        datas-base podem diferir na mesma resposta. `series` identifica o
        recorte da medida — a classe do papel, ou o escopo contábil da
        demonstração (`consolidado` por default, `individual` quando pedido em
        `series`). Para a série temporal, use `getObjectHistory`.


        Com `at`, medidas com `availability=filed` respeitam data-base e
        publicação; quando `availability=unknown`, o corte considera apenas a
        data-base e não constitui um point-in-time completo.
      x-domain: objects
  /v1/objects/{id}/history:
    get:
      responses:
        "200":
          description: As séries, cada uma em ordem cronológica
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        entity_id:
                          type: string
                          description: O id resolvido a que a série pertence.
                        fact:
                          type: string
                        label:
                          type:
                            - string
                            - "null"
                          description: Rótulo em pt-BR para eixo e legenda. Nulo quando a série falhou.
                        axes:
                          oneOf:
                            - $ref: "#/components/schemas/FactAxes"
                            - type: "null"
                          description: Eixos declarados da medida. Séries com `axes` diferentes não cabem
                            no mesmo eixo; `meta.warnings` avisa.
                        series:
                          type:
                            - string
                            - "null"
                          description: Código negociado que respondeu, quando a medida tem mais de uma
                            instância no objeto. Nunca some instâncias.
                        unit:
                          type:
                            - string
                            - "null"
                          enum:
                            - brl
                            - usd
                            - pct
                            - ratio
                            - x
                            - count
                            - points
                            - native
                            - null
                          description: "`ratio` é fração (0,08 é 8%) e `pct` é percentual (8,0 é 8%);
                            converta antes de comparar. `x` é múltiplo. `native`
                            é a unidade da própria série, declarada no catálogo
                            dela."
                        cadence:
                          type:
                            - string
                            - "null"
                          enum:
                            - daily
                            - weekly
                            - monthly
                            - quarterly
                            - annual
                            - irregular
                            - null
                          description: Frequência de publicação da fonte. `irregular` cobre papéis que não
                            negociam todo dia e séries sem calendário fixo. Não
                            é a janela coberta pelo número, que fica em
                            `axes.period`.
                        grain:
                          type:
                            - string
                            - "null"
                          enum:
                            - object
                            - paper
                            - null
                          description: "`object`: uma resposta para o objeto inteiro; somar papéis
                            duplica. `paper`: varia por classe de ação; peça por
                            papel."
                        source:
                          type:
                            - string
                            - "null"
                        lineage:
                          type:
                            - string
                            - "null"
                          description: Composição do número quando a fonte a publica por linha, como em
                            `getObjectFacts`.
                        availability:
                          type:
                            - string
                            - "null"
                          enum:
                            - filed
                            - unknown
                            - null
                          description: "`from` e `to` recortam pela data-base. Este campo diz se
                            `getObjectFacts?at=` é point-in-time completo para a
                            medida."
                        description:
                          type:
                            - string
                            - "null"
                        provenance:
                          oneOf:
                            - $ref: "#/components/schemas/PriceProvenance"
                            - type: "null"
                          description: "A procedência do ajuste, resumida sobre os pontos DESTA janela:
                            `adjust_quality` é a pior entre eles, então mudar
                            `from`/`to` pode mudar a resposta. Presente nas
                            séries de preço cuja fonte declara o ajuste; nula
                            nas demais."
                        points:
                          type: array
                          items:
                            type: object
                            properties:
                              date:
                                type: string
                                description: "Data-base do ponto: a data da avaliação (pregão) em medida de
                                  mercado, a competência em medida de
                                  demonstração."
                              value:
                                type: number
                              statement_date:
                                type: string
                                description: Competência do balanço (fim de trimestre) que sustenta o ponto,
                                  presente nas medidas de demonstração —
                                  indicadores TTM são datados pelo pregão em
                                  `date`. Não deduza o trimestre de `date`.
                            required:
                              - date
                              - value
                          description: Em ordem cronológica. `limit` mantém os pontos mais recentes.
                        count:
                          type: integer
                        first_date:
                          type:
                            - string
                            - "null"
                          description: Primeira data-base DA PÁGINA servida (depois de `from`/`to` e
                            `limit`).
                        last_date:
                          type:
                            - string
                            - "null"
                          description: Última data-base DA PÁGINA servida.
                        available_from:
                          type:
                            - string
                            - "null"
                          description: Primeira data-base com valor na série INTEIRA, ignorando
                            `from`/`to` e `limit`. É onde a série começa; não
                            pagine para descobrir.
                        available_to:
                          type:
                            - string
                            - "null"
                          description: Última data-base com valor na série inteira, ignorando a janela
                            pedida.
                        truncated:
                          type: boolean
                          description: "`limit` cortou pontos dentro da janela pedida. Peça de novo com
                            `to` anterior a `first_date` para o restante."
                        transform:
                          type:
                            - object
                            - "null"
                          properties:
                            name:
                              type: string
                              enum:
                                - sum_12m
                                - ytd
                                - compound_12m
                                - compound_ytd
                                - mean_3m
                                - mean_12m
                                - pct_change
                                - diff
                              description: A transformação aplicada.
                            window:
                              type: string
                              description: "A janela de cada ponto: `12m` (t − 12 meses, t], `ytd` (1º de
                                janeiro do ano de t, t], `3m`, ou `previous` (o
                                ponto anterior)."
                            points_used:
                              type:
                                - integer
                                - "null"
                              description: Quantas observações da série crua alimentaram os pontos devolvidos.
                                Nulo quando a resposta é a série publicada pela
                                fonte.
                            served_from:
                              type:
                                - string
                                - "null"
                              description: Quando a fonte já publica o acumulado (IPCA 12m da 433 é a 13522),
                                a série servida é a dela e este campo diz qual;
                                a conta nossa só entra onde a fonte não publica.
                          required:
                            - name
                            - window
                            - points_used
                            - served_from
                          description: Presente quando `transform` foi pedido e aceito; `axes` e `points`
                            descrevem o valor transformado. Ponto cuja janela a
                            série não cobre é omitido, não zerado.
                        error:
                          type:
                            - string
                            - "null"
                          description: "Por que a série veio vazia: medida inexistente para o objeto (com
                            a lista das que existem), objeto sem resposta, ou
                            `transform` recusado pela classe `aggregation` da
                            série (com o motivo e as aceitas). Nulo em série
                            válida, mesmo sem pontos na janela."
                      required:
                        - entity_id
                        - fact
                        - label
                        - axes
                        - series
                        - unit
                        - cadence
                        - grain
                        - source
                        - lineage
                        - availability
                        - description
                        - provenance
                        - points
                        - count
                        - first_date
                        - last_date
                        - available_from
                        - available_to
                        - truncated
                        - transform
                        - error
                    description: Uma série por (objeto, medida, série), na ordem pedida. Medida por
                      papel numa companhia com vários papéis e sem `series` vem
                      uma vez por papel, nunca somada.
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      subjects:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: O id como foi pedido.
                            resolved_id:
                              type:
                                - string
                                - "null"
                              description: O id que respondeu; difere de `id` numa fusão. Nulo quando nada
                                respondeu.
                            redirected_from:
                              type:
                                - string
                                - "null"
                            status:
                              type: string
                              enum:
                                - ok
                                - not_found
                                - split
                                - no_data
                                - unknown_fact
                              description: "`ok` leu; `not_found` o id não existe; `split` cindido, veja
                                `successors`; `no_data` o objeto declara a
                                medida e a fonte não publicou; `unknown_fact`
                                nenhuma das medidas pedidas se aplica e `reason`
                                lista as que existem. Medida parcialmente
                                desconhecida mantém `ok` e o erro vai no item."
                            reason:
                              type:
                                - string
                                - "null"
                              description: Por que não veio dado. Nulo quando `ok`.
                            successors:
                              type: array
                              items:
                                type: string
                              description: "Só em `split`: os objetos que herdaram a identidade."
                          required:
                            - id
                            - resolved_id
                            - redirected_from
                            - status
                            - reason
                        description: Um por id pedido, na ordem pedida.
                      truncated:
                        type: boolean
                        description: Alguma série do lote foi cortada por `limit`.
                      warnings:
                        type: array
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                              enum:
                                - mixed_scales
                              description: "`mixed_scales`: as séries listadas têm dimensão ou escala
                                diferentes."
                            message:
                              type: string
                            series:
                              type: array
                              items:
                                type: object
                                properties:
                                  entity_id:
                                    type: string
                                  fact:
                                    type: string
                                required:
                                  - entity_id
                                  - fact
                              description: As séries envolvidas, na ordem da resposta.
                          required:
                            - code
                            - message
                            - series
                        description: Vazio quando todas as séries cabem no mesmo eixo.
                    required:
                      - next_cursor
                      - count
                      - subjects
                      - truncated
                      - warnings
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectHistory
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificadores canônicos (`pub_…`), um ou vários separados por
            vírgula (até 50). Cada linha da resposta traz `entity_id`, e
            `meta.subjects` informa o status de cada id pedido.
          schema:
            type: string
        - in: query
          name: facts
          schema:
            type: string
            description: Nomes de medida separados por vírgula (até 10), como em
              `getObjectFacts`.
          required: true
        - in: query
          name: series
          schema:
            type: string
            description: "Qualificador da medida dentro do objeto: a classe de ação
              (`PETR4`), quando a medida é por papel, ou o escopo contábil da
              demonstração (`consolidado` | `individual`). Sem ele, a
              demonstração responde o consolidado, que é o que o contrato
              promete."
          required: false
        - in: query
          name: from
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Início do período (AAAA-MM-DD, inclusive).
          required: false
        - in: query
          name: to
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Fim do período (AAAA-MM-DD, inclusive).
          required: false
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 2000
            default: 500
            description: Pontos mais recentes por série (1–2000, default 500).
          required: false
        - in: query
          name: transform
          schema:
            type: string
            enum:
              - sum_12m
              - ytd
              - compound_12m
              - compound_ytd
              - mean_3m
              - mean_12m
              - pct_change
              - diff
            description: "Transformação calculada sobre a série, guardada pela classe
              `axes.aggregation`: `sum_12m` e `ytd` somam fluxos; `compound_12m`
              e `compound_ytd` compõem variações percentuais (IPCA em 12 meses);
              `mean_3m` e `mean_12m` tiram a média; `pct_change` é a variação %
              contra o ponto anterior (níveis e fluxos); `diff` é a diferença
              contra o ponto anterior, em p.p. para taxas. Classe que não
              sustenta a conta responde `error` na série com o motivo e as
              aceitas. Quando a fonte já publica o acumulado, a série servida é
              a dela (`transform.served_from`). Janelas por calendário; ponto
              com janela descoberta é omitido."
          required: false
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
          required: false
      summary: Obtém séries de medidas de um ou vários objetos
      description: Aceita até 50 IDs e 10 medidas separados por vírgula; retorna uma
        série por par objeto-medida. `meta.subjects` informa IDs ausentes ou sem
        dados, e uma medida incompatível retorna `error`, não série vazia.
        `series` escolhe o recorte — a classe do papel, ou o escopo contábil da
        demonstração (`consolidado` | `individual`); sem ela, `meta.series`
        informa a usada. `limit` seleciona os pontos mais recentes. O limite
        total é 100 séries e 100.000 pontos; excesso responde 422. `transform`
        calcula acumulados (`compound_12m`, `sum_12m`, `ytd`), médias e
        variações sobre a série, guardado pela classe `axes.aggregation` que a
        série declara; `transform.served_from` diz quando a resposta é a série
        que a fonte já publica.
      x-domain: objects
  /v1/objects/{id}/events:
    get:
      responses:
        "200":
          description: Página de eventos do objeto
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/PublicMarketEvent"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                    required:
                      - next_cursor
                      - count
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getObjectEvents
      tags:
        - Objects
      parameters:
        - name: id
          in: path
          required: true
          description: Identificador canônico de UM objeto (`pub_…`). Esta operação lê um
            sujeito por chamada; vários ids separados por vírgula respondem 400.
            Para ler em lote, use `getObjectProperties`, `getObjectFacts` ou
            `getObjectHistory`.
          schema:
            type: string
        - in: query
          name: cursor
          schema:
            type: string
            description: Cursor opaco de `meta.next_cursor` da página anterior; omita na
              primeira página.
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
            description: Itens por página (1–1000, default 100).
        - in: query
          name: total
          schema:
            type: string
            description: true = inclui `meta.total` (contagem do universo filtrado). Custa
              uma consulta a mais.
        - in: query
          name: from
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Início do período (AAAA-MM-DD, inclusive).
        - in: query
          name: to
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
            description: Fim do período (AAAA-MM-DD, inclusive).
        - in: query
          name: layer
          schema:
            type: string
            description: "`estrutural`, `setorial` ou `corporativa`."
        - in: query
          name: category
          schema:
            type: string
            description: "`macro`, `politica`, `internacional`, `commodities`, `corporate`,
              `fii`, `cripto`, `mercado` ou `outros`."
        - in: query
          name: type
          schema:
            type: string
            enum:
              - market_event
              - renamed
            description: "`market_event` (ledger editorial) ou `renamed` (troca de código de
              negociação). Ausente = os dois."
        - in: query
          name: resolve
          schema:
            type: string
            enum:
              - auto
              - exact
            default: auto
            description: "Como interpretar o `id`: `auto` segue fusões e, em cisões,
              responde 409 com os sucessores; `exact` lê literalmente o objeto
              desse id. Use `exact` para acessar o ramo de uma cisão que
              preservou o identificador original ou para desativar o
              redirecionamento automático."
      summary: Lista eventos associados a um objeto
      description: >-
        Retorna eventos do emissor associados por todos os seus tickers, sem
        duplicar um evento marcado com mais de um papel. A cobertura depende
        principalmente de ticker; lista vazia para objeto sem ticker não prova
        ausência de eventos. Use `listMarketEvents` para o ledger inteiro e
        `listCorporateEvents` para eventos societários.


        Duas fontes na mesma página, separadas por `type`. `market_event` é o
        ledger editorial — o único com `score`, detectores, thread e fontes.
        `renamed` é a TROCA DE CÓDIGO de negociação do papel, com o código
        anterior e o novo em `details`: ela não é uma ligação porque as duas
        pontas são o mesmo objeto, então `listObjectLinks(rel=succeeded_by)`
        responde só as incorporações e a renomeação sai aqui.
      x-domain: objects
  /v1/functions:
    get:
      responses:
        "200":
          description: Descritores ranqueados
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/CapabilityDescriptor"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type: "null"
                      count:
                        type: integer
                      total:
                        type: integer
                      hint:
                        type: string
                        description: "Presente quando nada casou: por onde responder em vez de insistir
                          na busca."
                    required:
                      - next_cursor
                      - count
                      - total
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: listFunctions
      tags:
        - Functions
      parameters:
        - in: query
          name: query
          schema:
            type: string
            description: Texto livre sobre id, título, descrição e critério.
        - in: query
          name: domain
          schema:
            type: string
            description: "Recorta ao domínio (o primeiro segmento do id): market, funds,
              credit, documents, events, macro, us, bonds, commodities,
              minerals."
        - in: query
          name: subject_kind
          schema:
            type: string
            description: Só funções que aceitam este tipo de objeto.
        - in: query
          name: subject_mode
          schema:
            type: string
            enum:
              - object
              - resource
              - none
            description: "`object` só as que exigem objeto do grafo; `resource` só as que
              exigem recurso de módulo; `none` só as globais."
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
            description: Candidatos a devolver (1–100, default 50).
      summary: Catálogo de Functions
      description: "Lista as Functions do core e dos módulos instalados no workspace
        como descritores curtos: id, título, critério de uso, sujeito, scopes e
        a rota de execução. `query` casa com id, título, descrição e critério;
        `domain` recorta (market, credit, wallet…); `subject_kind` recorta às
        que aceitam um tipo de objeto. Quando nada casa, `meta.hint` diz por
        onde responder. O spec completo, com `example`, está em `getFunction`."
      x-domain: functions
  /v1/functions/{functionId}:
    get:
      responses:
        "200":
          description: Spec da Function
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FunctionDescriptor"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getFunction
      tags:
        - Functions
      parameters:
        - in: path
          name: functionId
          schema:
            type: string
            description: "Id da Function em `dominio.capitulo.verbo` (ex.:
              `funds.profile.get`)."
          required: true
      summary: Spec de uma Function
      description: "O contrato executável de uma Function: sujeito aceito,
        `input_schema`, `output_schema`, forma temporal e corte, paginação,
        autoridade, estabilidade, host e o binding legado enquanto existir."
      x-domain: functions
  /v1/functions/{functionId}/execute:
    post:
      responses:
        "200":
          description: Resultado da execução
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FunctionExecution"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: executeFunction
      tags:
        - Functions
      parameters:
        - in: path
          name: functionId
          schema:
            type: string
            description: "Id da Function em `dominio.capitulo.verbo` (ex.:
              `funds.profile.get`)."
          required: true
      summary: Executa uma Function
      description: "Executa QUALQUER Function pelo id — do core (`funds.profile.get`)
        ou de um módulo instalado no workspace (`wallet.portfolio.get`,
        `wallet.suitability.get`): esta é a porta única, e o id diz quem
        responde. Function com sujeito recebe `subject` (`entity_id` ou
        `resolve`); Function de módulo sem sujeito executa com `input` só. `at`
        aplica o corte temporal no campo que o spec declara; `series` escolhe o
        papel quando o grão é por papel. Recusas trazem `details.code`:
        `subject_required`, `subject_ambiguous` com `candidates`,
        `function_not_applicable` com `kinds`, `series_required` com `options`,
        `temporal_cut_unsupported`, `invalid_input`."
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: object
                  properties:
                    entity_id:
                      type: string
                      description: Id publicado do objeto (`pub_…`) ou do recurso do módulo.
                    resolve:
                      type: string
                      description: "Texto para resolver quando não há id: ticker, CNPJ, ISIN, código
                        ou nome."
                    kind:
                      type: string
                      description: Estreita a resolução ao tipo.
                    subkind:
                      type: string
                      description: "Recorta dentro do tipo: fii, fidc, debenture, bdr."
                  description: "O sujeito da Function: `entity_id` ou `resolve` (com `kind`).
                    Omita nas Functions sem sujeito."
                input:
                  type: object
                  additionalProperties: {}
                  description: Os parâmetros da função, conforme `input_schema`.
                at:
                  type: string
                  description: Corte temporal ISO (AAAA-MM-DD); recusado quando a função só
                    responde o vigente.
                series:
                  type: string
                  description: Papel escolhido quando o grão é por papel e o sujeito tem vários.
      x-domain: functions
  /v1/search:
    get:
      responses:
        "200":
          description: Resultados ranqueados
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/SearchResult"
                  meta:
                    type: object
                    properties:
                      next_cursor:
                        type:
                          - string
                          - "null"
                      count:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens nesta página
                      total:
                        type: integer
                        x-unit: count
                        x-dimension: count
                        x-scale: unit
                        x-period: none
                        description: Itens no universo filtrado, ignorando a paginação. Só com
                          `?total=true`.
                      subject:
                        type: object
                        additionalProperties:
                          type: string
                        description: Os parâmetros de caminho desta requisição, ecoados. Presente em
                          toda rota endereçada por um objeto. Use-o para
                          conferir a atribuição quando fizer chamadas
                          concorrentes — sem ele, resposta trocada e resposta
                          certa têm exatamente a mesma cara.
                      query:
                        type: string
                    required:
                      - next_cursor
                      - count
                      - query
                required:
                  - data
                  - meta
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: search
      tags:
        - System
      parameters:
        - in: query
          name: q
          schema:
            type: string
            minLength: 1
            maxLength: 64
            description: Termo de busca (ticker ou nome) em ações, FIIs, ETFs, BDRs,
              índices, Tesouro, séries macro, cripto, ativos dos EUA e crédito
              privado. Ignora acento.
          required: true
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 20
            description: Máximo de resultados (1–50, default 20).
          required: false
      summary: Busca unificada (typeahead) por
        ações/FIIs/ETFs/BDRs/índices/títulos/macro/cripto/EUA/crédito
      description: "Resolve ticker↔nome em todas as classes cobertas, incluindo
        crédito privado: debêntures pelo código de negociação (ELTN17) e
        CRI/CRA/LCI/LCA pelo código do instrumento no balcão. Para ações vem
        também o `cvm_code` da companhia, que abre os documentos e as
        demonstrações (esses endpoints também aceitam o ticker direto)."
      x-domain: system
  /v1/ingest:
    get:
      responses:
        "200":
          description: Saúde da ingestão
          content:
            application/json:
              schema:
                type: object
                properties:
                  latest:
                    oneOf:
                      - $ref: "#/components/schemas/IngestRunDetail"
                      - type: "null"
                  latest_by_trigger:
                    type: array
                    items:
                      $ref: "#/components/schemas/IngestRunDetail"
                  sources:
                    type: array
                    items:
                      $ref: "#/components/schemas/IngestSourceHealth"
                  pollers:
                    type: array
                    items:
                      $ref: "#/components/schemas/IngestPollerHealth"
                  recent_runs:
                    type: array
                    items:
                      $ref: "#/components/schemas/IngestRunSummary"
                required:
                  - latest
                  - latest_by_trigger
                  - sources
                  - pollers
                  - recent_runs
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
      operationId: getIngestHealth
      tags:
        - System
      parameters:
        - in: query
          name: source
          schema:
            type: string
            description: "Recorta `sources[]` por substring do nome da fonte: `oferta`,
              `cvm`, `b3`."
      summary: Saúde do pipeline e das fontes
      description: Retorna o último pipeline, execuções por gatilho, erros, pollers e
        saúde por fonte. `latest.ok` descreve o pipeline; consulte `sources[]`
        para uma fonte específica. `missing_ratio` mede partições sem dados, e
        os limites de idade definem `stale`. `source` filtra `sources[]` por
        substring, sem alterar os demais blocos.
      x-domain: system
  /v1/modules:
    get:
      operationId: listModules
      tags:
        - Modules
      x-domain: modules
      summary: Módulos da plataforma
      description: "O core e as extensões como módulos: instalação, disponibilidade no
        workspace da credencial, scopes, contratos, tipos de objeto, Functions e
        Actions publicadas."
      responses:
        "200":
          description: Módulos.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ModulesResponse"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
  /v1/modules/{moduleId}:
    get:
      operationId: getModule
      tags:
        - Modules
      x-domain: modules
      summary: Um módulo e as capacidades que publica
      description: O descritor do módulo (`core` ou o id da extensão) com a lista das
        suas capacidades como descritores curtos.
      parameters:
        - name: moduleId
          in: path
          required: true
          schema:
            type: string
          description: "`core` ou o id da extensão (`databolsa.wallet`)."
      responses:
        "200":
          description: Módulo com capacidades.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ModuleDetail"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
  /v1/capabilities:
    get:
      operationId: listCapabilities
      tags:
        - Modules
      x-domain: modules
      summary: Busca capacidades
      description: "Ranqueia, para uma pergunta em texto livre, o que a credencial
        alcança: primitivas de Objects, Functions do core e as Functions e
        Actions dos módulos instalados no workspace. Cada descritor diz o tipo,
        o módulo, o domínio, o sujeito, os scopes e a rota de execução; o spec
        completo está em `getCapability`."
      parameters:
        - name: query
          in: query
          schema:
            type: string
          description: "Texto livre: casa com id, título, descrição e critério de uso."
        - name: type
          in: query
          schema:
            type: string
            enum:
              - primitive
              - function
              - action
              - system
          description: "Recorta ao tipo: `primitive` (álgebra de Objects), `function`
            (cálculo ou composição), `action` (escrita de módulo) ou `system`."
        - name: module
          in: query
          schema:
            type: string
          description: "`core` ou o id da extensão."
        - name: subject_kind
          in: query
          schema:
            type: string
          description: Só capacidades que aceitam este tipo de objeto como sujeito.
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          description: Candidatos a devolver (1–100, default 20).
      responses:
        "200":
          description: Descritores ranqueados.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CapabilitiesResponse"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
  /v1/actions/{actionId}:
    get:
      operationId: getAction
      tags:
        - Modules
      x-domain: modules
      summary: Spec de uma Action
      description: "O contrato executável de uma escrita pelo id qualificado, de
        qualquer módulo instalado: `input_schema`, `output_schema`, confirmação
        exigida, idempotência, efeitos e evento de auditoria. Ache o id em
        `listCapabilities`."
      parameters:
        - name: actionId
          in: path
          required: true
          schema:
            type: string
          description: Id qualificado da Action, como `listCapabilities` o publica
            (`wallet.portfolio.create`).
      responses:
        "200":
          description: O spec da Action.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActionDescriptor"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
  /v1/actions/{actionId}/preview:
    post:
      operationId: previewAction
      tags:
        - Modules
      x-domain: modules
      summary: Pré-visualiza uma Action
      description: O efeito que `executeAction` teria com este input — o alvo como
        está, o que mudaria e avisos — sem executar. Mostre a prévia à pessoa
        antes de executar quando a Action exige confirmação.
      parameters:
        - name: actionId
          in: path
          required: true
          schema:
            type: string
          description: Id qualificado da Action (`wallet.portfolio.create`).
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: object
                  additionalProperties: true
                  description: Os parâmetros do `input_schema` da Action.
              additionalProperties: false
      responses:
        "200":
          description: A prévia do efeito.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActionPreview"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
  /v1/actions/{actionId}/execute:
    post:
      operationId: executeAction
      tags:
        - Modules
      x-domain: modules
      summary: Executa uma Action
      description: "Executa uma escrita de módulo pelo id qualificado. Action com
        confirmação exigida só executa com `confirmed: true`, depois de a pessoa
        ver a prévia e concordar explicitamente; a recusa 409
        `confirmation_required` traz a prévia em `details`. Com
        `idempotency_key` (8–128 caracteres, única por pedido), a mesma chave e
        o mesmo input repetem a primeira resposta."
      parameters:
        - name: actionId
          in: path
          required: true
          schema:
            type: string
          description: Id qualificado da Action (`wallet.portfolio.create`).
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: object
                  additionalProperties: true
                  description: Os parâmetros do `input_schema` da Action.
                confirmed:
                  type: boolean
                  description: "`true` só depois de a pessoa confirmar o efeito mostrado na
                    prévia."
                idempotency_key:
                  type: string
                  minLength: 8
                  maxLength: 128
                  description: Chave única deste pedido, para repetir com segurança em caso de
                    falha de rede.
              additionalProperties: false
      responses:
        "200":
          description: Resultado da execução.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActionExecution"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
  /v1/capabilities/{capabilityId}:
    get:
      operationId: getCapability
      tags:
        - Modules
      x-domain: modules
      summary: Spec de uma capacidade
      description: "O contrato executável de UMA capacidade pelo id qualificado, de
        qualquer módulo instalado: Function (`input_schema`, `output_schema`,
        sujeito, `example`), Action (confirmação, idempotência, efeitos) ou
        primitiva (parâmetros e resposta da operação). Ache o id em
        `listCapabilities` e chame isto só para a escolhida."
      parameters:
        - name: capabilityId
          in: path
          required: true
          schema:
            type: string
          description: Id qualificado, como `listCapabilities` o publica
            (`funds.profile.get`, `wallet.portfolio.create`, `getObjectFacts`).
      responses:
        "200":
          description: O spec da capacidade.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CapabilityDetail"
        default:
          description: Erro (RFC 9457 application/problem+json)
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problem"
x-profiles:
  default:
    description: "A superfície de leitura do core: o grafo de objetos (Objects), o
      discovery e a execução de Functions, os módulos e o sistema. É o
      comportamento de uma sessão sem perfil."
    domains:
      - objects
      - functions
      - modules
      - system
      - market
      - funds
      - credit
      - bonds
      - commodities
      - minerals
      - macro
      - us
      - documents
      - events
  full:
    description: A superfície completa do contrato. No core é igual ao `default`;
      declarado para a lista de perfis ser completa.
    domains:
      - objects
      - functions
      - modules
      - system
      - market
      - funds
      - credit
      - bonds
      - commodities
      - minerals
      - macro
      - us
      - documents
      - events
x-ontology:
  version: 1
  kinds:
    - company
    - equity_security
    - fund
    - service_provider
    - instrument
    - index
    - crypto_asset
    - commodity
    - country
    - indicator
    - data_series
    - offering
    - fund_share_class
    - market_event
    - role
    - sector
    - securitization
    - norm
    - person
  rels:
    - rel: administers
      shape: static
      max_gap_days: null
      domain_kinds:
        - service_provider
        - company
      range_kinds:
        - fund
      forward_name: administered_funds
      inverse_name: administrator
      note: "ADMINISTRADOR FIDUCIÁRIO — o responsável legal pelo fundo: constitui e
        registra na CVM; calcula e divulga a cota; contrata os demais
        prestadores. NÃO é o gestor (`manages`) que decide a carteira — um
        administrador serve centenas de fundos de gestores diferentes. Único dos
        quatro prestadores que a CVM publica SEM CNPJ: chega por razão social e
        é resolvido contra o cadastro ADM_CART pelo nome normalizado — 134 de
        135 nomes e 36.914 dos 37.009 fundos medidos em 22/08/2026"
    - rel: amends
      shape: event
      max_gap_days: null
      domain_kinds:
        - norm
      range_kinds:
        - norm
      forward_name: amended_norms
      inverse_name: amended_by
      note: A NORMA ALTERA outra — a RCVM 158 altera a RCVM 88. `from` é quem altera
        porque `from` é sempre quem pratica a ação do verbo; "quem alterou a 88"
        é a direção `in`. `event` porque a alteração tem DATA (a publicação da
        norma alteradora) e permanece fato histórico. Vem do seed `norms.csv`
        (coluna `amended_by`), declaração nossa conferida contra a página da
        norma na CVM; nunca inferido do texto
    - rel: assigned_to
      shape: snapshot
      max_gap_days: 45
      domain_kinds:
        - company
        - fund
      range_kinds:
        - fund
        - securitization
      forward_name: assignee_funds
      inverse_name: assignors
      note: 'O CEDENTE CEDEU os recebíveis ao veículo — declaração por competência no
        informe mensal. `from` é o cedente porque `from` é sempre quem pratica a
        ação do verbo; a leitura "quem cedeu para este veículo" é a direção
        `in`. `magnitude` é a PARTICIPAÇÃO declarada do cedente em pontos
        percentuais (`share_pct`), nula quando a fonte não a publica. O range
        ganhou `securitization` em 01/09/2026 com o bloco `cedente_devedor` do
        informe de securitizadora: a cessão é declarada no grão da EMISSÃO
        (1.134 certificados de CRI na competência 2026-07), não da série.
        Cedente NÃO é sinônimo de originador: a mesma empresa pode ser as duas
        coisas, e a fonte só afirma a cessão'
    - rel: audits
      shape: static
      max_gap_days: null
      domain_kinds:
        - service_provider
        - company
      range_kinds:
        - fund
        - company
      forward_name: audited_funds
      inverse_name: auditor
      note: "O auditor independente vigente audita o fundo (registro da CVM) ou a
        companhia aberta (item 10 do Formulário de Referência). `static`: as
        duas fontes declaram apenas o vigente e não a série das trocas."
    - rel: contains
      shape: snapshot
      max_gap_days: 45
      domain_kinds:
        - index
        - fund
      range_kinds:
        - equity_security
        - fund
        - fund_share_class
        - company
      forward_name: constituents
      inverse_name: contained_in
      note: Composição da carteira teórica do índice (na B3 o índice contém o PAPEL e
        nunca a companhia; nos EUA o objeto negociado É a company com âncora
        us_ticker — S&P 500 e Nasdaq-100 contêm a companhia) e estrutura da
        classe de fundo (a classe contém suas SUBCLASSES)
    - rel: coordinates
      shape: interval
      max_gap_days: null
      domain_kinds:
        - company
        - service_provider
      range_kinds:
        - offering
      forward_name: coordinated_offerings
      inverse_name: coordinators
      note: 'O COORDENADOR LÍDER CONDUZ a oferta — a instituição que a CVM registra
        como líder da distribuição. `from` é o coordenador porque `from` é
        sempre quem pratica a ação do verbo; a leitura "as ofertas que este
        banco coordenou" é a direção `out`. Distinto de `issued` (quem emite) e
        de `distributes` (plataforma de crowdfunding, RCVM 88): o líder é a casa
        contratada pelo emissor para colocar o papel. Resolvido EXCLUSIVAMENTE
        pelo `CNPJ_Lider` da fonte (35.198 linhas no acervo 400/476, 13.660 na
        RCVM 160; 453 casas), nunca pela razão social — até 27/08/2026 o
        registro dizia que o líder "vem só por nome" enquanto o CNPJ estava no
        raw. Forma `interval`: `valid_from` é o início da oferta (ou o registro,
        ou a abertura do processo, nessa ordem, quando a fonte não publica
        início) e `valid_to` o encerramento; `valid_to` nulo é oferta ainda
        aberta. `magnitude` é o VALOR REGISTRADO da oferta em R$. Só o líder: o
        `Grupo_Coordenador` da RCVM 160 é texto livre e fica como procedência'
    - rel: covers
      shape: static
      max_gap_days: null
      domain_kinds:
        - data_series
      range_kinds:
        - country
      forward_name: covered_countries
      inverse_name: covering_series
      note: "A SÉRIE COBRE o país a que se refere — `world_bank:NY.GDP.MKTP.CD:DE`
        cobre a Alemanha. É o eixo que faltava para o país: sem ele, 113 séries
        do World Bank traziam o país DENTRO da chave (`...:DE`, ISO2) e nada no
        grafo dizia de quem elas falavam, enquanto o objeto do país existia ao
        lado sem uma única aresta. SÓ ONDE A FONTE DECLARA. `bcb_sgs` e `fred`
        ficam de fora de propósito: quem publica não é do que se trata — o Banco
        Central publica a PTAX, que é sobre o par e não sobre o Brasil, e
        deduzir país da fonte seria o vínculo inventado de sempre. Quando o
        catálogo declarar país para elas, elas entram sem mudar o verbo"
    - rel: custodies
      shape: static
      max_gap_days: null
      domain_kinds:
        - company
        - service_provider
      range_kinds:
        - fund
      forward_name: custodied_funds
      inverse_name: custodian
      note: Custodiante vigente no registro da CVM
    - rel: distributes
      shape: interval
      max_gap_days: null
      domain_kinds:
        - company
        - service_provider
      range_kinds:
        - offering
      forward_name: distributed_offerings
      inverse_name: distributors
      note: 'A PLATAFORMA DISTRIBUI a oferta — a plataforma eletrônica de investimento
        participativo (RCVM 88) é quem conduz a oferta de crowdfunding; `from` é
        a plataforma porque `from` é sempre quem pratica a ação do verbo, e a
        leitura "as ofertas desta plataforma" é a direção `out`. Distinta de
        `issued`: quem emite é a sociedade de pequeno porte (ou a
        securitizadora), quem distribui é a casa autorizada pela CVM — na Hurst
        e na Liqi as duas coincidem no grupo e as duas arestas existem mesmo
        assim, porque são papéis diferentes. Forma `interval` com a janela da
        oferta (início → encerramento); `valid_to` nulo é oferta ainda aberta.
        Foi `event` até 27/08/2026 e a nota prometia esta janela enquanto as
        2.153 arestas saíam como PONTO — promessa em texto livre que ninguém
        conferia, e agora há teste. `magnitude` é o VALOR CAPTADO em R$, nulo
        enquanto a oferta está aberta. Nasceu em 26/08/2026 com o crowdfunding
        de investimento; vale para qualquer distribuidor quando outra fonte
        declarar quem distribuiu o quê. O domínio inclui `company` porque a
        plataforma É as duas coisas: MB Tokens, Hurst, INCO e Liqi têm claim de
        company E de service_provider, o company vence o kind_rank, e 1.708 das
        2.153 arestas saem dessas 30. Declarar só `service_provider` fazia quem
        lê o vocabulário para atravessar perder 79% das arestas sem erro nenhum
        — exatamente o que `issued` sofreu com fundo em 20/08/2026'
    - rel: exposed_to_issuer
      shape: snapshot
      max_gap_days: 45
      domain_kinds:
        - fund
        - index
      range_kinds:
        - company
      forward_name: issuer_exposures
      inverse_name: exposed_funds
      note: Exposição do detentor à EMISSORA — derivada de holds/contains pelo papel;
        responde COM QUEM e nunca QUANTO (sem magnitude de propósito)
    - rel: exposed_to_sector
      shape: snapshot
      max_gap_days: 45
      domain_kinds:
        - fund
      range_kinds:
        - sector
      forward_name: sector_exposures
      inverse_name: exposed_funds
      note: 'O FUNDO ESTÁ EXPOSTO ao setor — a carteira de direitos creditórios do
        FIDC por setor do LASTRO, tabela II do informe mensal (Fonte: CVM).
        `from` é o fundo porque `from` é sempre quem pratica a ação do verbo.
        NÃO é "o setor do fundo": é a composição setorial dos recebíveis que ele
        comprou, por competência, e um FIDC multicedente tem cinco. `snapshot`
        porque a fonte republica o retrato todo mês e o novo substitui o velho;
        `max_gap_days` 45 emenda competências mensais. `magnitude` é a
        PARTICIPAÇÃO NA CARTEIRA em pontos percentuais (nula quando a fonte não
        declara o total da carteira; passa de 100 quando a securitizadora
        declara setor maior que a carteira — as-filed, não corrigido), nunca o
        R$ — participação se compara entre fundos de tamanhos diferentes. A
        ponta do setor é a taxonomia CONTROLADA da CVM (`cvm_fidc:F2`), com as
        duas camadas publicadas (categoria e subcategoria) e a hierarquia em
        `member_of`; quem agrega filtra por nível, senão dobra a carteira.
        Nasceu em 27/08/2026 como a primeira relação que alcança um objeto
        `sector`'
    - rel: forecasts
      shape: static
      max_gap_days: null
      domain_kinds:
        - data_series
      range_kinds:
        - indicator
        - index
      forward_name: forecast_targets
      inverse_name: forecasted_by
      note: A série PROJETA o conceito em vez de medi-lo — Focus / breakeven da curva
        implícita / degrau esperado do Copom. Separado de `measures` em
        20/08/2026 porque as duas conviviam no mesmo verbo com source e shape e
        confidence IDÊNTICOS. Das 45 arestas do IPCA 41 eram projeção — quem
        atravessava "a inflação medida" recebia 41 previsões junto sem erro
        nenhum
    - rel: holds
      shape: snapshot
      max_gap_days: 45
      domain_kinds:
        - fund
      range_kinds:
        - instrument
        - fund
        - equity_security
      forward_name: holdings
      inverse_name: holders
      note: Posição em carteira declarada por competência — detentor detém INSTRUMENTO
        e nunca a emissora; company saiu do range em 17/08/2026 com zero arestas
        medidas em produção; fonte que só identifica o emissor vira
        exposed_to_issuer; `magnitude` é a POSIÇÃO da competência em reais e
        SOMA os lotes que a fonte declara em linhas separadas para o mesmo papel
        — o CDA de crédito parte uma posição em até 112 lotes e publicar o maior
        deles subestimava a carteira de crédito do mercado em R$ 2,6 bi
        (02/09/2026) (OBJ-0032)
    - rel: indexed_to
      shape: event
      max_gap_days: null
      domain_kinds:
        - instrument
      range_kinds:
        - indicator
      forward_name: indexer
      inverse_name: indexed_instruments
      note: Indexador contratado na emissão do papel — aponta para o CONCEITO (IPCA) e
        nunca para a série que o publica
    - rel: issued
      shape: event
      max_gap_days: null
      domain_kinds:
        - company
        - fund
        - service_provider
      range_kinds:
        - instrument
        - equity_security
        - offering
        - securitization
      forward_name: issued
      inverse_name: issuer
      note: "Emissão do papel ou da OFERTA — aconteceu numa data e permanece fato
        histórico. O domínio inclui `fund` porque quem oferta cotas de FII/FIDC
        é o próprio fundo: 26.690 das 45.462 arestas de oferta saem de um fundo.
        O range ganhou `securitization` em 01/09/2026: a securitizadora emite o
        CERTIFICADO (patrimônio separado), e as séries dele pendem por
        `member_of`"
    - rel: manages
      shape: static
      max_gap_days: null
      domain_kinds:
        - service_provider
        - company
      range_kinds:
        - fund
      forward_name: managed_funds
      inverse_name: manager
      note: GESTOR (CPF_CNPJ_Gestor da CVM 175) — NÃO é o administrador fiduciário
    - rel: measures
      shape: static
      max_gap_days: null
      domain_kinds:
        - data_series
      range_kinds:
        - indicator
        - index
      forward_name: measured
      inverse_name: measured_by
      note: A série publicada MEDE o conceito OU o índice — bcb_sgs:433 mede o IPCA
        realizado e bcb_sgs:7 mede o IBOV. É declaração de vocabulário e não
        série temporal. NÃO inclui expectativa — para isso existe `forecasts`
    - rel: member_of
      shape: static
      max_gap_days: null
      domain_kinds:
        - instrument
        - sector
      range_kinds:
        - instrument
        - sector
        - securitization
      forward_name: memberships
      inverse_name: members
      note: 'O TÍTULO PERTENCE à família — "Tesouro IPCA+ com Juros Semestrais 2035" é
        membro do tipo NTN-B. `from` é o título porque `from` é sempre quem
        pratica a ação do verbo; a leitura natural "os títulos desta família" é
        a direção `in`. É relação ESTRUTURAL e não observação datada: um NTN-B
        2035 nunca deixa de ser NTN-B, por isso `static` e sem competência.
        Nasceu em 24/08/2026 para o Tesouro Direto, quando o título ganhou
        identidade própria e a família (que era o único objeto) virou o nó
        agregador. Em 27/08/2026 ganhou o SETOR nos dois lados: a subcategoria
        do informe de FIDC (`cvm_fidc:F2`, crédito consignado) é membro da
        categoria de topo (`cvm_fidc:F`, financeiro), com `parent_code`
        declarado pela própria CVM — hierarquia da fonte, não inferida. Em
        01/09/2026 ganhou a SÉRIE dentro da EMISSÃO: a série de CRI/CRA/OTS
        (objeto `instrument`, identificada por ISIN) é membro do certificado
        (objeto `securitization`, o patrimônio separado). O nó agregador existe
        porque oito dos nove blocos do informe de securitizadora são de grão
        emissão e só `classe` é por série — 1.686 certificados contra 3.228
        séries na competência medida, 766 deles com mais de uma série'
    - rel: mentions
      shape: event
      max_gap_days: null
      domain_kinds:
        - market_event
      range_kinds:
        - company
        - equity_security
        - fund
        - instrument
        - indicator
        - index
        - crypto_asset
      forward_name: mentioned
      inverse_name: mentioned_in
      note: 'O EVENTO CITA o objeto — `from` é o evento porque `from` é sempre quem
        pratica a ação do verbo; a leitura natural "os eventos que falam da
        Petrobras" é a direção `in`. A ponta do objeto é carimbada pelo DETECTOR
        na escrita e não casada por nome em tempo de consulta — o casamento por
        razão social truncada acertava 3 de 60. A CONFIANÇA cai com a
        cardinalidade e o corte é em 9: até 8 objetos citados é `high`; 9 ou
        mais é `low` e descreve matéria panorâmica que cita meia bolsa — 35
        eventos produzem 640 das 2.071 arestas medidas em 22/08/2026. O número
        EXATO de citados viaja em `magnitude`; use-o para cortar mais fino que o
        binário do contrato'
    - rel: offers
      shape: static
      max_gap_days: null
      domain_kinds:
        - offering
      range_kinds:
        - instrument
      forward_name: offered_instruments
      inverse_name: offering
      note: 'A oferta contém este instrumento registrado na CVM. `from` é a oferta; a
        leitura "em que oferta este papel saiu" usa a direção `in`. A forma é
        `static` porque identifica o item ofertado. O casamento deve ser
        determinístico: registro CVM; emissor, quantidade e família; ou
        securitizadora, família, emissão e série. Nunca relacione por nome ou
        título parecido. Conflito entre regras fica sem aresta até revisão;
        oferta multissérie pode ter uma aresta por série'
    - rel: owes_under
      shape: snapshot
      max_gap_days: 45
      domain_kinds:
        - company
        - fund
      range_kinds:
        - securitization
      forward_name: obligations
      inverse_name: obligors
      note: 'O DEVEDOR DEVE sob os créditos que lastreiam o objeto — o sacado do
        recebível securitizado, declarado por competência no informe mensal de
        securitizadora (Fonte: CVM). `from` é o devedor; a leitura "quem deve
        sob esta emissão" usa a direção `in`. `snapshot` porque a lista é um
        retrato por competência. `magnitude` é a participação declarada do
        devedor em pontos percentuais (`share_pct`) e fica nula quando a fonte
        não publica uma parte válida. DEVEDOR NÃO É EMISSOR: a securitizadora
        emite, o cedente transfere o recebível e o devedor o paga. Uma empresa
        que exerça mais de um papel gera arestas distintas, nunca uma fusão
        semântica'
    - rel: produces
      shape: snapshot
      max_gap_days: 400
      domain_kinds:
        - country
      range_kinds:
        - commodity
      forward_name: produced_commodities
      inverse_name: producers
      note: "O PAÍS PRODUZ a commodity mineral, por ano de referência do USGS. `from`
        é o país porque `from` é sempre quem pratica a ação do verbo. NÃO liga
        empresa a produto: os produtores que a fonte publica são PAÍSES, e ligar
        Vale a minério de ferro por semelhança de nome seria o vínculo
        silencioso e errado de sempre — quando existir fonte que ligue companhia
        a produto, ela entra por aqui sem mudar o verbo. As duas linhas
        agregadas da fonte (`World total` e `Other countries`) ficam de fora:
        nenhuma das duas é um país. `magnitude` é a PARTICIPAÇÃO NO TOTAL
        MUNDIAL em pontos percentuais, não a quantidade: quantidade sai em
        toneladas, quilates ou quilos conforme a commodity e não se compara
        entre elas, enquanto a participação se compara sempre. Nula onde a
        própria fonte marca as bases como não somáveis (`incomparable_basis`:
        nas reservas de boro a Turquia declara borato refinado, o Chile ulexita
        e a China óxido bórico). Commodity com mais de um agregado (cobre tem
        produção de mina e de refino, com totais mundiais distintos) usa UM
        recorte só — o que mais países reportam —, e o país que só reporta o
        outro recorte mantém a aresta com magnitude nula: a relação é verdadeira
        mesmo quando o número não é comparável"
    - rel: rates
      shape: event
      max_gap_days: null
      domain_kinds:
        - service_provider
      range_kinds:
        - instrument
        - fund
        - company
      forward_name: rated
      inverse_name: rated_by
      note: 'A AGÊNCIA AVALIA o papel ou o emissor — `from` é a agência porque `from`
        é sempre quem pratica a ação do verbo; a leitura natural "este CRI é
        avaliado pela Fitch" é a direção `in`. Fonte é o relatório da própria
        agência lido por LLM e NÃO o campo declarado no informe da CVM (texto
        livre com ~4% de nota legível; serve para conferir e não para publicar).
        `event` porque a ação de rating tem DATA e permanece fato histórico:
        rebaixamento de 2023 continua tendo acontecido depois de a nota subir em
        2025'
    - rel: registered_as
      shape: interval
      max_gap_days: null
      domain_kinds:
        - company
        - service_provider
      range_kinds:
        - role
      forward_name: roles
      inverse_name: registrants
      note: "A empresa ou prestador está autorizado a exercer o papel segundo o
        registro da CVM; autorização não prova exercício. `from` é quem possui o
        registro. Mantenha esta relação separada de `manages`, `administers`,
        `rates` e `distributes`, que afirmam atuação observada. Nunca derive
        autorização do cadastro de um fundo. A forma é `interval`: `dt_reg` abre
        a vigência, `dt_cancel` fecha e `valid_to` nulo significa registro
        aberto"
    - rel: regulated_by
      shape: static
      max_gap_days: null
      domain_kinds:
        - offering
        - fund
        - fund_share_class
        - service_provider
        - instrument
        - company
      range_kinds:
        - norm
      forward_name: regulating_norms
      inverse_name: regulated
      note: 'O OBJETO ESTÁ SOB a norma — o regime regulatório que o rege, como um lado
        de aresta e não como string. `from` é o objeto regulado porque é ele que
        está sujeito à norma; a leitura "tudo que está sob a RCVM 88" é a
        direção `in`. ESTRUTURAL (`static`): a oferta de 2019 continua tendo
        sido feita sob a ICVM 476 mesmo depois de a 476 ser revogada — a
        vigência é da NORMA (propriedade `status`, aresta `revokes`), não da
        relação. SÓ ONDE A FONTE DECLARA O REGIME: `regime_registro` da oferta
        registrada, `regime` do token, o tipo de comunicado do sistema de
        esforços restritos (crowdfunding) e o cadastro CROWDFUNDING/CAD
        (plataforma); a classe de fundo do cadastro vigente da CVM opera sob a
        RCVM 175 por definição da própria norma. O mapeamento string → norma é o
        seed `norm_regime_rules.csv`, não SQL escrito à mão. Nasceu em
        29/08/2026, quando "cvm88" no chat resolvia para crédito privado
        qualquer porque a norma não era objeto'
    - rel: revokes
      shape: event
      max_gap_days: null
      domain_kinds:
        - norm
      range_kinds:
        - norm
      forward_name: revoked_norms
      inverse_name: revoked_by
      note: A NORMA REVOGA outra — a RCVM 88 revoga a ICVM 588, a RCVM 175 revoga a
        ICVM 555. `from` é quem revoga; "o que a 175 revogou" é a direção `out`.
        `event` datado pela publicação da norma revogadora. Vem do seed
        `norms.csv` (coluna `revoked_by`); a norma revogada segue objeto e segue
        como lado de `regulated_by` das ofertas feitas sob ela — revogar a norma
        não reescreve a história
    - rel: same_owner
      shape: static
      max_gap_days: null
      domain_kinds:
        - company
      range_kinds:
        - company
      forward_name: same_owner
      inverse_name: same_owner
      note: Dois cedentes que compartilham sócio PJ — simétrica
    - rel: serves_on
      shape: snapshot
      max_gap_days: 400
      domain_kinds:
        - person
      range_kinds:
        - company
      forward_name: positions
      inverse_name: officers
      note: "A pessoa ocupa cargo na companhia: diretoria, conselho de administração,
        conselho fiscal ou comitê estatutário, pelos itens 7.3 e 7.4 do
        Formulário de Referência. `from` é a pessoa; a direção `in` responde
        quem senta no conselho da companhia e a direção `out` onde a pessoa
        senta. `snapshot` com `max_gap_days` 400: o FRE é um retrato anual da
        administração vigente, e quem não aparece no ano seguinte saiu. O cargo
        viaja em `series` (código de cargo da CVM, 10 a 48, ou
        `committee:<tipo>`) com o rótulo em `label`, para quem acumula dois
        cargos na mesma companhia ter duas arestas. `magnitude` é o percentual
        de presença nas reuniões; `quantity_as_of` é a data da posse. Só pessoa
        com CPF publicado pela CVM vira objeto; a chave é hash com sal e o CPF
        nunca sai do staging."
    - rel: shareholder_of
      shape: snapshot
      max_gap_days: 400
      domain_kinds:
        - company
        - fund
        - service_provider
        - person
      range_kinds:
        - company
        - fund
      forward_name: shareholdings
      inverse_name: shareholders
      note: "O acionista detém participação na companhia; `from` é quem detém. Fontes:
        a posição acionária que a companhia declara no Formulário de Referência
        (acionista com 5% ou mais, controlador, acordo de acionistas), inclusive
        a composição de cada acionista pessoa jurídica (quem detém a Itaúsa logo
        abaixo de Itaúsa detém o Itaú, declarado pela própria companhia); as
        controladas e coligadas da companhia; e o sócio pessoa jurídica do
        quadro da Receita, para empresa fechada. `snapshot` com competência
        anual do FRE e vintage mensal do cadastro da Receita, porque o
        percentual muda com o tempo. `to` é companhia ou fundo (o FIP que detém
        a companhia entra como acionista e a composição dele é declarada do
        mesmo jeito). `magnitude` é a participação em pontos percentuais do
        capital total de `to` (na composição do acionista PJ, do capital do
        próprio acionista); `quantity` é o percentual das ordinárias (`pct_on`),
        o voto. `label` é `controlador`, `acordo_de_acionistas`, `acionista`,
        `controlada` ou `coligada`. Pessoa física só entra do FRE, por
        `person_key`; o sócio pessoa física da Receita fica de fora."
    - rel: succeeded_by
      shape: event
      max_gap_days: null
      domain_kinds:
        - fund
        - company
        - equity_security
      range_kinds:
        - fund
        - company
        - equity_security
      forward_name: successors
      inverse_name: predecessors
      note: Sucessão societária real (incorporação/cisão) — não é renome de código
    - rel: tokenized_as
      shape: static
      max_gap_days: null
      domain_kinds:
        - offering
      range_kinds:
        - instrument
      forward_name: tokens
      inverse_name: tokenized_offering
      note: 'A OFERTA FOI TOKENIZADA como este contrato — a oferta RCVM 88 e o token
        ERC-20 que a representa na rede. `from` é a oferta porque é ela que
        pratica a ação (foi tokenizada); a leitura "qual oferta é este token" é
        a direção `in`. ESTRUTURAL, não datada: o token é a mesma oferta em
        outro registro. SÓ ONDE O CASAMENTO É DETERMINÍSTICO: mesma plataforma e
        quantidade exata, única na plataforma, ou desempatada pela data de
        criação do contrato a ≤ 45 dias. Não casa por nome (a CVM não nomeia a
        oferta) nem por valor aproximado — tranches seriadas com lote idêntico e
        tokens migrados de rede ficam sem aresta, e a diferença entre
        "tokenizável" declarado e token de fato é exatamente o que este verbo
        mede. Nasceu em 26/08/2026 com a MB (24 de 32 tokens casados)'
  facts:
    - name: bank_basileia
      label: Índice de Basileia
      kind: company
      unit: ratio
      dimension: share
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: bank_basileia
      expected_range:
        min: 0
        max: 1
    - name: bank_capital_pr
      label: Patrimônio de referência
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: bank_capital_pr
      expected_range: null
    - name: bank_credit_portfolio
      label: Carteira de crédito
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: bank_credit_portfolio
      expected_range: null
    - name: bank_equity
      label: Patrimônio líquido do banco
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: shareholders_equity
      expected_range: null
    - name: bank_net_income
      label: Lucro líquido do banco
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: net_income_quarterly
      expected_range: null
    - name: bank_total_assets
      label: Ativo total do banco
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: total_assets
      expected_range: null
    - name: bdr_sessions
      label: Pregões do BDR
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: sessions_count
      expected_range: null
    - name: beta
      label: Beta
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: beta
      expected_range:
        min: -5
        max: 5
    - name: capex
      label: Capex
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: capex
      expected_range: null
    - name: cash
      label: Caixa e equivalentes
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: cash
      expected_range: null
    - name: change_pct
      label: Variação no dia
      kind: company
      unit: pct
      dimension: rate
      scale: percent
      period: daily
      cadence: daily
      grain: paper
      concept: daily_change_pct
      expected_range: null
    - name: change_pct
      label: Variação no dia
      kind: equity_security
      unit: pct
      dimension: rate
      scale: percent
      period: daily
      cadence: daily
      grain: object
      concept: daily_change_pct
      expected_range: null
    - name: change_pct
      label: Variação no dia
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: daily
      cadence: daily
      grain: object
      concept: daily_change_pct
      expected_range: null
    - name: change_pct
      label: Variação no dia
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: daily
      cadence: daily
      grain: object
      concept: daily_change_pct
      expected_range: null
    - name: close
      label: Fechamento ajustado
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: close_price
      expected_range: null
    - name: close
      label: Fechamento ajustado
      kind: crypto_asset
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: close
      label: Fechamento ajustado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: close
      label: Fechamento ajustado
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: close
      label: Fechamento ajustado
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: close_raw
      label: Preço de fechamento sem ajuste
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: close_price_unadjusted
      expected_range: null
    - name: close_raw
      label: Preço de fechamento sem ajuste
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price_unadjusted
      expected_range: null
    - name: close_raw
      label: Preço de fechamento sem ajuste
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price_unadjusted
      expected_range: null
    - name: close_raw
      label: Preço de fechamento sem ajuste
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price_unadjusted
      expected_range: null
    - name: close_tr
      label: Fechamento com retorno total
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: close_price_total_return
      expected_range: null
    - name: close_tr
      label: Fechamento com retorno total
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price_total_return
      expected_range: null
    - name: close_tr
      label: Fechamento com retorno total
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price_total_return
      expected_range: null
    - name: close_tr
      label: Fechamento com retorno total
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price_total_return
      expected_range: null
    - name: close_usd
      label: Fechamento em dólar
      kind: crypto_asset
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: coe_additional_rate_pct
      label: Taxa adicional do COE
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: irregular
      grain: object
      concept: coe_additional_rate_pct
      expected_range: null
    - name: coe_indexer_pct
      label: Percentual do indexador do COE
      kind: instrument
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: irregular
      grain: object
      concept: indexer_pct
      expected_range: null
    - name: coe_issue_price
      label: Preço de emissão do COE
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: coe_issue_price
      expected_range: null
    - name: coe_issue_size
      label: Volume emitido do COE
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: coe_issue_size
      expected_range: null
    - name: coe_qty_issued
      label: Quantidade emitida do COE
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: quantity_issued
      expected_range: null
    - name: coe_trade_count
      label: Negócios do COE
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: coe_trade_count
      expected_range: null
    - name: coe_trade_days
      label: Dias com negócio do COE
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: coe_trade_days
      expected_range: null
    - name: coe_volume
      label: Volume negociado do COE
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: coe_volume
      expected_range: null
    - name: collateral_volume_brl
      label: Volume do lastro
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: crowdfunding_collateral_volume
      expected_range: null
    - name: company_market_cap
      label: Valor de mercado da companhia
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: market_cap_company
      expected_range: null
    - name: crowdfunding_fill
      label: Captado sobre o alvo
      kind: offering
      unit: ratio
      dimension: share
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: crowdfunding_fill
      expected_range:
        min: 0
        max: 1.5
    - name: crowdfunding_quantity
      label: Títulos ofertados
      kind: offering
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: offering_quantity
      expected_range: null
    - name: crowdfunding_raised
      label: Valor captado
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: crowdfunding_raised
      expected_range:
        min: 0
        max: 100000000
    - name: crowdfunding_target
      label: Alvo da captação
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: offering_amount
      expected_range:
        min: 0
        max: 100000000
    - name: crowdfunding_unit_price
      label: Preço unitário do título
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: offering_unit_price
      expected_range: null
    - name: crypto_rank
      label: Posição por valor de mercado
      kind: crypto_asset
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: crypto_rank
      expected_range: null
    - name: current_assets
      label: Ativo circulante
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: current_assets
      expected_range: null
    - name: current_liabilities
      label: Passivo circulante
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: current_liabilities
      expected_range: null
    - name: curve_rate
      label: Taxa da curva
      kind: data_series
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: irregular
      grain: object
      concept: curve_rate
      expected_range: null
    - name: daily_change_pct
      label: Variação diária
      kind: index
      unit: pct
      dimension: rate
      scale: percent
      period: daily
      cadence: daily
      grain: object
      concept: daily_change_pct
      expected_range: null
    - name: deb_buy_value_brl
      label: Compras de fundos na debênture
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: deb_buy_value_brl
      expected_range: null
    - name: deb_funds_holders
      label: Fundos detentores da debênture
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fund_holders_count_monthly
      expected_range: null
    - name: deb_funds_panel_n
      label: Fundos no painel da competência
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_panel_count_monthly
      expected_range: null
    - name: deb_funds_qty
      label: Quantidade em carteiras de fundos
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: deb_funds_qty
      expected_range: null
    - name: deb_funds_value_brl
      label: Valor em carteiras de fundos
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: deb_funds_value_brl
      expected_range: null
    - name: deb_net_traded_brl
      label: Negociação líquida por fundos
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: deb_net_traded_brl
      expected_range: null
    - name: deb_sell_value_brl
      label: Vendas de fundos na debênture
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: deb_sell_value_brl
      expected_range: null
    - name: div_bruta_pl
      label: Dívida bruta / patrimônio
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: div_bruta_pl
      expected_range: null
    - name: div_liquida_ebitda
      label: Dívida líquida / EBITDA
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: div_liquida_ebitda
      expected_range: null
    - name: div_liquida_pl
      label: Dívida líquida / patrimônio
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: div_liquida_pl
      expected_range: null
    - name: dividend_paid_per_share
      label: Dividendo por ação pago
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: distribution_per_share
      expected_range:
        min: 0
        max: 1000
    - name: dividend_paid_per_share_net
      label: Dividendo líquido por ação pago
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: dividend_per_share_net
      expected_range:
        min: 0
        max: 1000
    - name: dividend_per_share
      label: Dividendo por ação
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: distribution_per_share
      expected_range:
        min: 0
        max: 1000
    - name: dividend_per_share_net
      label: Dividendo líquido por ação
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: dividend_per_share_net
      expected_range:
        min: 0
        max: 1000
    - name: dna
      label: Depreciação e amortização
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: dna
      expected_range: null
    - name: duration_bd
      label: Duração em dias úteis
      kind: index
      unit: count
      dimension: duration
      scale: business_days
      period: none
      cadence: daily
      grain: object
      concept: duration_bd
      expected_range: null
    - name: dy_12m
      label: Dividend yield 12 meses
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: dividend_yield_12m
      expected_range:
        min: 0
        max: 0.36
    - name: dy_12m
      label: Dividend yield 12 meses
      kind: equity_security
      unit: ratio
      dimension: rate
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: dividend_yield_12m
      expected_range:
        min: 0
        max: 0.36
    - name: earnings_cagr_3y
      label: Crescimento do lucro (3 anos)
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: cagr_3y
      cadence: quarterly
      grain: object
      concept: earnings_cagr_3y
      expected_range: null
    - name: earnings_cagr_5y
      label: Crescimento do lucro (5 anos)
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: cagr_5y
      cadence: quarterly
      grain: object
      concept: earnings_cagr_5y
      expected_range: null
    - name: ebit
      label: EBIT
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: ebit
      expected_range: null
    - name: ebit_ativos
      label: EBIT sobre ativos
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: ebit_ativos
      expected_range: null
    - name: ebitda
      label: EBITDA
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: ebitda
      expected_range: null
    - name: ebitda_cagr_3y
      label: Crescimento do EBITDA (3 anos)
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: cagr_3y
      cadence: quarterly
      grain: object
      concept: ebitda_cagr_3y
      expected_range: null
    - name: equity
      label: Patrimônio líquido
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: shareholders_equity
      expected_range: null
    - name: etf_net_worth
      label: Patrimônio líquido do ETF
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: net_worth
      expected_range: null
    - name: etf_quota_count_authorized
      label: Cotas autorizadas do ETF
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: etf_quota_count_authorized
      expected_range: null
    - name: etf_sessions
      label: Pregões do ETF
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: sessions_count
      expected_range: null
    - name: ev_ebit
      label: EV/EBIT
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: ev_ebit
      expected_range: null
    - name: ev_ebit
      label: EV/EBIT
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: ev_ebit
      expected_range: null
    - name: ev_ebitda
      label: EV/EBITDA
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: ev_ebitda
      expected_range: null
    - name: ev_ebitda
      label: EV/EBITDA
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: ev_ebitda
      expected_range: null
    - name: face_value_current
      label: Valor nominal atualizado
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: face_value_current
      expected_range: null
    - name: face_value_issue
      label: Valor nominal na emissão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: face_value_issue
      expected_range: null
    - name: fcf
      label: Fluxo de caixa livre
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: fcf
      expected_range: null
    - name: fiagro_sessions
      label: Pregões do FIAGRO
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: sessions_count
      expected_range: null
    - name: fidc_acquired_amount
      label: Direitos creditórios adquiridos
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_acquired_amount
      expected_range: null
    - name: fidc_acquired_count
      label: Direitos creditórios adquiridos (contagem)
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_acquired_count
      expected_range: null
    - name: fidc_acquired_impaired_pct
      label: Aquisições de crédito vencido
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_acquired_impaired_pct
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_1080d
      label: Vencidos há mais de 1.080 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_1080d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_120d
      label: Vencidos há mais de 120 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_120d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_150d
      label: Vencidos há mais de 150 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_150d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_180d
      label: Vencidos há mais de 180 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_180d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_30d
      label: Vencidos há mais de 30 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_30d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_360d
      label: Vencidos há mais de 360 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_360d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_60d
      label: Vencidos há mais de 60 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_60d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_720d
      label: Vencidos há mais de 720 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_720d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_90d
      label: Vencidos há mais de 90 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_90d
      expected_range:
        min: 0
        max: 1
    - name: fidc_aging_acima_1080d
      label: Vencidos além de 1.080 dias
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_aging_acima_1080d
      expected_range:
        min: 0
        max: 1
    - name: fidc_allowance_ratio
      label: Provisão sobre a carteira
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_allowance_ratio
      expected_range: null
    - name: fidc_amortizations
      label: Amortizações
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_amortizations
      expected_range: null
    - name: fidc_avg_ticket
      label: Tíquete médio
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_avg_ticket
      expected_range: null
    - name: fidc_buy_rate_avg
      label: Taxa média de aquisição
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: monthly
      grain: object
      concept: fidc_buy_rate_avg
      expected_range:
        min: 0
        max: 100
    - name: fidc_cdi_cum_since_inception
      label: CDI desde o início da série
      kind: fund
      unit: ratio
      dimension: rate
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: cdi_return_since_inception
      expected_range: null
    - name: fidc_cdi_cum_year
      label: CDI no ano
      kind: fund
      unit: ratio
      dimension: rate
      scale: unit
      period: ytd
      cadence: monthly
      grain: object
      concept: cdi_return_ytd
      expected_range: null
    - name: fidc_cdi_month_pct
      label: CDI do mês
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: cdi_month
      expected_range: null
    - name: fidc_collateral_pct
      label: Garantia sobre a carteira
      kind: fund
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: fidc_collateral_pct
      expected_range:
        min: 0
        max: 1000
    - name: fidc_cum_since_inception
      label: Retorno da série desde o início
      kind: fund
      unit: ratio
      dimension: rate
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_series_return_since_inception
      expected_range: null
    - name: fidc_cum_year
      label: Retorno da série no ano
      kind: fund
      unit: ratio
      dimension: rate
      scale: unit
      period: ytd
      cadence: monthly
      grain: object
      concept: fidc_series_return_ytd
      expected_range: null
    - name: fidc_excess_month_pp
      label: Excesso sobre o CDI no mês
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_series_excess_month
      expected_range: null
    - name: fidc_expected_pct
      label: Retorno prometido no mês
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_series_target_month
      expected_range: null
    - name: fidc_impaired_ratio
      label: Inadimplência sobre a carteira
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_impaired_ratio
      expected_range:
        min: 0
        max: 1
    - name: fidc_investors
      label: Cotistas do FIDC
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: holders_count
      expected_range: null
    - name: fidc_liquid_30d
      label: Liquidez em 30 dias
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_liquid_30d
      expected_range: null
    - name: fidc_months_in_window
      label: Meses observados no acumulado
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_series_months_in_window
      expected_range: null
    - name: fidc_net_flow
      label: Captação líquida mensal do FIDC
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: net_flow_monthly
      expected_range: null
    - name: fidc_net_worth
      label: Patrimônio líquido do FIDC
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: net_worth
      expected_range: null
    - name: fidc_overdue_ratio
      label: Atraso sobre a carteira
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_overdue_ratio
      expected_range: null
    - name: fidc_pct_of_cdi
      label: Percentual do CDI no mês
      kind: fund
      unit: x
      dimension: ratio
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_series_pct_of_cdi
      expected_range: null
    - name: fidc_performance_gap_pct
      label: Entregue menos prometido
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_series_performance_gap
      expected_range: null
    - name: fidc_portfolio
      label: Carteira de recebíveis
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_portfolio
      expected_range: null
    - name: fidc_portfolio_to_net_worth
      label: Carteira / patrimônio
      kind: fund
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_portfolio_to_net_worth
      expected_range: null
    - name: fidc_realized_pct
      label: Retorno entregue no mês
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_series_return_month
      expected_range:
        min: -100
        max: 100
    - name: fidc_redemption_coverage_30d
      label: Cobertura de resgates em 30 dias
      kind: fund
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_redemption_coverage_30d
      expected_range:
        min: 0
        max: 100
    - name: fidc_redemptions_paid
      label: Resgates pagos
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_redemptions_paid
      expected_range: null
    - name: fidc_redemptions_requested
      label: Resgates solicitados
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_redemptions_requested
      expected_range: null
    - name: fidc_related_party_sale_pct
      label: Cessão por parte relacionada
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_related_party_sale_pct
      expected_range:
        min: 0
        max: 1
    - name: fidc_repurchase_to_portfolio
      label: Recompra sobre a carteira
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_repurchase_to_portfolio
      expected_range:
        min: 0
        max: 1
    - name: fidc_repurchased_amount
      label: Direitos creditórios recomprados
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_repurchased_amount
      expected_range: null
    - name: fidc_repurchased_count
      label: Direitos creditórios recomprados (contagem)
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_repurchased_count
      expected_range: null
    - name: fidc_return_month_pct
      label: Rentabilidade da série no mês
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_series_return_month
      expected_range:
        min: -100
        max: 100
    - name: fidc_sale_gain
      label: Ganho na alienação da carteira
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_sale_gain
      expected_range: null
    - name: fidc_scr_alto_risco
      label: Carteira de alto risco no SCR
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_scr_alto_risco
      expected_range:
        min: 0
        max: 1
    - name: fidc_scr_baixo_risco
      label: Carteira de baixo risco no SCR
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_scr_baixo_risco
      expected_range:
        min: 0
        max: 1
    - name: fidc_sector_hhi
      label: Concentração setorial (HHI)
      kind: fund
      unit: points
      dimension: index
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_sector_hhi
      expected_range:
        min: 0
        max: 10000
    - name: fidc_segment_months_stable
      label: Meses com o mesmo segmento
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_segment_months_stable
      expected_range: null
    - name: fidc_series_holders
      label: Cotistas da série
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: holders_count
      expected_range: null
    - name: fidc_series_net_worth
      label: Patrimônio da série
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: net_worth
      expected_range: null
    - name: fidc_series_pct_of_class
      label: Participação da série na classe
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_series_pct_of_class
      expected_range: null
    - name: fidc_series_quota_count
      label: Cotas da série
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_series_quota_count
      expected_range: null
    - name: fidc_series_quota_value
      label: Valor da cota da série
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: book_value_per_share
      expected_range: null
    - name: fidc_shortfall_streak
      label: Meses seguidos abaixo da meta
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fidc_series_shortfall_streak
      expected_range: null
    - name: fidc_sold_amount
      label: Direitos creditórios alienados
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_sold_amount
      expected_range: null
    - name: fidc_spread_annual_pp
      label: Spread anualizado sobre o CDI
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: monthly
      grain: object
      concept: fidc_series_spread_annual
      expected_range: null
    - name: fidc_subscriptions
      label: Aplicações no FIDC
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_subscriptions
      expected_range: null
    - name: fidc_substituted_amount
      label: Direitos creditórios substituídos
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_substituted_amount
      expected_range: null
    - name: fidc_top_originator_pct
      label: Concentração no maior cedente
      kind: fund
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: fidc_top_originator_pct
      expected_range:
        min: 0
        max: 100
    - name: fidc_top_sector_share
      label: Concentração no maior setor
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_top_sector_share
      expected_range:
        min: 0
        max: 1
    - name: fidc_top_segment_share
      label: Concentração no maior segmento
      kind: fund
      unit: ratio
      dimension: share
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fidc_top_segment_share
      expected_range:
        min: 0
        max: 1
    - name: fii_area_m2
      label: Área bruta locável
      kind: fund
      unit: count
      dimension: area
      scale: square_meters
      period: none
      cadence: monthly
      grain: object
      concept: fii_area_m2
      expected_range: null
    - name: fii_cap_rate
      label: Cap rate
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: monthly
      grain: object
      concept: fii_cap_rate
      expected_range:
        min: 0
        max: 30
    - name: fii_distribution_paid_per_share
      label: Rendimento por cota pago
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: distribution_per_share
      expected_range:
        min: 0
        max: 1000
    - name: fii_distribution_paid_per_share_adj
      label: Rendimento por cota ajustado pago
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: fii_distribution_per_share_adj
      expected_range:
        min: 0
        max: 1000
    - name: fii_distribution_per_share
      label: Rendimento por cota
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: distribution_per_share
      expected_range:
        min: 0
        max: 1000
    - name: fii_distribution_per_share_adj
      label: Rendimento por cota ajustado
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: fii_distribution_per_share_adj
      expected_range:
        min: 0
        max: 1000
    - name: fii_dividend_yield_month
      label: Dividend yield mensal do FII
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: dividend_yield_monthly
      expected_range: null
    - name: fii_dy_12m
      label: Dividend yield 12 meses do FII
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: ttm_12m
      cadence: monthly
      grain: object
      concept: dividend_yield_12m
      expected_range:
        min: 0
        max: 36
    - name: fii_dy_12m_current
      label: Dividend yield 12 meses do FII (pregão mais recente)
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: ttm_12m
      cadence: monthly
      grain: object
      concept: dividend_yield_12m
      expected_range:
        min: 0
        max: 36
    - name: fii_fee_effective_pct_aa
      label: Taxa efetiva anual do FII
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: monthly
      grain: object
      concept: fii_fee_effective_pct_aa
      expected_range:
        min: 0
        max: 10
    - name: fii_fee_month_max_annualized
      label: Maior taxa mensal anualizada
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: monthly
      grain: object
      concept: fii_fee_month_max_annualized
      expected_range: null
    - name: fii_fee_months_observed
      label: Meses observados de taxa
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fii_fee_months_observed
      expected_range: null
    - name: fii_ffo_yield
      label: FFO yield
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: ttm_12m
      cadence: monthly
      grain: object
      concept: fii_ffo_yield
      expected_range:
        min: 0
        max: 50
    - name: fii_net_asset_value
      label: Patrimônio líquido do FII
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: net_worth
      expected_range: null
    - name: fii_price_m2
      label: Preço por m²
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fii_price_m2
      expected_range: null
    - name: fii_properties
      label: Imóveis
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: fii_properties
      expected_range: null
    - name: fii_pvp
      label: P/VP do FII
      kind: fund
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: price_to_book
      expected_range:
        min: 0
        max: 5
    - name: fii_rent_m2
      label: Aluguel por m²
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fii_rent_m2
      expected_range: null
    - name: fii_shareholders
      label: Cotistas do FII
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: holders_count
      expected_range: null
    - name: fii_shares_issued
      label: Cotas emitidas
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: quantity_issued
      expected_range: null
    - name: fii_vacancy
      label: Vacância física
      kind: fund
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: fii_vacancy
      expected_range:
        min: 0
        max: 100
    - name: fii_value_per_share
      label: Valor patrimonial por cota
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: book_value_per_share
      expected_range: null
    - name: focus_mean
      label: Média das expectativas Focus
      kind: data_series
      unit: native
      dimension: null
      scale: null
      period: null
      cadence: irregular
      grain: object
      concept: focus_expectation_mean
      expected_range: null
    - name: focus_median
      label: Mediana das expectativas Focus
      kind: data_series
      unit: native
      dimension: null
      scale: null
      period: null
      cadence: irregular
      grain: object
      concept: focus_expectation_median
      expected_range: null
    - name: focus_respondents
      label: Respondentes do Focus
      kind: data_series
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: focus_respondents
      expected_range: null
    - name: focus_std_dev
      label: Desvio-padrão das expectativas Focus
      kind: data_series
      unit: native
      dimension: null
      scale: null
      period: null
      cadence: irregular
      grain: object
      concept: focus_expectation_std_dev
      expected_range: null
    - name: fund_registry_net_worth
      label: Patrimônio líquido no registro da CVM
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: net_worth
      expected_range: null
    - name: funds_appeared
      label: Fundos que começaram a divulgar
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_appeared
      expected_range: null
    - name: funds_closed_short
      label: Fundos que zeraram posição vendida
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_closed_short
      expected_range: null
    - name: funds_decreased
      label: Fundos que reduziram posição
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_decreased
      expected_range: null
    - name: funds_entered
      label: Fundos que entraram
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_entered
      expected_range: null
    - name: funds_exited
      label: Fundos que saíram
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_exited
      expected_range: null
    - name: funds_holders
      label: Fundos detentores
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: fund_holders_count_monthly
      expected_range: null
    - name: funds_implied_price
      label: Preço implícito do CDA
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: funds_implied_price
      expected_range: null
    - name: funds_increased
      label: Fundos que aumentaram posição
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_increased
      expected_range: null
    - name: funds_opened_short
      label: Fundos que abriram posição vendida
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_opened_short
      expected_range: null
    - name: funds_panel_coverage_pct
      label: Cobertura do painel de fundos
      kind: equity_security
      unit: pct
      dimension: share
      scale: percent
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_panel_coverage_pct
      expected_range: null
    - name: funds_panel_n
      label: Fundos no painel comparável
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_balanced_panel_count_monthly
      expected_range: null
    - name: funds_partial_disclosure
      label: Fundos com divulgação parcial
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_partial_disclosure
      expected_range: null
    - name: funds_qty_undisclosed
      label: Fundos sem quantidade declarada
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_qty_undisclosed
      expected_range: null
    - name: funds_shares
      label: Papéis em carteiras de fundos
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_shares
      expected_range: null
    - name: funds_shares_delta
      label: Variação de papéis em carteiras de fundos
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_shares_delta
      expected_range: null
    - name: funds_short_holders
      label: Fundos vendidos no papel
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_short_holders
      expected_range: null
    - name: funds_short_value_brl
      label: Obrigação dos fundos no papel
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_short_value_brl
      expected_range: null
    - name: funds_value_brl
      label: Valor em carteiras de fundos
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_value_brl
      expected_range: null
    - name: funds_value_flow_brl
      label: Fluxo de fundos
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_value_flow_brl
      expected_range: null
    - name: funds_value_price_effect_brl
      label: Efeito preço nas carteiras de fundos
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: funds_value_price_effect_brl
      expected_range: null
    - name: giro_ativos
      label: Giro dos ativos
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: giro_ativos
      expected_range: null
    - name: gross_debt
      label: Dívida bruta
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: gross_debt
      expected_range: null
    - name: gross_profit
      label: Lucro bruto
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: gross_profit
      expected_range: null
    - name: high
      label: Preço máximo do pregão ajustado
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: high_price
      expected_range: null
    - name: high
      label: Preço máximo do pregão ajustado
      kind: crypto_asset
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: high_price
      expected_range: null
    - name: high
      label: Preço máximo do pregão ajustado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: high_price
      expected_range: null
    - name: high
      label: Preço máximo do pregão ajustado
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: high_price
      expected_range: null
    - name: high
      label: Preço máximo do pregão ajustado
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: high_price
      expected_range: null
    - name: index_close
      label: Fechamento do índice
      kind: index
      unit: points
      dimension: index
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: index_level
      expected_range: null
    - name: index_value
      label: Nível do índice
      kind: index
      unit: points
      dimension: index
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: index_level
      expected_range: null
    - name: indexer_pct
      label: Percentual do indexador
      kind: instrument
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: irregular
      grain: object
      concept: indexer_pct
      expected_range: null
    - name: indicator_value
      label: Valor do indicador
      kind: data_series
      unit: native
      dimension: null
      scale: null
      period: null
      cadence: irregular
      grain: object
      concept: indicator_value
      expected_range: null
    - name: inflow
      label: Captação bruta do fundo
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: fund_inflow
      expected_range: null
    - name: insider_buy_value_brl
      label: Compras de insiders
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: insider_buy_value_brl
      expected_range: null
    - name: insider_net_shares
      label: Saldo líquido de insiders em papéis
      kind: company
      unit: count
      dimension: count
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: insider_net_shares
      expected_range: null
    - name: insider_net_value_brl
      label: Saldo líquido de insiders no mês
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: insider_net_value_monthly
      expected_range: null
    - name: insider_net_value_brl
      label: Saldo líquido de insiders no mês
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: insider_net_value_monthly
      expected_range: null
    - name: insider_sell_value_brl
      label: Vendas de insiders
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: insider_sell_value_brl
      expected_range: null
    - name: invested_capital
      label: Capital investido
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: invested_capital
      expected_range: null
    - name: issuer_gross_revenue
      label: Receita bruta anual do emissor
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: annual
      cadence: irregular
      grain: object
      concept: gross_revenue_annual
      expected_range: null
    - name: jcp_paid_per_share
      label: JCP por ação pago
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: jcp_per_share
      expected_range:
        min: 0
        max: 1000
    - name: jcp_per_share
      label: JCP por ação
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: jcp_per_share
      expected_range:
        min: 0
        max: 1000
    - name: jcp_share
      label: Parcela de JCP nos proventos
      kind: company
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: jcp_share
      expected_range: null
    - name: jcp_share
      label: Parcela de JCP nos proventos
      kind: equity_security
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: jcp_share
      expected_range: null
    - name: liquidez_corrente
      label: Liquidez corrente
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: liquidez_corrente
      expected_range: null
    - name: low
      label: Preço mínimo do pregão ajustado
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: low_price
      expected_range: null
    - name: low
      label: Preço mínimo do pregão ajustado
      kind: crypto_asset
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: low_price
      expected_range: null
    - name: low
      label: Preço mínimo do pregão ajustado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: low_price
      expected_range: null
    - name: low
      label: Preço mínimo do pregão ajustado
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: low_price
      expected_range: null
    - name: low
      label: Preço mínimo do pregão ajustado
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: low_price
      expected_range: null
    - name: lpa
      label: Lucro por ação de 12 meses
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: eps_ttm
      expected_range: null
    - name: lpa
      label: Lucro por ação de 12 meses
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: eps_ttm
      expected_range: null
    - name: lt_debt
      label: Dívida de longo prazo
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: lt_debt
      expected_range: null
    - name: margem_bruta
      label: Margem bruta
      kind: company
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: margem_bruta
      expected_range:
        min: -3
        max: 1.05
    - name: margem_ebit
      label: Margem EBIT
      kind: company
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: margem_ebit
      expected_range:
        min: -10
        max: 3
    - name: margem_liquida
      label: Margem líquida
      kind: company
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: margem_liquida
      expected_range:
        min: -10
        max: 3
    - name: market_cap
      label: Valor de mercado da classe de ação
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: market_cap_share_class
      expected_range: null
    - name: market_cap
      label: Valor de mercado da classe de ação
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: market_cap_share_class
      expected_range: null
    - name: net_current_assets
      label: Ativo circulante líquido
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: net_current_assets
      expected_range: null
    - name: net_debt
      label: Dívida líquida
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: net_debt
      expected_range: null
    - name: net_flow
      label: Captação líquida diária
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: net_flow_daily
      expected_range: null
    - name: net_income
      label: Lucro líquido de 12 meses
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: net_income_ttm
      expected_range: null
    - name: net_worth
      label: Patrimônio líquido do fundo
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: net_worth
      expected_range: null
    - name: noncurrent_liabilities
      label: Passivo não circulante
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: noncurrent_liabilities
      expected_range: null
    - name: nopat
      label: NOPAT
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: nopat
      expected_range: null
    - name: ocf
      label: Caixa operacional
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: ocf
      expected_range: null
    - name: offering_amount
      label: Valor da oferta
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: offering_amount
      expected_range:
        min: 0
        max: 1000000000000
    - name: offering_quantity
      label: Quantidade ofertada
      kind: offering
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: offering_quantity
      expected_range: null
    - name: offering_unit_price
      label: Preço unitário da oferta
      kind: offering
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: offering_unit_price
      expected_range: null
    - name: open
      label: Preço de abertura ajustado
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: open_price
      expected_range: null
    - name: open
      label: Preço de abertura ajustado
      kind: crypto_asset
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: open_price
      expected_range: null
    - name: open
      label: Preço de abertura ajustado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: open_price
      expected_range: null
    - name: open
      label: Preço de abertura ajustado
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: open_price
      expected_range: null
    - name: open
      label: Preço de abertura ajustado
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: open_price
      expected_range: null
    - name: otc_price_avg
      label: Preço médio no balcão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: avg_trade_price
      expected_range: null
    - name: otc_price_last
      label: Último preço no balcão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: last_trade_price
      expected_range: null
    - name: otc_price_max
      label: Preço máximo no balcão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: max_trade_price
      expected_range: null
    - name: otc_price_min
      label: Preço mínimo no balcão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: min_trade_price
      expected_range: null
    - name: otc_quantity
      label: Quantidade no balcão
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: irregular
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: otc_trade_count
      label: Negócios no balcão
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: irregular
      grain: object
      concept: trade_count_daily
      expected_range: null
    - name: otc_volume
      label: Volume no balcão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: irregular
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: outflow
      label: Resgate bruto do fundo
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: fund_outflow
      expected_range: null
    - name: p_ativo_circ_liq
      label: Preço sobre ativo circulante líquido
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: p_ativo_circ_liq
      expected_range: null
    - name: p_ativo_circ_liq
      label: Preço sobre ativo circulante líquido
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: p_ativo_circ_liq
      expected_range: null
    - name: p_ativos
      label: Preço sobre ativos
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: p_ativos
      expected_range: null
    - name: p_ativos
      label: Preço sobre ativos
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: p_ativos
      expected_range: null
    - name: p_cap_giro
      label: Preço sobre capital de giro
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: p_cap_giro
      expected_range: null
    - name: p_cap_giro
      label: Preço sobre capital de giro
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: p_cap_giro
      expected_range: null
    - name: p_ebit
      label: P/EBIT
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: p_ebit
      expected_range: null
    - name: p_ebit
      label: P/EBIT
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: p_ebit
      expected_range: null
    - name: p_fcf
      label: Preço sobre fluxo de caixa livre
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: p_fcf
      expected_range: null
    - name: p_fcf
      label: Preço sobre fluxo de caixa livre
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: p_fcf
      expected_range: null
    - name: payout
      label: Payout
      kind: company
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: payout
      expected_range:
        min: 0
        max: 5
    - name: payout
      label: Payout
      kind: equity_security
      unit: ratio
      dimension: share
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: payout
      expected_range:
        min: 0
        max: 5
    - name: pct_of_curve
      label: Percentual da curva
      kind: instrument
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: irregular
      grain: object
      concept: pct_of_curve
      expected_range:
        min: 20
        max: 200
    - name: pl
      label: P/L
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: pl
      expected_range: null
    - name: pl
      label: P/L
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: pl
      expected_range: null
    - name: portfolio_value_kbrl
      label: Valor da carteira teórica
      kind: index
      unit: brl
      dimension: currency
      scale: thousand
      period: none
      cadence: daily
      grain: object
      concept: portfolio_value_kbrl
      expected_range: null
    - name: prev_close
      label: Fechamento do pregão anterior
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: paper
      concept: close_price
      expected_range: null
    - name: prev_close
      label: Fechamento do pregão anterior
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: prev_close
      label: Fechamento do pregão anterior
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: prev_close
      label: Fechamento do pregão anterior
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: price_at_eval
      label: Preço na data da avaliação
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: price_at_eval
      expected_range: null
    - name: price_at_eval
      label: Preço na data da avaliação
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: price_at_eval
      expected_range: null
    - name: psr
      label: P/Receita
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: paper
      concept: psr
      expected_range: null
    - name: psr
      label: P/Receita
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: psr
      expected_range: null
    - name: pu_avg
      label: PU médio
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: avg_trade_price
      expected_range: null
    - name: pu_max
      label: PU máximo
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: max_trade_price
      expected_range: null
    - name: pu_min
      label: PU mínimo
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: min_trade_price
      expected_range: null
    - name: pvp
      label: P/VP
      kind: company
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: price_to_book
      expected_range: null
    - name: pvp
      label: P/VP
      kind: equity_security
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: price_to_book
      expected_range: null
    - name: qty_issued
      label: Quantidade emitida
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: quantity_issued
      expected_range: null
    - name: qty_outstanding
      label: Quantidade em circulação
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: qty_outstanding
      expected_range: null
    - name: quantity
      label: Quantidade negociada no pregão
      kind: company
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: paper
      concept: traded_quantity_daily
      expected_range: null
    - name: quantity
      label: Quantidade negociada no pregão
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: quantity
      label: Quantidade negociada no pregão
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: quantity
      label: Quantidade negociada no pregão
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: quota
      label: Cota ajustada
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: book_value_per_share
      expected_range: null
    - name: quota_raw
      label: Cota sem ajuste
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: book_value_per_share_unadjusted
      expected_range: null
    - name: retorno_12m
      label: Retorno em 12 meses
      kind: equity_security
      unit: pct
      dimension: rate
      scale: percent
      period: ttm_12m
      cadence: daily
      grain: object
      concept: return_12m
      expected_range:
        min: -100
        max: 1000
    - name: revenue
      label: Receita líquida de 12 meses
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: revenue_ttm
      expected_range: null
    - name: revenue_cagr_3y
      label: Crescimento da receita (3 anos)
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: cagr_3y
      cadence: quarterly
      grain: object
      concept: revenue_cagr_3y
      expected_range: null
    - name: revenue_cagr_5y
      label: Crescimento da receita (5 anos)
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: cagr_5y
      cadence: quarterly
      grain: object
      concept: revenue_cagr_5y
      expected_range: null
    - name: roa
      label: ROA
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: roa
      expected_range:
        min: -3
        max: 3
    - name: roe
      label: ROE
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: roe
      expected_range:
        min: -5
        max: 5
    - name: roic
      label: ROIC
      kind: company
      unit: ratio
      dimension: rate
      scale: unit
      period: ttm_12m
      cadence: quarterly
      grain: object
      concept: roic
      expected_range:
        min: -5
        max: 5
    - name: securit_amortization
      label: Amortizações pagas pela série
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_amortization
      expected_range: null
    - name: securit_assets
      label: Ativo do patrimônio separado
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_assets
      expected_range: null
    - name: securit_assignor_recourse
      label: Coobrigação do cedente
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_assignor_recourse
      expected_range:
        min: 0
        max: 100
    - name: securit_cash
      label: Caixa do patrimônio separado
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_cash
      expected_range: null
    - name: securit_due
      label: Créditos a vencer
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_due
      expected_range: null
    - name: securit_duration
      label: Duração da carteira
      kind: securitization
      unit: count
      dimension: duration
      scale: months
      period: none
      cadence: monthly
      grain: object
      concept: securit_duration
      expected_range: null
    - name: securit_expenses
      label: Despesas pagas no mês
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: securit_expenses
      expected_range: null
    - name: securit_income
      label: Rendimentos pagos pela série
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_income
      expected_range: null
    - name: securit_net_cash_change
      label: Variação líquida de caixa no mês
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: securit_net_cash_change
      expected_range: null
    - name: securit_net_worth
      label: Patrimônio líquido da emissão
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_net_worth
      expected_range: null
    - name: securit_outstanding
      label: Saldo devedor da emissão
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_outstanding
      expected_range: null
    - name: securit_paid_in
      label: Total integralizado da série
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_paid_in
      expected_range: null
    - name: securit_portfolio_over_issue
      label: Carteira sobre a emissão
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_portfolio_over_issue
      expected_range:
        min: 0
        max: 200
    - name: securit_receipts
      label: Recebimentos do mês
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: securit_receipts
      expected_range: null
    - name: securit_receivables
      label: Recebíveis do patrimônio separado
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_receivables
      expected_range: null
    - name: securit_receivables_overdue
      label: Recebíveis vencidos
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_receivables_overdue
      expected_range: null
    - name: securit_senior_paid
      label: Pago à classe sênior no mês
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: monthly
      cadence: monthly
      grain: object
      concept: securit_senior_paid
      expected_range: null
    - name: securit_top1_assignor
      label: Concentração no maior cedente
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top1_assignor
      expected_range:
        min: 0
        max: 100
    - name: securit_top1_debtor
      label: Concentração no maior devedor
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top1_debtor
      expected_range:
        min: 0
        max: 100
    - name: securit_top10_assignor
      label: Concentração nos 10 maiores cedentes
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top10_assignor
      expected_range:
        min: 0
        max: 100
    - name: securit_top10_debtor
      label: Concentração nos 10 maiores devedores
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top10_debtor
      expected_range:
        min: 0
        max: 100
    - name: securit_top20_assignor
      label: Concentração nos 20 maiores cedentes
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top20_assignor
      expected_range:
        min: 0
        max: 100
    - name: securit_top20_debtor
      label: Concentração nos 20 maiores devedores
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top20_debtor
      expected_range:
        min: 0
        max: 100
    - name: securit_top5_assignor
      label: Concentração nos 5 maiores cedentes
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top5_assignor
      expected_range:
        min: 0
        max: 100
    - name: securit_top5_debtor
      label: Concentração nos 5 maiores devedores
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_top5_debtor
      expected_range:
        min: 0
        max: 100
    - name: securit_unpaid
      label: Créditos não pagos
      kind: securitization
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: monthly
      grain: object
      concept: securit_unpaid
      expected_range: null
    - name: securit_unpaid_pct
      label: Inadimplência da carteira
      kind: securitization
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: monthly
      grain: object
      concept: securit_unpaid_pct
      expected_range:
        min: 0
        max: 100
    - name: shareholders
      label: Acionistas
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: holders_count
      expected_range: null
    - name: spread_median
      label: Spread mediano
      kind: data_series
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: irregular
      grain: object
      concept: spread_median
      expected_range: null
    - name: spread_n_papers
      label: Papéis no spread
      kind: data_series
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: spread_n_papers
      expected_range: null
    - name: spread_pct_aa
      label: Spread ao ano
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: irregular
      grain: object
      concept: spread_pct_aa
      expected_range: null
    - name: spread_pct_of_curve
      label: Spread sobre a curva
      kind: data_series
      unit: pct
      dimension: share
      scale: percent
      period: none
      cadence: irregular
      grain: object
      concept: pct_of_curve
      expected_range: null
    - name: spread_volume_brl
      label: Volume no spread
      kind: data_series
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: irregular
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: st_debt
      label: Dívida de curto prazo
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: st_debt
      expected_range: null
    - name: st_investments
      label: Aplicações financeiras de curto prazo
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: st_investments
      expected_range: null
    - name: tesouro_auction_accepted_qty
      label: Quantidade aceita no leilão
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: tesouro_auction_accepted_qty
      expected_range: null
    - name: tesouro_auction_avg_rate
      label: Taxa média do leilão
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: irregular
      grain: object
      concept: tesouro_auction_avg_rate
      expected_range:
        min: -2
        max: 30
    - name: tesouro_auction_bid_to_cover
      label: Aceito sobre ofertado no leilão
      kind: instrument
      unit: x
      dimension: ratio
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: tesouro_auction_bid_to_cover
      expected_range: null
    - name: tesouro_auction_cut_rate
      label: Taxa de corte do leilão
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: irregular
      grain: object
      concept: tesouro_auction_cut_rate
      expected_range:
        min: -2
        max: 30
    - name: tesouro_auction_financial
      label: Financeiro colocado no leilão
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: tesouro_auction_financial
      expected_range: null
    - name: tesouro_auction_offered_qty
      label: Quantidade ofertada no leilão
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: tesouro_auction_offered_qty
      expected_range: null
    - name: tesouro_auction_second_round_qty
      label: Quantidade vendida na segunda volta
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: tesouro_auction_second_round_qty
      expected_range: null
    - name: tesouro_buy_price
      label: Preço de compra do Tesouro
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: tesouro_buy_price
      expected_range: null
    - name: tesouro_buy_rate
      label: Taxa de compra do Tesouro
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: daily
      grain: object
      concept: tesouro_buy_rate
      expected_range:
        min: -2
        max: 25
    - name: tesouro_min_investment
      label: Investimento mínimo no Tesouro
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: tesouro_min_investment
      expected_range:
        min: 1
        max: 500
    - name: tesouro_offer_buy_price
      label: Preço de compra na oferta corrente
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: tesouro_buy_price
      expected_range: null
    - name: tesouro_offer_buy_rate
      label: Taxa de compra na oferta corrente
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: daily
      grain: object
      concept: tesouro_buy_rate
      expected_range:
        min: -2
        max: 25
    - name: tesouro_offer_sell_price
      label: Preço de recompra na oferta corrente
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: tesouro_sell_price
      expected_range: null
    - name: tesouro_offer_sell_rate
      label: Taxa de recompra na oferta corrente
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: daily
      grain: object
      concept: tesouro_sell_rate
      expected_range:
        min: -2
        max: 25
    - name: tesouro_sell_price
      label: Preço de venda do Tesouro
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: tesouro_sell_price
      expected_range: null
    - name: tesouro_sell_rate
      label: Taxa de venda do Tesouro
      kind: instrument
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: daily
      grain: object
      concept: tesouro_sell_rate
      expected_range:
        min: -2
        max: 25
    - name: token_holders
      label: Detentores do token
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: token_holders
      expected_range: null
    - name: token_supply
      label: Oferta do token
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: token_supply
      expected_range: null
    - name: token_transfers
      label: Transferências do token
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: none
      cadence: irregular
      grain: object
      concept: token_transfers
      expected_range: null
    - name: total_assets
      label: Ativo total
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: total_assets
      expected_range: null
    - name: total_value
      label: Valor total da carteira do fundo
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: fund_total_value
      expected_range: null
    - name: trade_count
      label: Número de negócios
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: trade_count_daily
      expected_range: null
    - name: trade_count
      label: Número de negócios
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: irregular
      grain: object
      concept: trade_count_daily
      expected_range: null
    - name: trade_price_last
      label: Último preço negociado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: last_trade_price
      expected_range: null
    - name: trade_price_max
      label: Preço máximo negociado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: max_trade_price
      expected_range: null
    - name: trade_price_min
      label: Preço mínimo negociado
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: min_trade_price
      expected_range: null
    - name: trade_quantity
      label: Quantidade negociada no dia
      kind: equity_security
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: trade_volume
      label: Volume negociado no dia
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: trade_vwap
      label: Preço médio ponderado por volume
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: avg_trade_price
      expected_range: null
    - name: traded_quantity
      label: Quantidade negociada no balcão
      kind: instrument
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: irregular
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: trades
      label: Negócios no período
      kind: crypto_asset
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: trade_count_daily
      expected_range: null
    - name: us_change_pct_1y
      label: Variação em 1 ano (EUA)
      kind: company
      unit: pct
      dimension: rate
      scale: percent
      period: ttm_12m
      cadence: daily
      grain: object
      concept: return_12m
      expected_range: null
    - name: us_change_pct_1y
      label: Variação em 1 ano (EUA)
      kind: fund
      unit: pct
      dimension: rate
      scale: percent
      period: ttm_12m
      cadence: daily
      grain: object
      concept: return_12m
      expected_range: null
    - name: us_close
      label: Fechamento (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: us_close
      label: Fechamento (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: close_price
      expected_range: null
    - name: us_eps_diluted_fy
      label: Lucro por ação diluído do ano fiscal (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: annual
      cadence: quarterly
      grain: object
      concept: eps_diluted_annual
      expected_range: null
    - name: us_eps_diluted_fy
      label: Lucro por ação diluído do ano fiscal (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: annual
      cadence: quarterly
      grain: object
      concept: eps_diluted_annual
      expected_range: null
    - name: us_eps_diluted_q
      label: Lucro por ação diluído do trimestre (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: eps_diluted_quarterly
      expected_range: null
    - name: us_eps_diluted_q
      label: Lucro por ação diluído do trimestre (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: eps_diluted_quarterly
      expected_range: null
    - name: us_high
      label: Preço máximo do pregão (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: high_price
      expected_range: null
    - name: us_high
      label: Preço máximo do pregão (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: high_price
      expected_range: null
    - name: us_high_52w
      label: Máxima de 52 semanas (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: daily
      grain: object
      concept: us_high_52w
      expected_range: null
    - name: us_high_52w
      label: Máxima de 52 semanas (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: daily
      grain: object
      concept: us_high_52w
      expected_range: null
    - name: us_low
      label: Preço mínimo do pregão (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: low_price
      expected_range: null
    - name: us_low
      label: Preço mínimo do pregão (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: low_price
      expected_range: null
    - name: us_low_52w
      label: Mínima de 52 semanas (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: daily
      grain: object
      concept: us_low_52w
      expected_range: null
    - name: us_low_52w
      label: Mínima de 52 semanas (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: ttm_12m
      cadence: daily
      grain: object
      concept: us_low_52w
      expected_range: null
    - name: us_net_income_fy
      label: Lucro líquido do ano fiscal (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: annual
      cadence: quarterly
      grain: object
      concept: net_income_annual
      expected_range: null
    - name: us_net_income_fy
      label: Lucro líquido do ano fiscal (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: annual
      cadence: quarterly
      grain: object
      concept: net_income_annual
      expected_range: null
    - name: us_net_income_q
      label: Lucro trimestral (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: net_income_quarterly
      expected_range: null
    - name: us_net_income_q
      label: Lucro trimestral (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: net_income_quarterly
      expected_range: null
    - name: us_open
      label: Preço de abertura (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: open_price
      expected_range: null
    - name: us_open
      label: Preço de abertura (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: none
      cadence: daily
      grain: object
      concept: open_price
      expected_range: null
    - name: us_revenue_fy
      label: Receita do ano fiscal (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: annual
      cadence: quarterly
      grain: object
      concept: revenue_annual
      expected_range: null
    - name: us_revenue_fy
      label: Receita do ano fiscal (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: annual
      cadence: quarterly
      grain: object
      concept: revenue_annual
      expected_range: null
    - name: us_revenue_q
      label: Receita do trimestre (EUA)
      kind: company
      unit: usd
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: revenue_quarterly
      expected_range: null
    - name: us_revenue_q
      label: Receita do trimestre (EUA)
      kind: fund
      unit: usd
      dimension: currency
      scale: unit
      period: quarterly
      cadence: quarterly
      grain: object
      concept: revenue_quarterly
      expected_range: null
    - name: us_volume
      label: Volume (EUA)
      kind: company
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: us_volume
      label: Volume (EUA)
      kind: fund
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: value
      label: Valor da série
      kind: data_series
      unit: native
      dimension: null
      scale: null
      period: null
      cadence: irregular
      grain: object
      concept: series_value
      expected_range: null
    - name: volatilidade
      label: Volatilidade
      kind: equity_security
      unit: pct
      dimension: rate
      scale: percent
      period: annual
      cadence: daily
      grain: object
      concept: volatilidade
      expected_range:
        min: 0
        max: 300
    - name: volume
      label: Volume financeiro
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: paper
      concept: financial_volume_daily
      expected_range: null
    - name: volume
      label: Volume financeiro
      kind: crypto_asset
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: volume
      label: Volume financeiro
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: volume
      label: Volume financeiro
      kind: fund
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: volume
      label: Volume financeiro
      kind: instrument
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: financial_volume_daily
      expected_range: null
    - name: volume_medio_2m
      label: Volume financeiro médio (2 meses)
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: financial_volume_daily_avg_2m
      expected_range: null
    - name: volume_units
      label: Quantidade negociada
      kind: crypto_asset
      unit: count
      dimension: count
      scale: unit
      period: daily
      cadence: daily
      grain: object
      concept: traded_quantity_daily
      expected_range: null
    - name: vpa
      label: Valor patrimonial por ação
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: paper
      concept: book_value_per_share
      expected_range: null
    - name: vpa
      label: Valor patrimonial por ação
      kind: equity_security
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: book_value_per_share
      expected_range: null
    - name: working_capital
      label: Capital de giro
      kind: company
      unit: brl
      dimension: currency
      scale: unit
      period: none
      cadence: quarterly
      grain: object
      concept: working_capital
      expected_range: null
  concepts:
    - concept: avg_trade_price
      label: Preço médio negociado
      dimension: currency
      period: none
      note: Média ponderada por volume quando a fonte a publica.
    - concept: bank_basileia
      label: Índice de Basileia
      dimension: share
      period: quarterly
      note: ""
    - concept: bank_capital_pr
      label: Patrimônio de referência
      dimension: currency
      period: none
      note: ""
    - concept: bank_credit_portfolio
      label: Carteira de crédito
      dimension: currency
      period: none
      note: ""
    - concept: beta
      label: Beta
      dimension: ratio
      period: none
      note: ""
    - concept: book_value_per_share
      label: Valor patrimonial por cota ou ação
      dimension: currency
      period: none
      note: ""
    - concept: book_value_per_share_unadjusted
      label: Cota sem ajuste
      dimension: currency
      period: none
      note: ""
    - concept: capex
      label: Capex
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: cash
      label: Caixa e equivalentes
      dimension: currency
      period: none
      note: ""
    - concept: cdi_month
      label: CDI do mês
      dimension: rate
      period: monthly
      note: Do índice de riqueza da Selic-over; mesma definição das demais
        superfícies.
    - concept: cdi_return_since_inception
      label: CDI desde o início da série
      dimension: rate
      period: none
      note: ""
    - concept: cdi_return_ytd
      label: CDI no ano
      dimension: rate
      period: ytd
      note: ""
    - concept: close_price
      label: Preço de fechamento
      dimension: currency
      period: none
      note: Fechamento do pregão, ajustado por proventos quando a fonte permite. Moeda
        declarada nos eixos.
    - concept: close_price_total_return
      label: Fechamento com retorno total
      dimension: currency
      period: none
      note: Fechamento ajustado por eventos E por proventos reinvestidos (bruto).
        Igual ao fechamento ajustado quando não há fonte de proventos para o
        papel.
    - concept: close_price_unadjusted
      label: Preço de fechamento sem ajuste
      dimension: currency
      period: none
      note: Como saiu do pregão; serve para conferir contra a tela, não para retorno.
    - concept: coe_additional_rate_pct
      label: Taxa adicional do COE
      dimension: rate
      period: annual
      note: ""
    - concept: coe_issue_price
      label: Preço de emissão do COE
      dimension: currency
      period: none
      note: ""
    - concept: coe_issue_size
      label: Volume emitido do COE
      dimension: currency
      period: none
      note: ""
    - concept: coe_trade_count
      label: Negócios do COE
      dimension: count
      period: none
      note: ""
    - concept: coe_trade_days
      label: Dias com negócio do COE
      dimension: count
      period: none
      note: ""
    - concept: coe_volume
      label: Volume negociado do COE
      dimension: currency
      period: none
      note: ""
    - concept: crowdfunding_collateral_volume
      label: Volume do lastro
      dimension: currency
      period: none
      note: Soma dos itens de lastro do Anexo G. Nao e o valor captado nem o alvo.
    - concept: crowdfunding_fill
      label: Captado sobre o alvo
      dimension: share
      period: none
      note: ""
    - concept: crowdfunding_raised
      label: Valor captado
      dimension: currency
      period: none
      note: ""
    - concept: crypto_rank
      label: Posição por valor de mercado
      dimension: count
      period: none
      note: ""
    - concept: current_assets
      label: Ativo circulante
      dimension: currency
      period: none
      note: ""
    - concept: current_liabilities
      label: Passivo circulante
      dimension: currency
      period: none
      note: ""
    - concept: curve_rate
      label: Taxa da curva
      dimension: rate
      period: annual
      note: ""
    - concept: daily_change_pct
      label: Variação diária
      dimension: rate
      period: daily
      note: ""
    - concept: deb_buy_value_brl
      label: Compras de fundos na debênture
      dimension: currency
      period: monthly
      note: Compras brutas declaradas no mês, positivas. Nulo quando nenhum fundo
        declarou fluxo na competência.
    - concept: deb_funds_qty
      label: Quantidade em carteiras de fundos
      dimension: count
      period: monthly
      note: ""
    - concept: deb_funds_value_brl
      label: Valor em carteiras de fundos
      dimension: currency
      period: monthly
      note: ""
    - concept: deb_net_traded_brl
      label: Negociação líquida por fundos
      dimension: currency
      period: monthly
      note: ""
    - concept: deb_sell_value_brl
      label: Vendas de fundos na debênture
      dimension: currency
      period: monthly
      note: "Vendas brutas declaradas no mês, POSITIVAS: magnitude, não sinal."
    - concept: distribution_per_share
      label: Provento por cota ou ação
      dimension: currency
      period: none
      note: Bruto, por evento.
    - concept: div_bruta_pl
      label: Dívida bruta / patrimônio
      dimension: ratio
      period: none
      note: ""
    - concept: div_liquida_ebitda
      label: Dívida líquida / EBITDA
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: div_liquida_pl
      label: Dívida líquida / patrimônio
      dimension: ratio
      period: none
      note: ""
    - concept: dividend_per_share_net
      label: Dividendo líquido por ação
      dimension: currency
      period: none
      note: ""
    - concept: dividend_yield_12m
      label: Dividend yield de 12 meses
      dimension: rate
      period: ttm_12m
      note: "A escala diverge: fração na ação, percentual no FII. Ler `axes.scale`
        antes de comparar."
    - concept: dividend_yield_monthly
      label: Dividend yield mensal
      dimension: rate
      period: monthly
      note: ""
    - concept: dna
      label: Depreciação e amortização
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: duration_bd
      label: Duração em dias úteis
      dimension: duration
      period: none
      note: ""
    - concept: earnings_cagr_3y
      label: Crescimento do lucro (3 anos)
      dimension: rate
      period: cagr_3y
      note: ""
    - concept: earnings_cagr_5y
      label: Crescimento do lucro (5 anos)
      dimension: rate
      period: cagr_5y
      note: ""
    - concept: ebit
      label: EBIT
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: ebit_ativos
      label: EBIT sobre ativos
      dimension: rate
      period: ttm_12m
      note: ""
    - concept: ebitda
      label: EBITDA
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: ebitda_cagr_3y
      label: Crescimento do EBITDA (3 anos)
      dimension: rate
      period: cagr_3y
      note: ""
    - concept: eps_diluted_annual
      label: Lucro por ação diluído do ano fiscal
      dimension: currency
      period: annual
      note: ""
    - concept: eps_diluted_quarterly
      label: Lucro por ação diluído do trimestre
      dimension: currency
      period: quarterly
      note: ""
    - concept: eps_ttm
      label: Lucro por ação de 12 meses
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: etf_quota_count_authorized
      label: Cotas autorizadas do ETF
      dimension: count
      period: none
      note: ""
    - concept: ev_ebit
      label: EV/EBIT
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: ev_ebitda
      label: EV/EBITDA
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: face_value_current
      label: Valor nominal atualizado
      dimension: currency
      period: none
      note: ""
    - concept: face_value_issue
      label: Valor nominal na emissão
      dimension: currency
      period: none
      note: ""
    - concept: fcf
      label: Fluxo de caixa livre
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: fidc_acquired_amount
      label: Direitos creditórios adquiridos
      dimension: currency
      period: monthly
      note: ""
    - concept: fidc_acquired_count
      label: Direitos creditórios adquiridos (contagem)
      dimension: count
      period: monthly
      note: Quantos direitos foram adquiridos no mês. Com o valor ao lado dá o
        tíquete; sozinha separa cessão pulverizada de concentrada.
    - concept: fidc_acquired_impaired_pct
      label: Aquisições de crédito vencido
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_1080d
      label: Vencidos há mais de 1.080 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_120d
      label: Vencidos há mais de 120 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_150d
      label: Vencidos há mais de 150 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_180d
      label: Vencidos há mais de 180 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_30d
      label: Vencidos há mais de 30 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_360d
      label: Vencidos há mais de 360 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_60d
      label: Vencidos há mais de 60 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_720d
      label: Vencidos há mais de 720 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_90d
      label: Vencidos há mais de 90 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_aging_acima_1080d
      label: Vencidos além de 1.080 dias
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_allowance_ratio
      label: Provisão sobre a carteira
      dimension: share
      period: none
      note: ""
    - concept: fidc_amortizations
      label: Amortizações
      dimension: currency
      period: monthly
      note: ""
    - concept: fidc_avg_ticket
      label: Tíquete médio
      dimension: currency
      period: monthly
      note: ""
    - concept: fidc_buy_rate_avg
      label: Taxa média de aquisição
      dimension: rate
      period: annual
      note: ""
    - concept: fidc_collateral_pct
      label: Garantia sobre a carteira
      dimension: share
      period: none
      note: ""
    - concept: fidc_impaired_ratio
      label: Inadimplência sobre a carteira
      dimension: share
      period: none
      note: ""
    - concept: fidc_liquid_30d
      label: Liquidez em 30 dias
      dimension: currency
      period: none
      note: ""
    - concept: fidc_overdue_ratio
      label: Atraso sobre a carteira
      dimension: share
      period: none
      note: ""
    - concept: fidc_portfolio
      label: Carteira de recebíveis
      dimension: currency
      period: none
      note: ""
    - concept: fidc_portfolio_to_net_worth
      label: Carteira / patrimônio
      dimension: ratio
      period: none
      note: ""
    - concept: fidc_redemption_coverage_30d
      label: Cobertura de resgates em 30 dias
      dimension: ratio
      period: none
      note: ""
    - concept: fidc_redemptions_paid
      label: Resgates pagos
      dimension: currency
      period: monthly
      note: ""
    - concept: fidc_redemptions_requested
      label: Resgates solicitados
      dimension: currency
      period: monthly
      note: ""
    - concept: fidc_related_party_sale_pct
      label: Cessão por parte relacionada
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_repurchase_to_portfolio
      label: Recompra sobre a carteira
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_repurchased_amount
      label: Direitos creditórios recomprados
      dimension: currency
      period: monthly
      note: Quanto o cedente recomprou no mês. Ausência é a fonte não declarar
        recompra; zero é recompra declarada de zero.
    - concept: fidc_repurchased_count
      label: Direitos creditórios recomprados (contagem)
      dimension: count
      period: monthly
      note: Quantos direitos o cedente recomprou no mês.
    - concept: fidc_sale_gain
      label: Ganho na alienação da carteira
      dimension: currency
      period: monthly
      note: Valor da venda da carteira menos o contábil. Negativo é venda com deságio;
        zero é venda pelo contábil; ausência é não haver os dois lados
        declarados.
    - concept: fidc_scr_alto_risco
      label: Carteira de alto risco no SCR
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_scr_baixo_risco
      label: Carteira de baixo risco no SCR
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_sector_hhi
      label: Concentração setorial (HHI)
      dimension: index
      period: none
      note: ""
    - concept: fidc_segment_months_stable
      label: Meses com o mesmo segmento
      dimension: count
      period: none
      note: ""
    - concept: fidc_series_excess_month
      label: Excesso sobre o CDI no mês
      dimension: rate
      period: monthly
      note: Em pontos percentuais.
    - concept: fidc_series_months_in_window
      label: Meses observados no acumulado
      dimension: count
      period: none
      note: ""
    - concept: fidc_series_pct_of_cdi
      label: Percentual do CDI no mês
      dimension: ratio
      period: monthly
      note: 1,10 é 110% do CDI; convenção multiplicativa.
    - concept: fidc_series_pct_of_class
      label: Participação da série na classe
      dimension: share
      period: none
      note: ""
    - concept: fidc_series_performance_gap
      label: Entregue menos prometido
      dimension: rate
      period: monthly
      note: ""
    - concept: fidc_series_quota_count
      label: Cotas da série
      dimension: count
      period: none
      note: ""
    - concept: fidc_series_return_month
      label: Rentabilidade da série no mês
      dimension: rate
      period: monthly
      note: O informe publica em duas tabelas (rentabilidade e desempenho) que podem
        divergir.
    - concept: fidc_series_return_since_inception
      label: Retorno da série desde o início
      dimension: rate
      period: none
      note: ""
    - concept: fidc_series_return_ytd
      label: Retorno da série no ano
      dimension: rate
      period: ytd
      note: ""
    - concept: fidc_series_shortfall_streak
      label: Meses seguidos abaixo da meta
      dimension: count
      period: none
      note: ""
    - concept: fidc_series_spread_annual
      label: Spread anualizado sobre o CDI
      dimension: rate
      period: annual
      note: ""
    - concept: fidc_series_target_month
      label: Retorno prometido no mês
      dimension: rate
      period: monthly
      note: Nulo quando a série não declara meta.
    - concept: fidc_sold_amount
      label: Direitos creditórios alienados
      dimension: currency
      period: monthly
      note: Volume de direitos creditórios vendidos para fora do fundo no mês.
    - concept: fidc_subscriptions
      label: Aplicações no FIDC
      dimension: currency
      period: monthly
      note: ""
    - concept: fidc_substituted_amount
      label: Direitos creditórios substituídos
      dimension: currency
      period: monthly
      note: Volume de direitos creditórios trocados por outros no mês, sem dinheiro
        mudando de mão.
    - concept: fidc_top_originator_pct
      label: Concentração no maior cedente
      dimension: share
      period: none
      note: ""
    - concept: fidc_top_sector_share
      label: Concentração no maior setor
      dimension: share
      period: monthly
      note: ""
    - concept: fidc_top_segment_share
      label: Concentração no maior segmento
      dimension: share
      period: monthly
      note: ""
    - concept: fii_area_m2
      label: Área bruta locável
      dimension: area
      period: none
      note: ""
    - concept: fii_cap_rate
      label: Cap rate
      dimension: rate
      period: annual
      note: ""
    - concept: fii_distribution_per_share_adj
      label: Rendimento por cota ajustado
      dimension: currency
      period: none
      note: ""
    - concept: fii_fee_effective_pct_aa
      label: Taxa efetiva anual do FII
      dimension: rate
      period: annual
      note: ""
    - concept: fii_fee_month_max_annualized
      label: Maior taxa mensal anualizada
      dimension: rate
      period: annual
      note: ""
    - concept: fii_fee_months_observed
      label: Meses observados de taxa
      dimension: count
      period: none
      note: ""
    - concept: fii_ffo_yield
      label: FFO yield
      dimension: rate
      period: ttm_12m
      note: ""
    - concept: fii_price_m2
      label: Preço por m²
      dimension: currency
      period: none
      note: ""
    - concept: fii_properties
      label: Imóveis
      dimension: count
      period: none
      note: ""
    - concept: fii_rent_m2
      label: Aluguel por m²
      dimension: currency
      period: monthly
      note: ""
    - concept: fii_vacancy
      label: Vacância física
      dimension: share
      period: none
      note: ""
    - concept: financial_volume_daily
      label: Volume financeiro diário
      dimension: currency
      period: daily
      note: Dinheiro negociado no dia, em reais.
    - concept: financial_volume_daily_avg_2m
      label: Volume financeiro médio (2 meses)
      dimension: currency
      period: daily
      note: ""
    - concept: focus_expectation_mean
      label: Média das expectativas Focus
      dimension: null
      period: null
      note: ""
    - concept: focus_expectation_median
      label: Mediana das expectativas Focus
      dimension: null
      period: null
      note: ""
    - concept: focus_expectation_std_dev
      label: Desvio-padrão das expectativas Focus
      dimension: null
      period: null
      note: ""
    - concept: focus_respondents
      label: Respondentes do Focus
      dimension: count
      period: none
      note: ""
    - concept: fund_holders_count_monthly
      label: Fundos detentores no mês
      dimension: count
      period: monthly
      note: Quantos fundos declararam posição no papel na competência.
    - concept: fund_inflow
      label: Captação bruta do fundo
      dimension: currency
      period: daily
      note: Aplicações do dia, sem descontar resgate. A líquida é `net_flow_daily`.
    - concept: fund_outflow
      label: Resgate bruto do fundo
      dimension: currency
      period: daily
      note: Resgates pagos no dia, sem compensar com aplicação.
    - concept: fund_total_value
      label: Valor total da carteira do fundo
      dimension: currency
      period: none
      note: Carteira do informe diário da CVM. Não é o patrimônio líquido
        (`net_worth`), que já desconta as obrigações.
    - concept: funds_appeared
      label: Fundos que começaram a divulgar
      dimension: count
      period: monthly
      note: Fundos que passaram a entregar carteira nesta competência — entrada na
        BASE, não compra. Cortados do delta de posição por isso.
    - concept: funds_balanced_panel_count_monthly
      label: Fundos no painel comparável
      dimension: count
      period: monthly
      note: Fundos presentes nas DUAS competências, sobre os quais a variação de
        posição é medida. Não é `funds_panel_count_monthly`, que conta quem
        entregou carteira no mês.
    - concept: funds_closed_short
      label: Fundos que zeraram posição vendida
      dimension: count
      period: monthly
      note: ""
    - concept: funds_decreased
      label: Fundos que reduziram posição
      dimension: count
      period: monthly
      note: Redução sem zerar; quem zerou conta em `funds_exited`.
    - concept: funds_entered
      label: Fundos que entraram
      dimension: count
      period: monthly
      note: ""
    - concept: funds_exited
      label: Fundos que saíram
      dimension: count
      period: monthly
      note: ""
    - concept: funds_implied_price
      label: Preço implícito do CDA
      dimension: currency
      period: none
      note: Valor declarado dividido pela quantidade declarada na carteira do fundo.
        Não é o fechamento do pregão.
    - concept: funds_increased
      label: Fundos que aumentaram posição
      dimension: count
      period: monthly
      note: Reforço de posição existente; posição nova conta em `funds_entered`.
    - concept: funds_opened_short
      label: Fundos que abriram posição vendida
      dimension: count
      period: monthly
      note: ""
    - concept: funds_panel_count_monthly
      label: Fundos no painel da competência
      dimension: count
      period: monthly
      note: Quantos fundos entregaram carteira na competência — o denominador de
        qualquer participação medida sobre o painel.
    - concept: funds_panel_coverage_pct
      label: Cobertura do painel de fundos
      dimension: share
      period: monthly
      note: ""
    - concept: funds_partial_disclosure
      label: Fundos com divulgação parcial
      dimension: count
      period: monthly
      note: Cortados do painel comparável por divulgação parcial da carteira.
    - concept: funds_qty_undisclosed
      label: Fundos sem quantidade declarada
      dimension: count
      period: monthly
      note: Declararam valor em R$ sem quantidade num dos meses, e por isso saíram do
        painel comparável.
    - concept: funds_shares
      label: Papéis em carteiras de fundos
      dimension: count
      period: monthly
      note: ""
    - concept: funds_shares_delta
      label: Variação de papéis em carteiras de fundos
      dimension: count
      period: monthly
      note: Variação em QUANTIDADE sobre o painel comparável. Ausente na competência
        sem painel comparável — o motivo é propriedade do papel, não ponto de
        série.
    - concept: funds_short_holders
      label: Fundos vendidos no papel
      dimension: count
      period: monthly
      note: "Posição econômica NEGATIVA: obrigação por ações recebidas em empréstimo
        maior que a posse. Disjunto de `fund_holders_count_monthly`."
    - concept: funds_short_value_brl
      label: Obrigação dos fundos no papel
      dimension: currency
      period: monthly
      note: "A ponta VENDIDA: obrigação por ações recebidas em empréstimo. Negativa,
        como na fonte."
    - concept: funds_value_brl
      label: Valor em carteiras de fundos
      dimension: currency
      period: monthly
      note: ""
    - concept: funds_value_flow_brl
      label: Fluxo de fundos
      dimension: currency
      period: monthly
      note: ""
    - concept: funds_value_price_effect_brl
      label: Efeito preço nas carteiras de fundos
      dimension: currency
      period: monthly
      note: ""
    - concept: giro_ativos
      label: Giro dos ativos
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: gross_debt
      label: Dívida bruta
      dimension: currency
      period: none
      note: ""
    - concept: gross_profit
      label: Lucro bruto
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: gross_revenue_annual
      label: Receita bruta anual
      dimension: currency
      period: annual
      note: ""
    - concept: high_price
      label: Preço máximo do pregão
      dimension: currency
      period: none
      note: Máxima da sessão como a fonte de preço publica. Não é `max_trade_price`,
        que vem do consolidado de negócios da B3 e diverge do COTAHIST.
    - concept: holders_count
      label: Número de detentores
      dimension: count
      period: none
      note: Cotistas ou acionistas na competência.
    - concept: index_level
      label: Nível do índice
      dimension: index
      period: none
      note: Pontos, não dinheiro. Índice de preço da B3 e índice de retorno total da
        ANBIMA não se comparam sem converter a retorno.
    - concept: indexer_pct
      label: Percentual do indexador
      dimension: share
      period: none
      note: ""
    - concept: indicator_value
      label: Valor do indicador
      dimension: null
      period: null
      note: ""
    - concept: insider_buy_value_brl
      label: Compras de insiders
      dimension: currency
      period: monthly
      note: ""
    - concept: insider_net_shares
      label: Saldo líquido de insiders em papéis
      dimension: count
      period: monthly
      note: ""
    - concept: insider_net_value_monthly
      label: Saldo líquido de insiders no mês
      dimension: currency
      period: monthly
      note: ""
    - concept: insider_sell_value_brl
      label: Vendas de insiders
      dimension: currency
      period: monthly
      note: ""
    - concept: invested_capital
      label: Capital investido
      dimension: currency
      period: none
      note: ""
    - concept: jcp_per_share
      label: JCP por ação
      dimension: currency
      period: none
      note: ""
    - concept: jcp_share
      label: Parcela de JCP nos proventos
      dimension: share
      period: ttm_12m
      note: ""
    - concept: last_trade_price
      label: Último preço negociado
      dimension: currency
      period: none
      note: ""
    - concept: liquidez_corrente
      label: Liquidez corrente
      dimension: ratio
      period: none
      note: ""
    - concept: low_price
      label: Preço mínimo do pregão
      dimension: currency
      period: none
      note: Mínima da sessão como a fonte de preço publica. Não é `min_trade_price`,
        do consolidado de negócios da B3.
    - concept: lt_debt
      label: Dívida de longo prazo
      dimension: currency
      period: none
      note: Parcela onerosa que vence depois de doze meses. Não é o passivo não
        circulante, que inclui provisão e imposto diferido.
    - concept: margem_bruta
      label: Margem bruta
      dimension: share
      period: ttm_12m
      note: ""
    - concept: margem_ebit
      label: Margem EBIT
      dimension: share
      period: ttm_12m
      note: ""
    - concept: margem_liquida
      label: Margem líquida
      dimension: share
      period: ttm_12m
      note: ""
    - concept: market_cap_company
      label: Valor de mercado da companhia
      dimension: currency
      period: none
      note: Todas as classes somadas — o valor real.
    - concept: market_cap_share_class
      label: Valor de mercado da classe de ação
      dimension: currency
      period: none
      note: "PETR3 e PETR4 dão números diferentes: é a ótica por classe, não a
        companhia."
    - concept: max_trade_price
      label: Preço máximo negociado
      dimension: currency
      period: none
      note: ""
    - concept: min_trade_price
      label: Preço mínimo negociado
      dimension: currency
      period: none
      note: ""
    - concept: net_current_assets
      label: Ativo circulante líquido
      dimension: currency
      period: none
      note: Ativo circulante menos TODO o passivo exigível (circulante e não
        circulante). Não é o capital de giro, que desconta só o circulante.
    - concept: net_debt
      label: Dívida líquida
      dimension: currency
      period: none
      note: ""
    - concept: net_flow_daily
      label: Captação líquida diária
      dimension: currency
      period: daily
      note: ""
    - concept: net_flow_monthly
      label: Captação líquida mensal
      dimension: currency
      period: monthly
      note: ""
    - concept: net_income_annual
      label: Lucro líquido do ano fiscal
      dimension: currency
      period: annual
      note: ""
    - concept: net_income_quarterly
      label: Lucro líquido do trimestre
      dimension: currency
      period: quarterly
      note: ""
    - concept: net_income_ttm
      label: Lucro líquido de 12 meses
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: net_worth
      label: Patrimônio líquido do fundo
      dimension: currency
      period: none
      note: Cota × cotas no informe do fundo; muda com a cota. Não é o PL de companhia
        (`shareholders_equity`).
    - concept: noncurrent_liabilities
      label: Passivo não circulante
      dimension: currency
      period: none
      note: ""
    - concept: nopat
      label: NOPAT
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: ocf
      label: Caixa operacional
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: offering_amount
      label: Valor da oferta
      dimension: currency
      period: none
      note: O alvo, não o captado.
    - concept: offering_quantity
      label: Quantidade ofertada
      dimension: count
      period: none
      note: ""
    - concept: offering_unit_price
      label: Preço unitário da oferta
      dimension: currency
      period: none
      note: ""
    - concept: open_price
      label: Preço de abertura
      dimension: currency
      period: none
      note: Primeiro preço da sessão, na mesma régua de ajuste do fechamento. Moeda
        declarada nos eixos.
    - concept: p_ativo_circ_liq
      label: Preço sobre ativo circulante líquido
      dimension: ratio
      period: none
      note: ""
    - concept: p_ativos
      label: Preço sobre ativos
      dimension: ratio
      period: none
      note: ""
    - concept: p_cap_giro
      label: Preço sobre capital de giro
      dimension: ratio
      period: none
      note: ""
    - concept: p_ebit
      label: P/EBIT
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: p_fcf
      label: Preço sobre fluxo de caixa livre
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: payout
      label: Payout
      dimension: share
      period: ttm_12m
      note: ""
    - concept: pct_of_curve
      label: Percentual da curva
      dimension: share
      period: none
      note: ""
    - concept: pl
      label: P/L
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: portfolio_value_kbrl
      label: Valor da carteira teórica
      dimension: currency
      period: none
      note: ""
    - concept: price_at_eval
      label: Preço na data da avaliação
      dimension: currency
      period: none
      note: ""
    - concept: price_to_book
      label: Preço sobre valor patrimonial
      dimension: ratio
      period: none
      note: ""
    - concept: psr
      label: P/Receita
      dimension: ratio
      period: ttm_12m
      note: ""
    - concept: qty_outstanding
      label: Quantidade em circulação
      dimension: count
      period: none
      note: ""
    - concept: quantity_issued
      label: Quantidade emitida
      dimension: count
      period: none
      note: ""
    - concept: return_12m
      label: Retorno em 12 meses
      dimension: rate
      period: ttm_12m
      note: ""
    - concept: revenue_annual
      label: Receita do ano fiscal
      dimension: currency
      period: annual
      note: ""
    - concept: revenue_cagr_3y
      label: Crescimento da receita (3 anos)
      dimension: rate
      period: cagr_3y
      note: ""
    - concept: revenue_cagr_5y
      label: Crescimento da receita (5 anos)
      dimension: rate
      period: cagr_5y
      note: ""
    - concept: revenue_quarterly
      label: Receita do trimestre
      dimension: currency
      period: quarterly
      note: ""
    - concept: revenue_ttm
      label: Receita líquida de 12 meses
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: roa
      label: ROA
      dimension: rate
      period: ttm_12m
      note: ""
    - concept: roe
      label: ROE
      dimension: rate
      period: ttm_12m
      note: ""
    - concept: roic
      label: ROIC
      dimension: rate
      period: ttm_12m
      note: ""
    - concept: securit_amortization
      label: Amortizações pagas pela série
      dimension: currency
      period: none
      note: ""
    - concept: securit_assets
      label: Ativo do patrimônio separado
      dimension: currency
      period: none
      note: ""
    - concept: securit_assignor_recourse
      label: Coobrigação do cedente
      dimension: share
      period: none
      note: Parcela da carteira coberta por coobrigação do cedente — quem recompra o
        recebível que não paga.
    - concept: securit_cash
      label: Caixa do patrimônio separado
      dimension: currency
      period: none
      note: ""
    - concept: securit_due
      label: Créditos a vencer
      dimension: currency
      period: none
      note: Soma das oito faixas de vencimento da carteira de recebíveis.
    - concept: securit_duration
      label: Duração da carteira
      dimension: duration
      period: none
      note: Duration declarada da carteira de recebíveis, em meses. Nula quando a
        fonte escreve por extenso.
    - concept: securit_expenses
      label: Despesas pagas no mês
      dimension: currency
      period: monthly
      note: ""
    - concept: securit_income
      label: Rendimentos pagos pela série
      dimension: currency
      period: none
      note: ""
    - concept: securit_net_cash_change
      label: Variação líquida de caixa no mês
      dimension: currency
      period: monthly
      note: ""
    - concept: securit_net_worth
      label: Patrimônio líquido da emissão
      dimension: currency
      period: none
      note: Patrimônio separado do certificado de securitização, declarado no informe
        mensal. Só existe no layout vigente do CRI (a partir de 2022-07) e desde
        sempre no CRA.
    - concept: securit_outstanding
      label: Saldo devedor da emissão
      dimension: currency
      period: none
      note: Valor ATUALIZADO da emissão — quanto ainda está de pé. Não é o valor de
        emissão original.
    - concept: securit_paid_in
      label: Total integralizado da série
      dimension: currency
      period: none
      note: ""
    - concept: securit_portfolio_over_issue
      label: Carteira sobre a emissão
      dimension: share
      period: none
      note: Razão entre a carteira de recebíveis e o total emitido. Abaixo de 1 é
        emissão descoberta.
    - concept: securit_receipts
      label: Recebimentos do mês
      dimension: currency
      period: monthly
      note: ""
    - concept: securit_receivables
      label: Recebíveis do patrimônio separado
      dimension: currency
      period: none
      note: ""
    - concept: securit_receivables_overdue
      label: Recebíveis vencidos
      dimension: currency
      period: none
      note: Vencidos e não pagos no balanço do patrimônio separado.
    - concept: securit_senior_paid
      label: Pago à classe sênior no mês
      dimension: currency
      period: monthly
      note: Amortização de principal mais juros da sênior. É a cascata realizada, não
        a projetada.
    - concept: securit_top10_assignor
      label: Concentração nos 10 maiores cedentes
      dimension: share
      period: none
      note: ""
    - concept: securit_top10_debtor
      label: Concentração nos 10 maiores devedores
      dimension: share
      period: none
      note: ""
    - concept: securit_top1_assignor
      label: Concentração no maior cedente
      dimension: share
      period: none
      note: ""
    - concept: securit_top1_debtor
      label: Concentração no maior devedor
      dimension: share
      period: none
      note: ""
    - concept: securit_top20_assignor
      label: Concentração nos 20 maiores cedentes
      dimension: share
      period: none
      note: ""
    - concept: securit_top20_debtor
      label: Concentração nos 20 maiores devedores
      dimension: share
      period: none
      note: ""
    - concept: securit_top5_assignor
      label: Concentração nos 5 maiores cedentes
      dimension: share
      period: none
      note: ""
    - concept: securit_top5_debtor
      label: Concentração nos 5 maiores devedores
      dimension: share
      period: none
      note: ""
    - concept: securit_unpaid
      label: Créditos não pagos
      dimension: currency
      period: none
      note: Soma das oito faixas de atraso da carteira de recebíveis.
    - concept: securit_unpaid_pct
      label: Inadimplência da carteira
      dimension: share
      period: none
      note: "Não pagos sobre a carteira INTEIRA (a vencer + não pagos). Nulo quando o
        denominador é zero — nunca 0%, que se leria como carteira limpa. O
        sufixo `_pct` é obrigatório: o valor vem em PONTO PERCENTUAL (12,4 é
        12,4%), e `_ratio` prometeria fração."
    - concept: series_value
      label: Valor da série
      dimension: null
      period: null
      note: Régua da própria série, declarada pela fonte.
    - concept: sessions_count
      label: Pregões com negócio
      dimension: count
      period: none
      note: ""
    - concept: shareholders_equity
      label: Patrimônio líquido da companhia
      dimension: currency
      period: none
      note: Do balanço; muda por trimestre e é o denominador de ROE e P/VP. Não é o PL
        de fundo (`net_worth`).
    - concept: spread_median
      label: Spread mediano
      dimension: rate
      period: annual
      note: ""
    - concept: spread_n_papers
      label: Papéis no spread
      dimension: count
      period: none
      note: ""
    - concept: spread_pct_aa
      label: Spread ao ano
      dimension: rate
      period: annual
      note: ""
    - concept: st_debt
      label: Dívida de curto prazo
      dimension: currency
      period: none
      note: Parcela onerosa que vence em até doze meses. Com lt_debt fecha a dívida
        bruta.
    - concept: st_investments
      label: Aplicações financeiras de curto prazo
      dimension: currency
      period: none
      note: Abate a dívida junto do caixa no cálculo da dívida líquida.
    - concept: tesouro_auction_accepted_qty
      label: Quantidade aceita no leilão
      dimension: count
      period: none
      note: Colocada na 1ª volta do leilão primário. Zero é leilão recusado por preço,
        não dado ausente.
    - concept: tesouro_auction_avg_rate
      label: Taxa média do leilão
      dimension: rate
      period: annual
      note: Média das propostas aceitas na 1ª volta.
    - concept: tesouro_auction_bid_to_cover
      label: Aceito sobre ofertado no leilão
      dimension: ratio
      period: none
      note: ACEITO dividido por OFERTADO na 1ª volta — a fonte não publica o total
        demandado pelos dealers, então não é o bid-to-cover clássico.
    - concept: tesouro_auction_cut_rate
      label: Taxa de corte do leilão
      dimension: rate
      period: annual
      note: "A pior taxa aceita no leilão primário: o preço marginal do atacado, que
        diverge da oferta do varejo."
    - concept: tesouro_auction_financial
      label: Financeiro colocado no leilão
      dimension: currency
      period: none
      note: ""
    - concept: tesouro_auction_offered_qty
      label: Quantidade ofertada no leilão
      dimension: count
      period: none
      note: ""
    - concept: tesouro_auction_second_round_qty
      label: Quantidade vendida na segunda volta
      dimension: count
      period: none
      note: Nulo = não houve 2ª volta; zero = houve e não vendeu.
    - concept: tesouro_buy_price
      label: Preço de compra do Tesouro
      dimension: currency
      period: none
      note: ""
    - concept: tesouro_buy_rate
      label: Taxa de compra do Tesouro
      dimension: rate
      period: annual
      note: ""
    - concept: tesouro_min_investment
      label: Investimento mínimo no Tesouro
      dimension: currency
      period: none
      note: "O menor valor com que se compra o título na oferta corrente. Não é o PU:
        o Tesouro negocia fração, e um papel de PU 19.783 entra com dezenas de
        reais."
    - concept: tesouro_sell_price
      label: Preço de venda do Tesouro
      dimension: currency
      period: none
      note: ""
    - concept: tesouro_sell_rate
      label: Taxa de venda do Tesouro
      dimension: rate
      period: annual
      note: ""
    - concept: token_holders
      label: Detentores do token
      dimension: count
      period: none
      note: ""
    - concept: token_supply
      label: Oferta do token
      dimension: count
      period: none
      note: ""
    - concept: token_transfers
      label: Transferências do token
      dimension: count
      period: none
      note: ""
    - concept: total_assets
      label: Ativo total
      dimension: currency
      period: none
      note: ""
    - concept: trade_count_daily
      label: Negócios no dia
      dimension: count
      period: daily
      note: ""
    - concept: traded_quantity_daily
      label: Quantidade negociada no dia
      dimension: count
      period: daily
      note: Em unidades do próprio ativo, não em dinheiro.
    - concept: us_high_52w
      label: Máxima de 52 semanas (EUA)
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: us_low_52w
      label: Mínima de 52 semanas (EUA)
      dimension: currency
      period: ttm_12m
      note: ""
    - concept: volatilidade
      label: Volatilidade
      dimension: rate
      period: annual
      note: ""
    - concept: working_capital
      label: Capital de giro
      dimension: currency
      period: none
      note: ""
  properties:
    - name: legal_name
      kind: company
      source: Cadastro RFB + PGFN
      description: Razão social no cadastro da Receita. É o nome que existe para
        empresa FECHADA — cedente, devedor de CRI, plataforma — que nunca teve
        registro na CVM e por isso não aparece em `companies`.
      vocabulary: null
    - name: trade_name
      kind: company
      source: Cadastro RFB + PGFN
      description: "Nome fantasia declarado no estabelecimento. Ausente é o normal:
        boa parte das empresas fechadas não declara um, e ausência aqui não diz
        nada sobre a empresa."
      vocabulary: null
    - name: registration_status
      kind: company
      source: Cadastro RFB + PGFN
      description: "Situação cadastral na Receita. É SINAL, não sentença: INAPTA
        costuma ser quem parou de declarar e BAIXADA pode ser reorganização
        societária normal — serve como pergunta a fazer sobre um cedente, não
        como veredito."
      vocabulary:
        - ATIVA
        - BAIXADA
        - INAPTA
        - SUSPENSA
        - NULA
    - name: registration_adverse
      kind: company
      source: Cadastro RFB + PGFN
      description: Se a situação cadastral é adversa (suspensa, inapta ou baixada).
        Existe como booleano porque é o corte que se faz sobre uma carteira
        inteira de cedentes; o motivo específico está em `registration_status`.
      vocabulary:
        - "true"
        - "false"
    - name: registration_status_since
      kind: company
      source: Cadastro RFB + PGFN
      description: Desde quando a empresa está nessa situação cadastral. É o que
        separa 'baixada no ano passado' de 'baixada em 2009' quando o recebível
        é de ontem.
      vocabulary: null
    - name: opened_on
      kind: company
      source: Cadastro RFB + PGFN
      description: Início de atividade no cadastro da Receita. Empresa aberta há três
        meses cedendo carteira grande é a pergunta que este campo faz.
      vocabulary: null
    - name: cnae_primary
      kind: company
      source: Cadastro RFB + PGFN
      description: Código CNAE da atividade principal declarada à Receita. Taxonomia
        DIFERENTE do `sector` da CVM — os dois convivem porque medem coisas
        diferentes, e traduzir um no outro inventaria classificação.
      vocabulary: null
    - name: cnae_description
      kind: company
      source: Cadastro RFB + PGFN
      description: Descrição oficial do CNAE principal, do domínio publicado pela
        própria Receita. É o rótulo legível de `cnae_primary`, não uma
        classificação nossa.
      vocabulary: null
    - name: state
      kind: company
      source: Cadastro RFB + PGFN
      description: UF do estabelecimento no cadastro da Receita. É o corte regional
        que a carteira de um FIDC ou de um CRI pede, e não existe em nenhuma
        outra folha de `company`.
      vocabulary: null
    - name: municipality
      kind: company
      source: Cadastro RFB + PGFN
      description: "Município do estabelecimento, do domínio publicado pela Receita.
        Texto livre na prática: são milhares de valores e uma lista congelada
        aqui envelheceria na primeira revisão."
      vocabulary: null
    - name: company_size
      kind: company
      source: Cadastro RFB + PGFN
      description: "Porte declarado à Receita. `DEMAIS` domina e NÃO significa
        'grande': é a categoria residual de quem não é ME nem EPP, então
        ausência de porte pequeno não é evidência de porte grande."
      vocabulary:
        - ME
        - EPP
        - DEMAIS
        - NAO INFORMADO
    - name: capital_social
      kind: company
      source: Cadastro RFB + PGFN
      description: "Capital social DECLARADO à Receita, em R$ (número, sem
        formatação). Não é auditado nem atualizado por balanço: é o que consta
        no ato societário registrado. Ausente quando o cadastro não traz o
        campo, nunca zero."
      vocabulary: null
    - name: legal_nature
      kind: company
      source: Cadastro RFB + PGFN
      description: Natureza jurídica descrita pelo domínio da Receita (sociedade
        anônima fechada, LTDA, SPE). Diz que tipo de veículo é a parte, o que
        separa uma operadora de uma SPE de projeto.
      vocabulary: null
    - name: found_in_registry
      kind: company
      source: Cadastro RFB + PGFN
      description: "Se o CNPJ foi encontrado no cadastro da Receita. Existe porque
        'não sabemos' e 'está tudo bem' são conclusões opostas: sem esta marca,
        empresa não encontrada fica indistinguível de empresa encontrada e
        limpa."
      vocabulary:
        - "true"
        - "false"
    - name: has_federal_debt
      kind: company
      source: Cadastro RFB + PGFN
      description: "Se há inscrição em dívida ativa da União no papel PRINCIPAL. Só o
        principal: corresponsável e solidário são obrigação de sócio e avalista,
        e somá-los contaria a mesma dívida duas vezes."
      vocabulary:
        - "true"
        - "false"
    - name: has_debt_installment
      kind: company
      source: Cadastro RFB + PGFN
      description: "Se há parcelamento federal ativo. É a metade que impede a dívida
        de mentir: empresa com milhões inscritos e parcelamento está NEGOCIANDO;
        a mesma sem parcelamento está ignorando."
      vocabulary:
        - "true"
        - "false"
    - name: ownership_verifiable
      kind: company
      source: Cadastro RFB + PGFN
      description: Se o quadro societário tem ao menos um sócio pessoa JURÍDICA, único
        cruzável. O CPF do sócio pessoa física vem mascarado da fonte — 'não é
        verificável' e 'não há vínculo' são conclusões opostas, e a segunda é a
        que uma leitura desatenta faz.
      vocabulary:
        - "true"
        - "false"
    - name: sector
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: Setor de atuação classificado pela CVM. São 70 valores vivos, por
        isso sem vocabulário declarado — lista congelada aqui ficaria errada na
        primeira revisão da CVM.
      vocabulary: null
    - name: status
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Situação do REGISTRO da companhia na CVM. Não diz nada sobre
        pregão: companhia com status ATIVO pode ter todos os papéis parados há
        anos."
      vocabulary:
        - ATIVO
        - CANCELADA
        - SUSPENSO(A) - DECISÃO ADM
    - name: issuer_status
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: Situação OPERACIONAL do emissor — é aqui que recuperação judicial e
        falência aparecem, e não em `status`. Confundir os dois é ler uma
        empresa falida como ativa.
      vocabulary:
        - FASE OPERACIONAL
        - FASE PRÉ-OPERACIONAL
        - EM RECUPERAÇÃO JUDICIAL OU EQUIVALENTE
        - EM RECUPERAÇÃO EXTRAJUDICIAL
        - EM LIQUIDAÇÃO JUDICIAL
        - LIQUIDAÇÃO EXTRAJUDICIAL
        - FALIDA
        - PARALISADA
    - name: ownership_control
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: Natureza do controle acionário declarada à CVM. É a CLASSIFICAÇÃO
        da fonte, não uma apuração de quem controla — para isso existem as
        arestas do grafo.
      vocabulary:
        - PRIVADO
        - PRIVADO HOLDING
        - ESTATAL
        - ESTATAL HOLDING
        - ESTRANGEIRO
        - ESTRANGEIRO HOLDING
    - name: listing_segment
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: Segmento de listagem na B3, do Básico ao Novo Mercado. É exigência
        de governança, não tamanho nem liquidez.
      vocabulary:
        - Básico
        - Bovespa Mais
        - Nível 1 de Governança Corporativa
        - Nível 2 de Governança Corporativa
        - Novo Mercado
    - name: registration_category
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: Categoria A pode ter ação listada; Categoria B só emite dívida.
        Explica companhia aberta sem papel nenhum, que não é erro de dado.
      vocabulary:
        - Categoria A
        - Categoria B
    - name: has_active_ticker
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Tem ao menos um papel negociando hoje. `false` junto de `status:
        ATIVO` é o caso comum de companhia registrada e não listada — as duas
        coisas são verdadeiras ao mesmo tempo."
      vocabulary:
        - "true"
        - "false"
    - name: listing_status
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Situação de listagem na B3, declarada no cadastro (03/09/2026):
        `active` tem papel negociando, `inactive` já teve e todos os códigos
        encerraram, `unlisted` nunca teve — a maioria do cadastro CVM (Categoria
        B, só dívida). É o corte de `listObjects(kind=company,
        where=listing_status=active)`, e `status: ATIVO` da CVM é outra coisa
        (registro, não listagem)."
      vocabulary:
        - active
        - inactive
        - unlisted
    - name: market
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Onde o papel negocia: `b3` quando há papel ativo na bolsa
        brasileira. Nulo para companhia registrada e não listada. O ativo
        americano publica `market: us` pela folha do universo americano."
      vocabulary:
        - b3
        - us
    - name: b3_trade_name
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Nome de PREGÃO da B3 (NOMRES do COTAHIST): 'P.ACUCAR-CBD', 'CASAS
        BAHIA'. É a marca pela qual o investidor conhece a empresa, e não a
        razão social que a CVM publica em `name`. Prefixado porque `trade_name`
        neste mesmo objeto é o NOME FANTASIA do cadastro da Receita — fontes e
        conceitos diferentes, preenchidos em 429 e 143 das 2.566 companhias."
      vocabulary: null
    - name: primary_ticker
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "O papel de EXIBIÇÃO da companhia: o mais líquido nas datas
        recentes, com renomeações já resolvidas. Não substitui a aresta
        `issued`, que lista todos os códigos — serve para escolher UM quando a
        resposta precisa de um só. Nulo em companhia deslistada, e aí a escolha
        é do chamador."
      vocabulary: null
    - name: free_float_pct
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Percentual do capital em circulação, na escala 0 a 100 (mediana
        28,91 no acervo de 1.231 companhias que declaram) — PERCENTUAL, não
        fração: 43.778 são 43,778% e não 4.377%. É declaração de FORMULÁRIO de
        referência, com a defasagem dela, e não uma apuração diária de
        posições."
      vocabulary: null
    - name: shares_on
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Quantidade de ações ORDINÁRIAS emitidas, do cadastro. É por
        ESPÉCIE, não por código: a companhia com PNA e PNB tem as duas dentro de
        `shares_pn`, e o número não é atribuível a nenhum código sozinho."
      vocabulary: null
    - name: shares_pn
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: Quantidade de ações PREFERENCIAIS emitidas, somando todas as
        classes (PNA, PNB, PNC). Zero em companhia só de ordinárias, que é a
        regra no Novo Mercado.
      vocabulary: null
    - name: shares_total
      kind: company
      source: Cadastro de companhias abertas (CVM)
      description: "Total de ações emitidas. Não é necessariamente `shares_on +
        shares_pn`: a fonte publica os três campos e units ou classes fora do
        par ON/PN entram só no total."
      vocabulary: null
    - name: us_type
      kind: company
      source: Universo de ativos americanos
      description: "`stock` ou `etf`. O ETF americano é objeto `fund`; a ação é
        `company` — o kind já separa, este campo ecoa a declaração do universo."
      vocabulary:
        - stock
        - etf
    - name: us_in_sp500
      kind: company
      source: Universo de ativos americanos
      description: Compõe o S&P 500, conforme o universo declarado — não é a
        composição oficial do dia.
      vocabulary:
        - "true"
        - "false"
    - name: us_in_ndx100
      kind: company
      source: Universo de ativos americanos
      description: Compõe o Nasdaq-100, conforme o universo declarado.
      vocabulary:
        - "true"
        - "false"
    - name: us_bdr_ticker
      kind: company
      source: Universo de ativos americanos
      description: O BDR na B3 que espelha este ativo, quando há. É o caminho para o
        preço em reais; nulo é 'sem BDR conhecido no universo'.
      vocabulary: null
    - name: us_first_date
      kind: company
      source: Universo de ativos americanos
      description: Primeira cotação no acervo. Início de OBSERVAÇÃO, não de existência.
      vocabulary: null
    - name: us_last_date
      kind: company
      source: Universo de ativos americanos
      description: Última cotação no acervo. Nulo é ativo do universo sem série coletada.
      vocabulary: null
    - name: us_filings_count
      kind: company
      source: SEC EDGAR (acervo de filings)
      description: Quantos filings a SEC tem deste papel no acervo. É o tamanho da
        ficha, não do histórico da empresa — o acervo começa em
        `us_filings_since`.
      vocabulary: null
    - name: us_filings_since
      kind: company
      source: SEC EDGAR (acervo de filings)
      description: Desde quando há filing no acervo. Cobertura da FONTE, não idade da
        companhia.
      vocabulary: null
    - name: us_last_filing_at
      kind: company
      source: SEC EDGAR (acervo de filings)
      description: Data do filing mais recente, de qualquer formulário. É o frescor do
        acervo.
      vocabulary: null
    - name: us_last_annual_report_at
      kind: company
      source: SEC EDGAR (acervo de filings)
      description: "Último relatório ANUAL: 10-K (e emenda) para a companhia
        americana, 20-F para a estrangeira listada nos EUA. Mais de um ano atrás
        com `us_last_filing_at` recente = a empresa protocola por outro
        formulário — leia `listUsFilings`."
      vocabulary: null
    - name: us_last_quarterly_report_at
      kind: company
      source: SEC EDGAR (acervo de filings)
      description: Último relatório TRIMESTRAL (10-Q e emenda). Emissor estrangeiro
        não entrega 10-Q — ausência aqui com acervo vivo não é atraso.
      vocabulary: null
    - name: us_last_current_report_at
      kind: company
      source: SEC EDGAR (acervo de filings)
      description: Último fato relevante (8-K, ou 6-K do emissor estrangeiro) — o
        formulário de evento, não o periódico.
      vocabulary: null
    - name: market
      kind: fund
      source: Universo de ativos americanos
      description: "Onde negocia: `us` para o ativo do universo americano
        (NYSE/Nasdaq, em dólar). O papel da B3 publica `b3`."
      vocabulary:
        - b3
        - us
    - name: us_type
      kind: fund
      source: Universo de ativos americanos
      description: "`stock` ou `etf`. O ETF americano é objeto `fund`; a ação é
        `company` — o kind já separa, este campo ecoa a declaração do universo."
      vocabulary:
        - stock
        - etf
    - name: us_in_sp500
      kind: fund
      source: Universo de ativos americanos
      description: Compõe o S&P 500, conforme o universo declarado — não é a
        composição oficial do dia.
      vocabulary:
        - "true"
        - "false"
    - name: us_in_ndx100
      kind: fund
      source: Universo de ativos americanos
      description: Compõe o Nasdaq-100, conforme o universo declarado.
      vocabulary:
        - "true"
        - "false"
    - name: us_bdr_ticker
      kind: fund
      source: Universo de ativos americanos
      description: O BDR na B3 que espelha este ativo, quando há. É o caminho para o
        preço em reais; nulo é 'sem BDR conhecido no universo'.
      vocabulary: null
    - name: us_first_date
      kind: fund
      source: Universo de ativos americanos
      description: Primeira cotação no acervo. Início de OBSERVAÇÃO, não de existência.
      vocabulary: null
    - name: us_last_date
      kind: fund
      source: Universo de ativos americanos
      description: Última cotação no acervo. Nulo é ativo do universo sem série coletada.
      vocabulary: null
    - name: listing_status
      kind: fund
      source: Universo de ativos americanos
      description: "Situação (03/09/2026): `active` tem cotação nos 30 dias corridos
        até a última cotação do acervo, `inactive` parou antes, `unlisted` está
        no universo e nunca teve cotação."
      vocabulary:
        - active
        - inactive
        - unlisted
    - name: us_filings_count
      kind: fund
      source: SEC EDGAR (acervo de filings)
      description: Quantos filings a SEC tem deste papel no acervo. É o tamanho da
        ficha, não do histórico da empresa — o acervo começa em
        `us_filings_since`.
      vocabulary: null
    - name: us_filings_since
      kind: fund
      source: SEC EDGAR (acervo de filings)
      description: Desde quando há filing no acervo. Cobertura da FONTE, não idade da
        companhia.
      vocabulary: null
    - name: us_last_filing_at
      kind: fund
      source: SEC EDGAR (acervo de filings)
      description: Data do filing mais recente, de qualquer formulário. É o frescor do
        acervo.
      vocabulary: null
    - name: us_last_annual_report_at
      kind: fund
      source: SEC EDGAR (acervo de filings)
      description: "Último relatório ANUAL: 10-K (e emenda) para a companhia
        americana, 20-F para a estrangeira listada nos EUA. Mais de um ano atrás
        com `us_last_filing_at` recente = a empresa protocola por outro
        formulário — leia `listUsFilings`."
      vocabulary: null
    - name: us_last_quarterly_report_at
      kind: fund
      source: SEC EDGAR (acervo de filings)
      description: Último relatório TRIMESTRAL (10-Q e emenda). Emissor estrangeiro
        não entrega 10-Q — ausência aqui com acervo vivo não é atraso.
      vocabulary: null
    - name: us_last_current_report_at
      kind: fund
      source: SEC EDGAR (acervo de filings)
      description: Último fato relevante (8-K, ou 6-K do emissor estrangeiro) — o
        formulário de evento, não o periódico.
      vocabulary: null
    - name: trading_status_since
      kind: equity_security
      source: CODBDI do pregão (B3, COTAHIST)
      description: "Início do PERÍODO ATUAL da situação excepcional, não a primeira
        ocorrência dela: quem entra, sai e reentra em recuperação reporta a data
        da reentrada. Derivado de ilhas de pregões contíguos com o mesmo
        carimbo. Só existe quando `trading_status` não é `regular` — situação
        normal não tem data de início."
      vocabulary: null
    - name: trading_status
      kind: equity_security
      source: Universo de papéis do COTAHIST (B3) + CODBDI do pregão
      description: "Situação da emissora carimbada neste papel pela B3 no CODBDI do
        pregão. `regular` é a operação normal, e as outras quatro NÃO são
        suspensão: a maioria dos papéis carimbados segue negociando todo dia. É
        da COMPANHIA, carimbada no papel — atravesse `issued` para chegar à
        emissora, e veja `trading_status_since` para desde quando."
      vocabulary:
        - regular
        - sancionada
        - concordataria
        - recuperacao_extrajudicial
        - recuperacao_judicial
    - name: adjust_type
      kind: equity_security
      source: Universo de papéis do COTAHIST (B3) + CODBDI do pregão
      description: "O que o ajuste da série de preço aplicou, no último pregão do
        papel. Hoje é `events_only` em 100% do acervo — desdobramento,
        grupamento e bonificação aplicados, PROVENTO NÃO subtraído: quem espera
        preço ex-dividendo aqui lê uma queda que não existe, e o retorno total
        mora em `close_tr`. Sem vocabulário declarado de propósito: um único
        valor possível não é lista de opções, é constante, e declará-la
        afirmaria que não haverá outra."
      vocabulary: null
    - name: adjust_quality
      kind: equity_security
      source: Universo de papéis do COTAHIST (B3) + CODBDI do pregão
      description: Se dá para confiar na CADEIA de eventos por trás do preço ajustado.
        `full` tem a cadeia inteira; `suspect_unrecorded_event` viu um salto que
        nenhum evento explica; `no_event_source` não tem fonte de evento para o
        papel — e nos dois últimos comparar preço de hoje com o de anos atrás
        pode errar por um fator de desdobramento inteiro.
      vocabulary:
        - full
        - suspect_unrecorded_event
        - no_event_source
    - name: funds_delta_reason
      kind: equity_security
      source: Carteiras de fundos (CDA CVM) — competência mais recente
      description: "Por que a competência mais recente NÃO tem variação de posição de
        fundos. `fora_da_janela_cda` é a janela do CDA ainda fechada,
        `primeira_competencia` é o papel estreando na base, `painel_incompleto`
        é cobertura abaixo do limiar e `competencia_ausente` é mês sem informe.
        Competência com motivo NÃO TEM PONTO em `funds_shares_delta` — a
        ausência na série é o desenho, não uma falha de coleta. Ausência desta
        propriedade é a resposta oposta: o delta da competência mais recente é
        válido."
      vocabulary:
        - fora_da_janela_cda
        - primeira_competencia
        - competencia_ausente
        - painel_incompleto
    - name: fund_type
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: "A sigla do tipo: FIF, FIDC, FII, FIP, FIAGRO. É o mesmo eixo que
        `subkind` publica no objeto, e serve para conferir um contra o outro."
      vocabulary: null
    - name: class_type
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: O tipo por extenso, como a RCVM 175 nomeia a CLASSE de cotas —
        'Classes de Cotas de Fundos FIDC' e afins.
      vocabulary: null
    - name: situation
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: Situação do registro. NENHUM dos valores é 'Encerrado' — referência
        de mercado que exibe isso está derivando de outro lugar, não da CVM.
      vocabulary:
        - Em Funcionamento Normal
        - Fase Pré-Operacional
        - Em Liquidação
        - Em Análise
        - Cancelado
    - name: classification
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: Classificação CVM por fator de risco predominante. É grossa de
        propósito; para o corte fino existe a da ANBIMA, ao lado.
      vocabulary:
        - Ações
        - Cambial
        - FMP-FGTS
        - Multimercado
        - Renda Fixa
    - name: anbima_classification
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: "Classificação ANBIMA, bem mais fina que a da CVM: 66 valores
        vivos, por isso sem vocabulário declarado aqui."
      vocabulary: null
    - name: condominium_type
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: Aberto aceita resgate; fechado só sai vendendo a cota. Muda o que
        'liquidez' significa para este fundo, e é a primeira coisa a olhar antes
        de comparar retorno.
      vocabulary:
        - Aberto
        - Fechado
    - name: target_investor
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: Público-alvo regulatório. 'Profissional' e 'Qualificado' têm
        barreira de entrada LEGAL — não é preferência comercial nem sugestão.
      vocabulary:
        - Público Geral
        - Qualificado
        - Profissional
    - name: is_exclusive
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: Fundo exclusivo, de um único cotista. Era `S`/`N` da CVM até
        20/08/2026; a normalização foi para o mart, e não para esta rota, para
        que `getFund` e as propriedades nunca discordem sobre a mesma coluna.
      vocabulary:
        - "true"
        - "false"
    - name: is_investment_entity
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: Entidade de investimento na acepção contábil (CPC 18/IFRS 10), o
        que muda como as participadas são avaliadas. Nulo é ausência de
        declaração na fonte, nunca `false`.
      vocabulary:
        - "true"
        - "false"
    - name: fee_source
      kind: fund
      source: Cadastro de fundos (CVM, RCVM 175)
      description: "De ONDE veio a taxa de administração servida: `extrato` é a fonte
        viva, `cad_fi_legado` é o cadastro antigo. Não é atributo do fundo — é
        procedência do número, e está aqui para quem compara taxas saber o que
        está comparando."
      vocabulary:
        - extrato
        - cad_fi_legado
    - name: fii_segment
      kind: fund
      source: Cadastro de FII (B3 + CVM)
      description: Segmento imobiliário do FII — logística, shoppings, lajes, papel,
        híbrido. É o primeiro corte de qualquer triagem de FII e não existe no
        registro da CVM, que descreve o veículo e não o que ele possui.
      vocabulary: null
    - name: fii_is_paper
      kind: fund
      source: Cadastro de FII (B3 + CVM)
      description: "Se o fundo é de PAPEL (carteira de CRI e recebível) em vez de
        TIJOLO (imóvel físico). Muda o que significa vacância, cap rate e P/VP:
        fundo de papel não tem imóvel, e comparar os dois pelos mesmos
        indicadores compara coisas diferentes. Nulo em 30 dos 546 — a fonte não
        classificou."
      vocabulary:
        - "true"
        - "false"
    - name: etf_segment
      kind: fund
      source: Cadastro de ETF (B3)
      description: Segmento do ETF conforme a B3 — o índice ou a classe de ativo que
        ele replica. Prefixado porque o cadastro de FII publica um `segment`
        próprio, com vocabulário diferente.
      vocabulary: null
    - name: etf_trading_code_others
      kind: fund
      source: Cadastro de ETF (B3)
      description: Outros códigos de negociação do mesmo ETF. Existe porque um ETF
        pode negociar sob mais de um código, e quem casa por ticker precisa
        saber disso antes de concluir que são fundos diferentes.
      vocabulary: null
    - name: etf_first_traded
      kind: fund
      source: Cadastro de ETF (B3)
      description: "Primeiro pregão observado. É início de OBSERVAÇÃO e não de
        existência: ETF anterior à janela do lake aparece com data mais recente
        que a real."
      vocabulary: null
    - name: etf_last_traded
      kind: fund
      source: Cadastro de ETF (B3)
      description: Último pregão observado. Distância grande para hoje indica ETF que
        parou de negociar, não ausência de dado.
      vocabulary: null
    - name: fiagro_first_traded
      kind: fund
      source: Cadastro de FIAGRO (B3 + CVM)
      description: Primeiro pregão observado do FIAGRO na série.
      vocabulary: null
    - name: fiagro_last_traded
      kind: fund
      source: Cadastro de FIAGRO (B3 + CVM)
      description: Último pregão observado do FIAGRO. Distância grande para hoje
        indica papel que parou de negociar, e num universo de 46 fundos isso é a
        maior parte da triagem.
      vocabulary: null
    - name: delinquency_scope
      kind: fund
      source: Informe mensal FIDC (CVM) — competência mais recente da classe
      description: Quantas PERNAS de inadimplência o informe MAIS RECENTE desta classe
        cobre. `both` traz a carteira com risco do cedente e a sem risco;
        `with_risk_only` traz só a primeira, porque as colunas sem risco só
        existem no formulário a partir de meados de 2019. Comparar uma classe
        `with_risk_only` com uma `both` subestima a primeira, e nada no número
        acusa.
      vocabulary:
        - both
        - with_risk_only
    - name: impaired_ratio_absent_reason
      kind: fund
      source: Informe mensal FIDC (CVM) — competência mais recente da classe
      description: Por que `impaired_ratio` veio NULA no informe mais recente.
        `portfolio_zero` é carteira igual a zero — o denominador não existe, e é
        o estado de fundo em liquidação; `impaired_exceeds_portfolio` é
        inadimplente declarado maior que a carteira, os dois números as-filed e
        corretos mas em bases diferentes. Ausência desta propriedade significa
        razão calculada, nunca 'a fonte não informou'.
      vocabulary:
        - portfolio_zero
        - impaired_exceeds_portfolio
    - name: impaired_exceeds_portfolio
      kind: fund
      source: Informe mensal FIDC (CVM) — competência mais recente da classe
      description: No informe mais recente, o inadimplente declarado excede a carteira
        declarada. Os componentes brutos continuam servidos as-filed; o que não
        existe é a RAZÃO entre eles, porque os dois não estão na mesma base. É
        uma das duas causas que `impaired_ratio_absent_reason` separa.
      vocabulary:
        - "true"
        - "false"
    - name: top_originator_pct_implausible
      kind: fund
      source: Informe mensal FIDC (CVM) — competência mais recente da classe
      description: No informe mais recente, a participação do maior cedente saiu fora
        de [0, 100]. O limite é da DEFINIÇÃO (é uma fatia da carteira), não de
        julgamento — e ainda assim 7.045 competências da série vêm acima, com
        topo em 1,55 × 10¹⁰ por cento. O valor segue as-filed com esta marca ao
        lado, mesmo tratamento do campo equivalente no grão do cedente.
      vocabulary:
        - "true"
        - "false"
    - name: registration_category
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: O que a casa PODE fazer perante a CVM — não o que ela faz.
        'Administrador Fiduciário' puro administra o fundo sem gerir a carteira;
        a diferença decide quem responde por quê.
      vocabulary:
        - Gestor de Carteira
        - Administrador Fiduciário
        - Administrador Fiduciário e Gestor de Carteira
    - name: registration_subcategory
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: Sob que regime de capital a casa se registrou. 'Instituição
        Financeira' é banco ou DTVM; 'Capital Mínimo' é a gestora independente.
      vocabulary:
        - Capital Mínimo
        - Fundos Especiais
        - Instituição Financeira
    - name: situation
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: Situação do registro na CVM. 'AFASTADO - TERMO DE COMPROMISSO' e
        'SUSPENSO(A)' são estados de sanção, e nenhum dos dois é cancelamento.
      vocabulary:
        - EM FUNCIONAMENTO NORMAL
        - CANCELADA
        - SUSPENSO(A) - DECISÃO ADM
        - AFASTADO - TERMO DE COMPROMISSO
        - LIQUIDAÇÃO EXTRAJUDICIAL
    - name: is_active
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: "Derivada de `situation`: verdadeira só em 'EM FUNCIONAMENTO
        NORMAL'. Os outros quatro estados são diferentes entre si — leia
        `situation` para separá-los."
      vocabulary:
        - "true"
        - "false"
    - name: manages_portfolios
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: A casa gere carteira de terceiros. Falso com registro ativo é o
        administrador fiduciário puro, que existe e não decide alocação —
        confundir os dois atribui decisão a quem não a toma.
      vocabulary:
        - "true"
        - "false"
    - name: ownership_control
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: Natureza do controle declarada à CVM. É classificação da FONTE, não
        apuração de quem controla — para isso existem as arestas do grafo.
      vocabulary:
        - PRIVADO
        - PRIVADO HOLDING
        - ESTATAL
    - name: state
      kind: service_provider
      source: Cadastro de administradores de carteira (CVM, ADM_CART)
      description: UF da sede declarada. Concentração geográfica de gestoras é
        informação de mercado, não detalhe cadastral.
      vocabulary: null
    - name: advisor_situation
      kind: service_provider
      source: Cadastro de assessores de investimento (CVM, AGENTE_AUTON)
      description: "Situação do registro de ASSESSOR na CVM. Vocabulário próprio,
        diferente do da gestora: no acervo PJ só existem os dois estados — 1.421
        em funcionamento e 3.323 canceladas, e o cancelado é histórico legítimo,
        não lixo."
      vocabulary:
        - EM FUNCIONAMENTO NORMAL
        - CANCELADA
    - name: advisor_registered_at
      kind: service_provider
      source: Cadastro de assessores de investimento (CVM, AGENTE_AUTON)
      description: Data do registro na CVM. Idade de registro é o único proxy de
        experiência que o cadastro público oferece.
      vocabulary: null
    - name: advisor_canceled_at
      kind: service_provider
      source: Cadastro de assessores de investimento (CVM, AGENTE_AUTON)
      description: Data do cancelamento, quando houve. Junto de `advisor_situation`,
        separa o ativo do histórico sem adivinhar.
      vocabulary: null
    - name: advisor_city
      kind: service_provider
      source: Cadastro de assessores de investimento (CVM, AGENTE_AUTON)
      description: Município da sede declarada. Com `advisor_state`, é o eixo
        geográfico do censo de assessorias.
      vocabulary: null
    - name: advisor_state
      kind: service_provider
      source: Cadastro de assessores de investimento (CVM, AGENTE_AUTON)
      description: UF da sede declarada à CVM. Concentração geográfica de assessorias
        é informação de mercado, não detalhe cadastral.
      vocabulary: null
    - name: situation
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: "Situação do registro da SUBCLASSE, que pode diferir da classe-mãe:
        subclasse em liquidação dentro de classe em funcionamento é caso
        normal."
      vocabulary:
        - Em Funcionamento Normal
        - Fase Pré-Operacional
        - Em Liquidação
        - Em Análise
        - Cancelado
    - name: is_operating
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: "Derivada de `situation`: verdadeira só em 'Em Funcionamento
        Normal'. Os outros quatro estados são diferentes entre si — leia
        `situation` para separá-los, porque o booleano os colapsa."
      vocabulary:
        - "true"
        - "false"
    - name: condominium_type
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: Aberto aceita resgate; fechado só sai vendendo a cota. Muda o que
        liquidez significa para esta subclasse, e 7.085 das 9.119 são fechadas.
      vocabulary:
        - Aberto
        - Fechado
    - name: target_investor
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: Público-alvo regulatório desta subclasse. É onde a estrutura
        sênior/subordinada costuma se separar do varejo, com barreira legal e
        não comercial.
      vocabulary:
        - Público Geral
        - Qualificado
        - Profissional
    - name: is_exclusive
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: Subclasse exclusiva, de um único cotista. Nulo é ausência de
        declaração na fonte, nunca 'não é exclusiva' — por isso a linha some em
        vez de vir falsa.
      vocabulary:
        - "true"
        - "false"
    - name: is_pension
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: Subclasse previdenciária. 475 das 9.119 não declaram, e nulo não é
        'não é previdenciária' — a linha some em vez de afirmar o que a fonte
        não disse.
      vocabulary:
        - "true"
        - "false"
    - name: parent_class_name
      kind: fund_share_class
      source: Registro de subclasses (CVM, RCVM 175)
      description: "O nome da CLASSE-mãe como o registro a chama. Atenção: o nome
        comercial da subclasse NÃO casa com o rótulo do informe mensal — o
        registro diz 'SEN 2' e o informe diz 'Subclasse Sênior Série 2'. As duas
        listas viajam lado a lado de propósito; casá-las por similaridade
        produziria vínculo errado em silêncio."
      vocabulary: null
    - name: indexer
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "O indexador CONTRATADO na emissão. `DI` e `PRÉ` não são a mesma
        família de risco que `IPCA`: o primeiro acompanha juro nominal e o
        segundo carrega inflação. `SEM-ÍNDICE` é declaração da fonte, não
        ausência de dado."
      vocabulary:
        - DI
        - IPCA
        - IGP-M
        - SEM-ÍNDICE
        - TR
        - PRÉ
        - ANBID
        - INPC
        - TJLP
        - DOLAR
        - IGP-DI
        - TR-REAL
        - US$ COMERCIAL
        - PREFIXADO
        - PÓS
        - BTN
        - IPC-R
        - IPC-M
        - UFIR
        - TBF
        - SELIC
        - EURO
        - FDS
        - IPC-FIPE
    - name: guarantee_type
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Espécie da garantia. `Quirografária` é SEM garantia real e é a
        maioria (5.819 de 9.887); `Subordinada` fica atrás dos demais credores
        na ordem de pagamento. Não é nota de risco — é posição na fila.
      vocabulary:
        - Quirografária
        - Real
        - Subordinada
        - Flutuante
    - name: debenture_class
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Conversibilidade em ação. `-` é como a fonte publica quando não
        declara, e viaja sem tradução.
      vocabulary:
        - Simples
        - Conversível
        - Permutável
        - "-"
        - Não Conversível Permutável
    - name: situation
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Situação no registro. `Excluído` são 5.148 de 9.887 e significa
        papel que saiu do sistema (vencido, resgatado), não erro de cadastro — a
        maioria da base é histórico, e uma triagem que não filtre isto mistura
        papel vivo com papel morto.
      vocabulary:
        - Excluído
        - Registrado
    - name: registration_regime
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Rito pelo qual a emissão chegou ao mercado. `dispensa_icvm_476`
        (esforços restritos) é o maior grupo e é DISPENSADO de registro
        ordinário — por isso emissor sem registro CVM não é anomalia.
      vocabulary:
        - dispensa_icvm_476
        - rito_automatico_rcvm_160
        - registro_ordinario
        - dispensa_outra
        - pendente
        - outro
    - name: is_incentivada
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Se é incentivada (Lei 12.431), com isenção de IR para pessoa
        física. 1.411 de 9.887. Muda o retorno LÍQUIDO sem mudar a taxa
        contratada, então comparar taxa bruta entre incentivada e comum compara
        coisas diferentes.
      vocabulary:
        - "true"
        - "false"
    - name: is_active
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "Se o papel está ativo no registro. Ler junto com `situation`: as
        duas vêm da fonte e respondem perguntas próximas, mas não idênticas."
      vocabulary:
        - "true"
        - "false"
    - name: maturity_date
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "Vencimento COMO ARQUIVADO. Pode ser sentinela — ver
        `maturity_is_sentinel`. É texto: para cortar por prazo use data, não
        comparação de string, e o corte numérico por prazo remanescente ainda
        não existe como medida."
      vocabulary: null
    - name: effective_maturity_date
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Vencimento EFETIVO, já resolvida a sentinela. É este que deve
        entrar em conta de prazo; `maturity_date` fica para auditoria contra a
        fonte.
      vocabulary: null
    - name: maturity_is_sentinel
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: Se o vencimento arquivado é valor-sentinela (ano ≥ 2090) e não data
        real. São 55 papéis. Sem esta flag, eles entram em bucket de prazo
        longuíssimo e distorcem qualquer curva.
      vocabulary:
        - "true"
        - "false"
    - name: exit_date
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "Campo 'Data de Saída / Novo Vencimento' do registro, com os dois
        ofícios que a fonte lhe dá: no papel encerrado é a data em que ele saiu;
        no papel VIVO é o vencimento — idêntica a `maturity_date` em 4.681 de
        4.681 ativos. Só significa saída quando `is_active` é false, e a
        sentinela de perpetuidade (ano ≥ 2090) aparece aqui como aparece em
        `maturity_date`."
      vocabulary: null
    - name: exit_reason
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "Motivo da saída COMO ARQUIVADO, incluindo a data no próprio texto
        ('05/06/2014 - VENCIMENTO'). Sem vocabulário porque a fonte escreve em
        texto livre — VENCIMENTO, VENCIMENTO ANTECIPADO, RESGATE TOTAL
        ANTECIPADO, CANCELAMENTO e variações. Existe em 3.317 dos 5.148 inativos
        e em nenhum ativo: ausência aqui é papel vivo, não motivo desconhecido."
      vocabulary: null
    - name: cvm_registration_raw
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: O número do registro na CVM como a fonte o escreveu
        ('CVM/SRE/DEB/2012/001', 'DISPENSA ICVM 476/09'). É a evidência bruta
        atrás de `registration_regime`, com as variações de grafia da fonte
        preservadas — 4.903 formas distintas em 9.829 papéis, das quais boa
        parte é a mesma dispensa escrita de outro jeito. Para triagem use
        `registration_regime`, que é a versão normalizada; este campo é para
        conferir contra o registro.
      vocabulary: null
    - name: spread_absent_reason
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "Por que `spread_pct_aa` está ausente. Existe em 17,7% dos papéis,
        e 82,3% + 17,7% = 100%: não há buraco na base, há ausência DECLARADA.
        `spread_pct_aa = 0` nunca é omissão."
      vocabulary:
        - not_filed
        - filed_zero_unverifiable
        - no_index_no_rate
        - unparseable_legacy
    - name: issuer_match_level
      kind: instrument
      source: SND/ANBIMA + registro CVM
      description: "Como o emissor foi casado com o registro da CVM.
        `none_issuer_not_in_cvm_registry` NÃO é falha nossa: emissão por
        esforços restritos dispensa registro, e o emissor legitimamente não está
        lá."
      vocabulary:
        - exact
        - none_issuer_not_in_cvm_registry
        - none_cnpj_root_only
    - name: bdr_kind
      kind: instrument
      source: Cadastro B3
      description: Tipo do programa. `nao_patrocinado` é emitido pela depositária SEM
        acordo com a companhia estrangeira e é a maioria (878 de 1.194);
        `patrocinado` tem acordo (21); `etf` é BDR de fundo de índice (295), e
        aí o lastro é uma carteira, não uma empresa.
      vocabulary:
        - nao_patrocinado
        - etf
        - patrocinado
    - name: bdr_spec
      kind: instrument
      source: Cadastro B3
      description: Especificação do papel como a B3 publica. `ED` e `EB` no sufixo
        marcam situações de negociação, não classe — e por isso a sigla viaja
        inteira, sem ser partida em campos que a fonte não separa.
      vocabulary:
        - DRN
        - DRE
        - DRN ED
        - DRE ED
        - DR1
        - DRN EB
        - DR3
        - DR2
        - DRN EDB
        - UNT
        - DRN A
        - DIR
        - DRN C
    - name: first_traded
      kind: instrument
      source: Cadastro B3
      description: "Primeiro pregão observado do papel na nossa série. É início de
        OBSERVAÇÃO, não de existência: papel anterior à janela do lake aparece
        com data mais recente do que a real."
      vocabulary: null
    - name: last_traded
      kind: instrument
      source: Cadastro B3
      description: Último pregão observado. Distância grande para hoje indica papel
        que parou de negociar, não ausência de dado.
      vocabulary: null
    - name: listing_status
      kind: instrument
      source: Cadastro B3
      description: "Situação de listagem (03/09/2026): `active` negociou nos 30 dias
        corridos até o último pregão de BDR do acervo, `inactive` parou antes. O
        registro do BDR nasce do COTAHIST e não tem flag de desligamento — o
        pregão é a evidência."
      vocabulary:
        - active
        - inactive
    - name: market
      kind: instrument
      source: Cadastro B3
      description: "Onde negocia: o BDR é sempre `b3` — é o recibo na bolsa brasileira
        do ativo estrangeiro. O ativo de origem, quando está no universo
        americano, publica `market: us` no próprio objeto."
      vocabulary:
        - b3
        - us
    - name: coe_issuer_name
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: "Emissor como o registro de balcão o nomeia (razão social as-filed,
        ex.: `BANCO XP S/A`). É texto da fonte, não identidade: o objeto do
        emissor está na aresta `issued`."
      vocabulary: null
    - name: coe_indexer
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: Indexador DE REGISTRO da emissão — NÃO é o retorno do investidor. O
        COE é estruturado e o que se recebe depende de barreira e cenário, que a
        fonte não publica. `SEM REMUNERACAO` e `NO PERIODO` são rótulos do
        formulário, não promessa de zero.
      vocabulary:
        - NO PERIODO
        - SEM REMUNERACAO
        - IPCA VCP
        - PRE
        - DI
    - name: coe_issue_type
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: Modalidade da oferta no registro. Nos 957 COEs com objeto hoje,
        todos vêm `PUBLICA` — mas isso é o que a janela observada mostra, não um
        vocabulário fechado da fonte.
      vocabulary: null
    - name: coe_is_incentivada
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: "Se o registro marca incentivo fiscal. Campo de REGISTRO: confirme
        no documento da emissão antes de concluir isenção."
      vocabulary:
        - "true"
        - "false"
    - name: coe_maturity_date
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: Vencimento no registro da emissão. Prefixado porque `maturity_date`
        já existe na ficha da debênture e as duas abrem pela mesma chave.
      vocabulary: null
    - name: coe_last_trade_date
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: Último pregão com negócio no balcão. Nulo significa registrado e
        nunca negociado — que é o caso comum em COE, não anomalia.
      vocabulary: null
    - name: coe_status
      kind: instrument
      source: BDI InstrumentRegistration (B3)
      description: "Ciclo de vida, não listagem — o COE vence: `outstanding` ainda não
        venceu, `matured` venceu (pela `coe_maturity_date` contra a data da
        carga). É o corte de `listObjects(kind=instrument, subkind=coe,
        where=coe_status=outstanding)`."
      vocabulary:
        - outstanding
        - matured
    - name: asset_family
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: "A família do papel. Não é rótulo cosmético: CRI é lastro
        imobiliário, CRA é agronegócio e OTS é o título de securitização
        genérico da Lei 14.430 — regimes e lastros diferentes sob a mesma
        mecânica."
      vocabulary:
        - CRI
        - CRA
        - OTS
    - name: cetip_code
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: Código de negociação (Cetip/B3, "Código IF") da série. É por ele
        que o balcão e a carteira do investidor chamam este papel — o ISIN é a
        chave do registro, o código é o do mercado.
      vocabulary: null
    - name: series_number
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: 'Número da série dentro da emissão. Sozinho não identifica nada: a
        mesma "1ª série" existe em milhares de emissões, e é o par com o
        certificado que resolve.'
      vocabulary: null
    - name: tranche
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: Classe da série na estrutura de subordinação, como a securitizadora
        declarou. É o que separa quem recebe primeiro de quem absorve a perda
        primeiro.
      vocabulary: null
    - name: series_status
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: Situação declarada da série na competência. Dois valores no
        universo inteiro, e a distinção é a que importa num papel de crédito.
      vocabulary:
        - Adimplente
        - Em atraso
    - name: offer_type
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: Público a que a série foi ofertada. Define quem pode comprar e, na
        prática, quanta informação a oferta precisou publicar.
      vocabulary:
        - Profissionais
        - Qualificados
        - Público em geral
    - name: interest_text
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: 'Remuneração como a securitizadora escreveu ("IPCA + 9%", "IGP-M +
        11,0%"). TEXTO de propósito: só 42 de 3.226 linhas são número puro, e
        "CDI + 6,5%" e "106,5% do CDI" não são a mesma coisa.'
      vocabulary: null
    - name: payment_frequency
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: Periodicidade declarada de pagamento de juros. Texto livre na
        fonte, preservado como veio — normalizar aqui esconderia as combinações
        que a securitizadora de fato usa.
      vocabulary: null
    - name: declared_rating
      kind: instrument
      source: Informe mensal de securitizadora (CVM)
      description: 'Nota DECLARADA pela própria securitizadora no informe, bruta.
        Campo livre: "0", "Não há" e "-" dominam, e só ~4-5% das linhas trazem
        nota plausível. Não confundir com o rating extraído de relatório de
        agência, que é fonte independente.'
      vocabulary: null
    - name: quota_issuer_name
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: "Fundo emissor como o registro de balcão o nomeia (denominação
        as-filed). É texto da fonte, não identidade: o objeto do fundo está na
        aresta `issued`, e ele só existe quando `quota_fund_match` é
        `exact_name`."
      vocabulary: null
    - name: quota_fund_match
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: "COMO a cota foi ligada ao fundo, e é a procedência da aresta
        `issued`. `exact_name` é casamento único e exato da denominação contra o
        informe da CVM — o único que vira aresta. Os três `none_*` dizem por que
        não houve: nome que aponta para duas classes, fundo que é FIDC e não
        está no informe, e fundo que não é FIDC (FII fechado, FIP e FIF negociam
        na mesma prateleira `CFF`). O preço é as-filed e vale em todos os casos;
        o que falta nos três últimos é o dono."
      vocabulary:
        - exact_name
        - none_ambiguous_name
        - none_not_in_informe
        - none_not_fidc
    - name: quota_maturity_date
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: "Vencimento no registro da emissão. Nulo NÃO é ausência de dado:
        `quota_maturity_absent_reason` diz se o cadastro não declarou ou se o
        prazo é indeterminado. Prefixado porque `maturity_date` já existe na
        ficha da debênture e as duas abrem pela mesma chave."
      vocabulary: null
    - name: quota_maturity_absent_reason
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: POR QUE não há vencimento. `prazo_indeterminado` é a sentinela
        2099-12-31 do formulário do balcão — fundo aberto não vence, e publicar
        a sentinela poria um papel de 73 anos na triagem por prazo.
        `nao_declarado` é linha que negocia sem cadastro publicado. Nulo aqui
        significa que `quota_maturity_date` tem valor.
      vocabulary:
        - nao_declarado
        - prazo_indeterminado
    - name: quota_is_incentivada
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: "Se o registro marca incentivo fiscal. Campo de REGISTRO: confirme
        no regulamento antes de concluir isenção."
      vocabulary:
        - "true"
        - "false"
    - name: quota_first_trade_date
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: Primeiro pregão com negócio no balcão DENTRO DA JANELA INGERIDA —
        não é a estreia do papel. A cobertura do balcão começa em 19/06/2026.
      vocabulary: null
    - name: quota_last_trade_date
      kind: instrument
      source: BDI InstrumentRegistration + secundário de balcão (B3)
      description: Último pregão com negócio no balcão. É o corte de
        `listObjects(kind=instrument, subkind=cota_fundo_fechado)` por liquidez
        recente.
      vocabulary: null
    - name: tesouro_is_negotiable
      kind: instrument
      source: Oferta corrente do Tesouro Direto
      description: Se o título está na lista de COMPRA do Tesouro Direto neste
        momento. `false` é o título que só aceita resgate antecipado — ele
        continua tendo taxa e PU publicados todo dia, e por isso um ranking de
        taxa sem este corte devolve papel que ninguém consegue comprar.
      vocabulary:
        - "true"
        - "false"
    - name: tesouro_coupon
      kind: instrument
      source: Oferta corrente do Tesouro Direto
      description: "Periodicidade do pagamento de juros, como a fonte a codifica: `U`
        = pagamento ÚNICO no vencimento (LTN, LFT, IPCA+ Principal), `S` = juros
        SEMESTRAIS (NTN-F, IPCA+ com Juros Semestrais), `M` = fluxo MENSAL na
        fase de renda (Renda+, Educa+). É o que separa `Tesouro IPCA+ 2035` de
        `Tesouro IPCA+ com Juros Semestrais 2035`, que têm o mesmo vencimento e
        fluxos de caixa diferentes."
      vocabulary:
        - U
        - S
        - M
    - name: tesouro_indexer
      kind: instrument
      source: Oferta corrente do Tesouro Direto
      description: O que corrige o principal, extraído do rótulo de rentabilidade da
        oferta. Ausente = PREFIXADO (LTN e NTN-F não têm indexador, e ausência
        aqui é a afirmação de que a taxa contratada é nominal). `IPCA` implica
        que `tesouro_buy_rate` é taxa REAL, acima da inflação — comparar a taxa
        de um IPCA+ com a de um prefixado compara coisas diferentes.
      vocabulary:
        - IPCA
        - SELIC
        - IGP-M
    - name: tesouro_bond_group
      kind: instrument
      source: Oferta corrente do Tesouro Direto
      description: "Em qual oferta o título está: `legado` é o Tesouro Direto de
        sempre, com série histórica no mart e objeto no grafo; `24x7` é o
        Tesouro Reserva, que negocia fora do horário e ainda não tem série. Só
        `legado` casa com as medidas do título."
      vocabulary:
        - legado
        - 24x7
    - name: tesouro_official_name
      kind: instrument
      source: Oferta corrente do Tesouro Direto
      description: O nome do título COMO A OFERTA o chama. Diverge do `name` do mart
        em Renda+ e Educa+, que no histórico usam o ano de CONVERSÃO e na oferta
        o nome oficial — `Tesouro Educa+ 2032` no mart é o vencimento 2036-12-15
        aqui. Quem cita nome ao usuário deve citar este.
      vocabulary: null
    - name: tesouro_isin
      kind: instrument
      source: Oferta corrente do Tesouro Direto
      description: ISIN do título na oferta. Não é a âncora do objeto — o título é
        ancorado por tipo + vencimento, porque é essa a chave da série
        histórica.
      vocabulary: null
    - name: tesouro_market
      kind: instrument
      source: Registro de títulos públicos (Tesouro Direto + leilões da DPMFi)
      description: "Em que mercado o título foi observado: `varejo` (só no Tesouro
        Direto), `atacado` (só nos leilões primários da dívida — a grade de LTN
        trimestral, NTN-C e NTN-D descontinuadas) ou `varejo_e_atacado`. Título
        só de atacado não tem PU de varejo nem oferta corrente; o que ele tem
        são os leilões (`tesouro_auction_*`)."
      vocabulary:
        - varejo
        - atacado
        - varejo_e_atacado
    - name: tesouro_first_auction
      kind: instrument
      source: Registro de títulos públicos (Tesouro Direto + leilões da DPMFi)
      description: Data do primeiro leilão de venda deste título na base (a série
        começa em 2000). Nulo é título que nunca foi a leilão de venda, não
        leilão antigo.
      vocabulary: null
    - name: tesouro_last_auction
      kind: instrument
      source: Registro de títulos públicos (Tesouro Direto + leilões da DPMFi)
      description: Data do último leilão de venda. Distância grande para hoje é título
        que saiu da grade do atacado — vencido ou substituído —, não ausência de
        dado.
      vocabulary: null
    - name: tesouro_first_retail_date
      kind: instrument
      source: Registro de títulos públicos (Tesouro Direto + leilões da DPMFi)
      description: Primeira data-base do título no Tesouro Direto (varejo). Nulo no
        título só de atacado, e a ausência é a afirmação.
      vocabulary: null
    - name: tesouro_last_retail_date
      kind: instrument
      source: Registro de títulos públicos (Tesouro Direto + leilões da DPMFi)
      description: Última data-base do título no Tesouro Direto. Título vencido ou
        retirado do varejo para de avançar aqui, mesmo que continue a leilão.
      vocabulary: null
    - name: family
      kind: offering
      source: Ofertas públicas (CVM)
      description: A família CANÔNICA do que está sendo ofertado — o mesmo eixo que
        `subkind` publica no objeto. É por aqui que se filtra, não por
        `asset_type_as_filed`.
      vocabulary:
        - fundo
        - divida
        - securitizacao
        - equity
        - outro
    - name: instrument
      kind: offering
      source: Ofertas públicas (CVM)
      description: O instrumento canônico, um nível mais fino que a família — também
        derivado, também seguro para filtrar.
      vocabulary: null
    - name: asset_type_as_filed
      kind: offering
      source: Ofertas públicas (CVM)
      description: "O tipo do ativo COMO A FONTE ESCREVEU. Está aqui por procedência,
        não para filtrar: são 60 grafias para ~28 instrumentos, porque cada
        regime usa um vocabulário. Filtrar por ele devolvia 1.841 de 2.801
        debêntures — 34% de perda silenciosa. Use `family` ou `instrument`."
      vocabulary: null
    - name: offering_type
      kind: offering
      source: Ofertas públicas (CVM)
      description: Primária (dinheiro novo para o emissor), secundária (venda de quem
        já tinha) ou mista. Muda QUEM recebe o volume, que é a diferença entre a
        empresa capitalizar e um sócio sair.
      vocabulary: null
    - name: rite
      kind: offering
      source: Ofertas públicas (CVM)
      description: Rito de registro. Automático e ordinário têm exigências e prazos
        diferentes, e isso explica ofertas de mesmo tamanho com histórias
        regulatórias distintas.
      vocabulary: null
    - name: regime
      kind: offering
      source: Ofertas públicas (CVM)
      description: O regime regulatório sob o qual a oferta foi registrada — é o que
        separa o acervo ICVM 476 do resto, e o 476 não tem data de registro.
      vocabulary: null
    - name: status
      kind: offering
      source: Ofertas públicas (CVM)
      description: "Situação da oferta. REGISTRADA NÃO É DISTRIBUÍDA: o volume servido
        é o pretendido no registro, não o efetivamente colocado — somar
        registros e chamar de captação do ano é o erro comum aqui."
      vocabulary: null
    - name: registration_modality
      kind: offering
      source: Ofertas públicas (CVM)
      description: Modalidade do registro na CVM. Junto de `registration_regime`,
        descreve por qual porta a oferta entrou.
      vocabulary: null
    - name: registration_regime
      kind: offering
      source: Ofertas públicas (CVM)
      description: Regime do registro — dispensa, análise prévia e afins. É atributo
        do PROCESSO, não do papel ofertado.
      vocabulary: null
    - name: numero_processo
      kind: offering
      source: Ofertas públicas (CVM)
      description: Número do PROCESSO de registro da oferta na CVM, como a fonte o
        publica. É por ele que a oferta é localizada no processo administrativo
        da origem.
      vocabulary: null
    - name: numero_requerimento
      kind: offering
      source: Ofertas públicas (CVM)
      description: Número do REQUERIMENTO de registro na CVM — o pedido que abriu o
        processo. Ausente onde o rito dispensa requerimento, e ausência aqui não
        é oferta sem registro.
      vocabulary: null
    - name: series
      kind: offering
      source: Ofertas públicas (CVM)
      description: "A série dentro da emissão, e ela é parte do GRÃO: uma emissão com
        três séries são três ofertas aqui, com volumes diferentes. Somá-las sem
        perceber conta a mesma emissão três vezes."
      vocabulary: null
    - name: issue
      kind: offering
      source: Ofertas públicas (CVM)
      description: O número da emissão do emissor. Emissão alta com séries curtas é
        emissor recorrente, e isso é informação sobre o emissor, não sobre esta
        oferta.
      vocabulary: null
    - name: tax_incentive
      kind: offering
      source: Ofertas públicas (CVM)
      description: "Papel incentivado (Lei 12.431 e afins). Muda a comparação de taxa:
        incentivado rende líquido de IR para pessoa física, então comparar a
        taxa crua com a de um papel comum favorece o comum sem motivo."
      vocabulary:
        - "true"
        - "false"
    - name: value_is_sentinel
      kind: offering
      source: Ofertas públicas (CVM)
      description: O volume declarado é lixo da fonte — três registros vêm preenchidos
        com noves, até R$ 100 tri. A flag NÃO altera o valor servido; existe
        para você poder excluí-lo ao agregar.
      vocabulary:
        - "true"
        - "false"
    - name: value_pre_real_currency
      kind: offering
      source: Ofertas públicas (CVM)
      description: O volume está em moeda ANTERIOR ao Plano Real e nunca foi
        convertido — 693 ofertas. Somá-lo com o resto produz um total sem
        significado nenhum.
      vocabulary:
        - "true"
        - "false"
    - name: security_type
      kind: offering
      source: Crowdfunding de investimento (CVM, RCVM 88 — Anexo G)
      description: O valor mobiliário ofertado, como a CVM classifica no sistema de
        esforços restritos (nota comercial, debênture, CR, ações...). É o que
        separa dívida de participação.
      vocabulary: null
    - name: issuer_legal_form
      kind: offering
      source: Crowdfunding de investimento (CVM, RCVM 88 — Anexo G)
      description: Tipo societário do emissor declarado no Anexo G. A RCVM 88 é para
        sociedade empresária de pequeno porte; a securitizadora (Hurst, Liqi)
        aparece como S.A.
      vocabulary: null
    - name: collateral
      kind: offering
      source: Crowdfunding de investimento (CVM, RCVM 88 — Anexo G)
      description: Lastro principal declarado pela plataforma — o que responde pela
        dívida (recebíveis, precatórios, imóvel...). Texto livre da fonte, não
        normalizado.
      vocabulary: null
    - name: sector
      kind: offering
      source: Crowdfunding de investimento (CVM, RCVM 88 — Anexo G)
      description: Setor de atuação do emissor, como declarado. Texto livre da fonte.
      vocabulary: null
    - name: tokenizable
      kind: offering
      source: Crowdfunding de investimento (CVM, RCVM 88 — Anexo G)
      description: "A plataforma declarou que o papel pode ser representado por token.
        Não diz que FOI: o token só existe como objeto quando a aresta
        `tokenized_as` aparece."
      vocabulary:
        - "true"
        - "false"
    - name: chain
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: A rede onde o contrato vive. O mesmo papel pode ter dois contratos
        em redes diferentes (migração), e aí são dois objetos.
      vocabulary:
        - polygon
        - xdc
        - plume
        - rootstock
        - gnosis
        - moonbeam
        - base
        - ethereum
    - name: symbol
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: "Símbolo ERC-20 declarado pelo próprio contrato (symbol()). É
        apelido do objeto, não chave: duas redes podem repetir o símbolo."
      vocabulary: null
    - name: address
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Endereço do contrato na rede, minúsculo. Com `chain`, é a chave do
        objeto.
      vocabulary: null
    - name: tokenizer
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: A tokenizadora que emitiu o contrato (a plataforma, no cadastro de
        crowdfunding da CVM).
      vocabulary: null
    - name: regime
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Regime regulatório sob o qual o token foi ofertado, quando conhecido.
      vocabulary: null
    - name: discovered_by
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: "Como o contrato entrou no acervo: `catalog` é lista curada;
        `eoa_deployer` é descoberta pela carteira emissora na rede; `factory` é
        criação por contrato-fábrica da tokenizadora; `name_search` é a
        sentinela de busca por nome no explorer."
      vocabulary: null
    - name: deployer
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Carteira que publicou o contrato, quando a rede a expõe.
      vocabulary: null
    - name: issued_on
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Data do primeiro mint — a emissão do token na rede. Nulo enquanto
        as transferências não foram lidas.
      vocabulary: null
    - name: redeemed_on
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Data do último burn. Com `lifecycle = resgatado`, é a liquidação do
        token; com `emitido`, é uma queima parcial.
      vocabulary: null
    - name: lifecycle
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: "`emitido` (há supply em circulação), `resgatado` (queima total: a
        oferta foi liquidada) ou `parcial` (transferências lidas até o teto;
        somas incompletas). Nulo = ainda não lido."
      vocabulary:
        - emitido
        - resgatado
        - parcial
    - name: minted_qty
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Quantidade EMITIDA ao longo da vida (soma dos mints, em unidades do
        token). É a que casa com a quantidade da oferta do Anexo G —
        `token_supply` zera no resgate.
      vocabulary: null
    - name: yield_declared
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: "Remuneração declarada pela tokenizadora no catálogo público, como
        publicada (ex.: 'CDI + 6,50% ao ano'). Declaração comercial, não fato
        on-chain."
      vocabulary: null
    - name: maturity_on
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: Vencimento do token declarado no catálogo da tokenizadora.
      vocabulary: null
    - name: sale_status
      kind: instrument
      source: Contrato on-chain (RPC/Blockscout público)
      description: "Situação de venda no catálogo da tokenizadora: `PRIMARY_MARKET`
        (em oferta), `SOLD_OUT` (esgotado), `FINISHED` (encerrado/liquidado)."
      vocabulary:
        - PRIMARY_MARKET
        - SOLD_OUT
        - FINISHED
    - name: dimension
      kind: data_series
      source: Catálogo de séries
      description: O que o número É. Sem isto o `unit` da fonte não decide nada — no
        World Bank ele traz o NOME do indicador em 113 de 185 séries.
      vocabulary:
        - rate
        - index
        - currency
        - count
        - share
        - points
        - ratio
    - name: scale
      kind: data_series
      source: Catálogo de séries
      description: Em que escala o número vem. É o eixo que separa 4,44 de 0,0444 para
        a MESMA inflação, e ler errado erra por 100× sem nada acusar.
      vocabulary:
        - unit
        - thousand
        - million
        - billion
        - percent
        - bps
    - name: period
      kind: data_series
      source: Catálogo de séries
      description: Que JANELA o número cobre, e NÃO é a frequência de publicação. A TR
        é publicada todo dia e o número é DO MÊS. É a diferença entre o IPCA do
        mês (bcb_sgs:433) e o acumulado em 12 meses (bcb_sgs:13522), que é o
        erro macro mais caro que existe.
      vocabulary:
        - none
        - daily
        - monthly
        - quarterly
        - annual
        - ttm_12m
    - name: seasonal_adjustment
      kind: data_series
      source: Catálogo de séries
      description: Ajuste sazonal. Vivia só no sufixo do nome (`ibc_br` ×
        `ibc_br_dessaz`), o que obrigava a ler o rótulo para saber o que se
        estava comparando.
      vocabulary:
        - nsa
        - sa
        - saar
    - name: frequency
      kind: data_series
      source: Catálogo de séries
      description: "Com que frequência a fonte PUBLICA. Compare com `period` antes de
        concluir qualquer coisa: as duas divergem de propósito em várias séries,
        e é essa divergência que engana."
      vocabulary: null
    - name: served_by
      kind: data_series
      source: Catálogo de séries
      description: "De qual FONTE de observações esta série sai — o nome da rota
        histórica que a servia, guardado como está no catálogo. Hoje todas as
        séries respondem por `getObjectHistory`; o que muda é a medida: `value`
        nas séries do SGS, FRED, Banco Mundial e benchmarks, `focus_median` (e
        `focus_mean`, `focus_std_dev`, `focus_respondents`) no Focus,
        `curve_rate` no vértice de curva e `spread_median` na curva de crédito."
      vocabulary: null
    - name: aggregation
      kind: data_series
      source: Catálogo de séries
      description: "Como as observações se juntam no tempo, e portanto quais
        `transform` de `getObjectHistory` a série aceita: `flow` soma (PIB
        mensal, balança), `rate_compound` compõe (IPCA, CDI do mês),
        `rate_level` e `level` só tiram média ou diferença. Declarada no
        catálogo — não é deduzida da régua."
      vocabulary:
        - flow
        - rate_compound
        - rate_level
        - level
    - name: published_12m
      kind: data_series
      source: Catálogo de séries
      description: A série que a FONTE publica como acumulado de 12 meses desta
        (`bcb_sgs:13522` para o IPCA 433). Quando existe,
        `transform=compound_12m` ou `sum_12m` serve a série da fonte e diz isso
        em `transform.served_from`.
      vocabulary: null
    - name: series_source
      kind: data_series
      source: Catálogo de séries
      description: "A fonte da série: `bcb_sgs` (Banco Central), `fred` (Fed de St.
        Louis), `world_bank`, `imf` (FMI: WEO com projeções, inflação,
        reservas), `oecd` (OCDE: CLI, PIB trimestral, inflação, juro longo,
        imóveis), `famafrench` (fatores de Fama-French por região e retorno de
        mercado por país), `nefin` (fatores brasileiros do NEFIN/USP, diários em
        fração), `benchmark` (índices de riqueza base-100), `bcb_focus`
        (expectativas), `curve` (vértices de referência), `credit_spread` (curva
        de crédito observada). É a primeira metade da chave `<fonte>:<id>` do
        objeto."
      vocabulary:
        - bcb_sgs
        - fred
        - world_bank
        - imf
        - oecd
        - famafrench
        - nefin
        - benchmark
        - bcb_focus
        - curve
        - credit_spread
    - name: series_unit_raw
      kind: data_series
      source: Catálogo de séries
      description: A unidade como a FONTE a escreve (`% a.m.`, `R$ milhões`). É texto
        e não decide nada — no World Bank traz o NOME do indicador. A régua que
        decide é `dimension`, `scale` e `period`.
      vocabulary: null
    - name: series_first_date
      kind: data_series
      source: Catálogo de séries
      description: Primeira observação servida da série. É início de OBSERVAÇÃO no
        nosso lake, não da série na fonte.
      vocabulary: null
    - name: series_last_date
      kind: data_series
      source: Catálogo de séries
      description: Última observação servida. Compare com `frequency` para saber se a
        série está em dia.
      vocabulary: null
    - name: crypto_first_traded
      kind: crypto_asset
      source: Catálogo de cripto
      description: "Primeiro dia da série coletada. É início de OBSERVAÇÃO e não de
        existência: o ativo pode ser anterior à janela do lake, e a mais antiga
        do acervo começa em 13/10/2020. Comparar retorno de dois cripto sem
        checar esta data compara janelas diferentes."
      vocabulary: null
    - name: crypto_last_traded
      kind: crypto_asset
      source: Catálogo de cripto
      description: "Último dia coletado. Distância grande para hoje é ativo que parou
        de ser coletado, não preço zerado — e é a leitura que impede tratar o
        fim da série como queda. O preço AO VIVO é outra superfície: cripto
        negocia 24h e a cotação corrente diverge deste fechamento dentro do
        mesmo dia."
      vocabulary: null
    - name: listing_status
      kind: crypto_asset
      source: Catálogo de cripto
      description: "Situação (03/09/2026): `active` tem vela nos 7 dias corridos até a
        última vela do acervo (cripto negocia todo dia), `inactive` parou antes,
        `unlisted` está no catálogo e nunca teve vela — antes o catálogo servido
        escondia esses, e ausência lê-se como inexistência."
      vocabulary:
        - active
        - inactive
        - unlisted
    - name: group
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: A família da commodity. É o eixo por onde se pergunta "quais são os
        críticos" ou "quais são os metais preciosos" — o nome da commodity
        sozinho não diz a que grupo ela pertence.
      vocabulary:
        - Minerais industriais
        - Terras raras e críticos
        - Metais básicos
        - Metais ferrosos e ligas
        - Materiais de construção
        - Metais preciosos
        - Fertilizantes
        - Energia
    - name: is_critical
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: Se está na lista de MINERAIS CRÍTICOS do USGS — a designação
        oficial que sustenta política industrial e restrição de exportação nos
        EUA. Não é juízo sobre escassez geológica nem sobre preço.
      vocabulary:
        - "true"
        - "false"
    - name: units
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: 'A unidade em que as observações desta commodity vêm, e ela NÃO é
        única: 2 das 97 publicam em duas unidades ao mesmo tempo ("metric tons |
        thousand metric tons"), porque produção e reserva usam escalas
        diferentes. Somar as duas sem ler isto erra por mil.'
      vocabulary: null
    - name: usgs_label
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: "O nome COMO O USGS ESCREVEU, em inglês. Está aqui por procedência:
        a grafia muda entre edições do relatório, e é por isso que a chave do
        objeto é o slug e não este texto."
      vocabulary: null
    - name: first_year
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: "Primeiro ano com observação desta commodity no acervo. É início de
        COBERTURA e não de produção: o USGS publica uma janela de cinco anos por
        edição, e o mineral existia antes dela."
      vocabulary: null
    - name: last_year
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: Último ano com observação. O ano mais recente costuma ser
        ESTIMATIVA do relatório, não número fechado — é assim que o Mineral
        Commodity Summaries publica a safra corrente.
      vocabulary: null
    - name: countries
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: Quantos países aparecem produzindo ou detendo reserva desta
        commodity no último ano coberto. É a largura da aresta `produces`, e um
        número baixo é concentração real, não falta de dado — leia junto de
        `countries_withheld`.
      vocabulary: null
    - name: has_production
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: Se o acervo tem observação de PRODUÇÃO desta commodity. Falso com
        `has_reserves` verdadeiro é o caso do mineral de que só se conhece a
        reserva, e a distinção muda o que dá para perguntar.
      vocabulary:
        - "true"
        - "false"
    - name: has_reserves
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: Se o acervo tem observação de RESERVA. O USGS não publica reserva
        de tudo o que publica produção, e ausência aqui é a fonte não declarar,
        nunca reserva zero.
      vocabulary:
        - "true"
        - "false"
    - name: top_producer
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: "O maior produtor do último ano coberto, pelo recorte dominante —
        cobre tem produção de MINA e de REFINO, e misturá-los elegeria o maior
        refinador (China) como se fosse o maior minerador (Chile). Não é
        ponteiro para o objeto país: quem quer o país usa a aresta `produces`."
      vocabulary: null
    - name: top_producer_share_pct
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: A fatia do maior produtor no total mundial, em PONTOS PERCENTUAIS
        (`23.04` é 23,04%, não 0,2304). Nulo onde o share é incalculável —
        países reportando bases diferentes, como no boro —, e nulo é a verdade
        em vez de um número inventado.
      vocabulary: null
    - name: countries_withheld
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: Quantos países o relatório marcou como retidos (`W`, withheld) por
        sigilo comercial. Maior que zero significa que o total mundial existe e
        a repartição por país está incompleta — o share dos demais fica
        sobrestimado.
      vocabulary: null
    - name: edition_year
      kind: commodity
      source: USGS Mineral Commodity Summaries
      description: "O ano da EDIÇÃO do relatório de onde estes números saíram,
        publicado entre janeiro e abril. É a vintage da ficha: dois minerais
        lidos de edições diferentes não são comparáveis linha a linha."
      vocabulary: null
    - name: commodity_class
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: "A classe da commodity, e é ela que separa os dois universos do
        tipo: `agricola` e `energia` são as negociadas na B3, `mineral` e
        `metal` vêm do grupo do relatório do USGS (metal inclui o ouro, que é as
        duas coisas). É o corte de `listObjects(kind=commodity,
        where=commodity_class=agricola)`. Vocabulário declarado num seed do
        warehouse, nunca inferido do nome."
      vocabulary:
        - mineral
        - agricola
        - energia
        - metal
    - name: market
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: 'Onde a commodity NEGOCIA no acervo: `b3` para as sete com curva de
        ajuste. Ausente é "não temos pregão dela" — o cobre negocia na LME e a
        ausência aqui não afirma nada sobre o mundo. É o corte que separa a
        commodity negociada do mineral só estatístico.'
      vocabulary: null
    - name: b3_root
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: A RAIZ do contrato na B3 (`BGI` para boi gordo, `CCM` para milho).
        Três letras que prefixam todo vencimento — `BGIV26` é o boi de outubro
        de 2026 —, e é por ela que se lê a curva de ajuste.
      vocabulary: null
    - name: product_name
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: O nome do CONTRATO como a B3 o publica, não o da commodity. "Futuro
        de Soja com Liquidação Financeira pelo Preço do Contrato Futuro Míni de
        Soja do CME Group" diz o que se está negociando de fato, e é o que deve
        ser citado junto de qualquer preço, porque o ajuste não traz unidade de
        cotação.
      vocabulary: null
    - name: reference_owner
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: O dono do índice de terceiro a que o contrato é referenciado (CME
        Group na soja, Platts na soja FOB Santos). O ajuste é dado público da
        B3; exibir a MARCA do índice é que pede licença. Ausente = contrato sem
        referência de terceiro.
      vocabulary: null
    - name: first_trade_date
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: "Primeiro pregão com ajuste desta commodity no acervo. É início de
        OBSERVAÇÃO, não de listagem: o contrato é muito anterior à janela do
        lake, e a data diz até onde a série volta."
      vocabulary: null
    - name: last_trade_date
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: Último pregão com ajuste. Distância grande para hoje é coleta
        parada, não contrato encerrado — a curva por vencimento continua em
        `getCommodityCurve`.
      vocabulary: null
    - name: contracts_open
      kind: commodity
      source: Catálogo de commodities (USGS MCS + seed de derivativos da B3)
      description: "Quantos VENCIMENTOS tinham ajuste no último pregão — o tamanho da
        curva. NÃO é contrato em aberto (open interest), que a fonte não publica
        por commodity: ler este número como posição do mercado erra de grandeza
        e de significado."
      vocabulary: null
    - name: area_type
      kind: country
      source: ISO 3166-1 (pacote iso-codes)
      description: 'País ou BLOCO. A única pergunta que esta propriedade responde é
        "posso somar esta linha com as outras", e ela existe porque a resposta
        às vezes é não: a União Europeia é objeto do mesmo tipo que a Alemanha,
        com o mesmo formato de chave, e somá-las conta a Alemanha duas vezes
        devolvendo um número inteiramente plausível.'
      vocabulary:
        - country
        - bloc
    - name: name_en
      kind: country
      source: ISO 3166-1 (pacote iso-codes)
      description: O nome em inglês da norma. Serve para casar com fonte estrangeira
        que publica por nome e não por código — o nome servido pelo objeto é o
        português.
      vocabulary: null
    - name: taxonomy
      kind: sector
      source: Taxonomia controlada da fonte (informe mensal de FIDC, CVM)
      description: De QUEM é a classificação. `cvm_fidc` é o setor do LASTRO no
        informe mensal de FIDC. Rótulos iguais em taxonomias diferentes são
        objetos diferentes — nunca somar entre taxonomias.
      vocabulary: null
    - name: level
      kind: sector
      source: Taxonomia controlada da fonte (informe mensal de FIDC, CVM)
      description: 1 = categoria, 2 = subcategoria. `exposed_to_sector` publica as
        DUAS camadas do mesmo informe; quem agrega corta por um nível só, senão
        dobra a carteira com cara de normal. A hierarquia atravessável é
        `member_of`.
      vocabulary:
        - "1"
        - "2"
    - name: source_code
      kind: sector
      source: Taxonomia controlada da fonte (informe mensal de FIDC, CVM)
      description: O código como a fonte o escreve (`F2`), sem o prefixo da taxonomia.
      vocabulary: null
    - name: parent_key
      kind: sector
      source: Taxonomia controlada da fonte (informe mensal de FIDC, CVM)
      description: Chave da categoria acima (`cvm_fidc:F`), nula no topo. Leitura de
        ficha; para atravessar use `member_of`.
      vocabulary: null
    - name: layer
      kind: market_event
      source: Ledger de eventos de mercado
      description: "A CAMADA do evento: `estrutural` move o cenário inteiro (juro,
        câmbio, regulação), `setorial` move um setor e `corporativa` move uma
        empresa. É o corte que separa 'o que muda a tese' de 'o que muda a
        notícia'."
      vocabulary:
        - estrutural
        - setorial
        - corporativa
    - name: category
      kind: market_event
      source: Ledger de eventos de mercado
      description: O assunto do evento, no vocabulário do detector.
      vocabulary:
        - macro
        - politica
        - internacional
        - commodities
        - corporate
        - fii
        - cripto
        - mercado
        - outros
    - name: event_status
      kind: market_event
      source: Ledger de eventos de mercado
      description: Situação do evento no ledger. Prefixado porque `status` já é
        propriedade de outros tipos e o vocabulário é outro — sem o prefixo, um
        corte por `status` responderia duas coisas diferentes conforme o tipo da
        coorte.
      vocabulary:
        - ativo
        - arquivado
    - name: index_provider
      kind: index
      source: Cadastro de índices (B3 + ANBIMA), classificação do seed index_family
      description: "QUEM publica o índice. É o primeiro corte de qualquer triagem de
        índice porque separa dois mundos que não se comparam: `B3` são 17
        índices de renda variável com carteira teórica de ações, `ANBIMA` são os
        12 benchmarks de renda fixa da família IMA/IRF-M."
      vocabulary:
        - B3
        - ANBIMA
        - S&P Dow Jones Indices
        - Nasdaq
    - name: index_family
      kind: index
      source: Cadastro de índices (B3 + ANBIMA), classificação do seed index_family
      description: "A família do índice NO VOCABULÁRIO DO PRÓPRIO PUBLICADOR, e
        `index_provider` diz qual metade se aplica. Da B3: `amplo`,
        `segmento_setorial`, `governanca` — as três páginas de índice que cobrem
        os 17 códigos ingeridos. Da ANBIMA: `ima_b` (NTN-B, IPCA), `irf_m`
        (prefixados), `ima_s` (LFT), `ima_c` (NTN-C, descontinuados) e
        `ima_geral` (o agregado). A subfamília entra no lugar de um
        `renda_fixa_anbima` único porque `index_provider` já dá o corte grosso —
        repeti-lo aqui não acrescentaria nada."
      vocabulary:
        - amplo
        - segmento_setorial
        - governanca
        - ima_b
        - ima_c
        - ima_geral
        - ima_s
        - irf_m
        - global
    - name: index_rebalancing
      kind: index
      source: Cadastro de índices (B3 + ANBIMA), classificação do seed index_family
      description: Quando a carteira do índice é revista. Nos 17 da B3 é quadrimestral
        (`jan/mai/set (vigência fev/jun/out)`) e nos 12 da ANBIMA a propriedade
        NÃO APARECE — o boletim do IMA não publica calendário, e valor inventado
        seria pior que ausência.
      vocabulary: null
    - name: index_first_date
      kind: index
      source: Cadastro de índices (B3 + ANBIMA), classificação do seed index_family
      description: "Primeira observação da série do índice. É início de OBSERVAÇÃO e
        não de existência: índice anterior à janela do lake aparece com data
        mais recente que a real."
      vocabulary: null
    - name: index_last_date
      kind: index
      source: Cadastro de índices (B3 + ANBIMA), classificação do seed index_family
      description: "Última observação da série. É por ela que se lê índice
        DESCONTINUADO, não pela ausência do objeto: IMA-C parou em 2021-04-01 e
        IMA-C 5/5+ em 2011-03-01, e os três continuam sendo objeto porque quem
        reconstitui uma carteira de 2010 precisa deles."
      vocabulary: null
    - name: status
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: "Se a norma VALE hoje. `revogada` não apaga a história: a oferta
        feita sob a ICVM 476 segue ligada a ela por `regulated_by`, e é esta
        propriedade que diz que o regime não vale mais. Quem revogou está em
        `revoked_by` e na aresta `revokes`."
      vocabulary:
        - vigente
        - revogada
    - name: issuer
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: "Quem editou a norma: CVM, CMN, BCB ou o Congresso Nacional (lei).
        É o primeiro pedaço da chave (`cvm:res:88`) e o que separa uma Resolução
        CVM de uma Resolução CMN com o mesmo número."
      vocabulary:
        - CVM
        - CMN
        - BCB
        - Congresso Nacional
    - name: number
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: O número como a norma é citada (`88`, `476`, `6404`), sem ano — o
        ano vai em `year`.
      vocabulary: null
    - name: year
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: Ano da publicação. Lei é citada com número e ano (Lei 6.404/76);
        resolução da CVM só pelo número.
      vocabulary: null
    - name: title
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: "A EMENTA: sobre o que a norma dispõe, na redação oficial resumida.
        Não é o texto — o texto integral sai em
        `getObjectEvidence`/`searchDocuments` quando indexado."
      vocabulary: null
    - name: published_at
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: Data da publicação da norma (DOU). É a data que carimba as arestas
        `revokes` e `amends` de quem ela revoga ou altera.
      vocabulary: null
    - name: revoked_by
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: Chave da norma que a revogou (`cvm:res:160`), nula enquanto
        vigente. Leitura de ficha; a relação atravessável é `revokes` na direção
        `in`.
      vocabulary: null
    - name: nickname
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: 'Como o mercado a chama quando não usa o número: "Lei das S.A.",
        "Marco legal da securitização". Nulo quando não há apelido consagrado.'
      vocabulary: null
    - name: url_html
      kind: norm
      source: Catálogo curado de normas (seed), conferido contra a página oficial do
        emissor
      description: Página oficial da norma no site do emissor (CVM, BCB, Planalto). É
        de onde o texto integral é lido; cite-a como fonte.
      vocabulary: null
    - name: asset_family
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: A família do certificado. CRI é lastro imobiliário, CRA é
        agronegócio e OTS é o título de securitização genérico da Lei 14.430 —
        regimes e lastros diferentes sob a mesma mecânica.
      vocabulary:
        - CRI
        - CRA
        - OTS
    - name: layout_era
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: "Qual layout do informe esta linha usa. A CVM migrou o CRI em
        2022-07-01, ao dia: LTV, valor de aquisição, duration em anos/meses e
        segmento pararam de ser preenchidos e o patrimônio líquido da emissão
        começou. Sem isto, um LTV de 2022 seria lido como o LTV de hoje."
      vocabulary:
        - atual
        - anterior_2022_07
    - name: issue_number
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: Número da emissão da securitizadora. É a chave que fecha o
        casamento com a oferta registrada na CVM — sem ele, o par (CNPJ, série)
        deixava 1.583 ofertas ambíguas.
      vocabulary: null
    - name: issue_date
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: Data de emissão declarada do certificado. É o `obs_date` da aresta
        `issued` que liga a securitizadora a esta emissão.
      vocabulary: null
    - name: collateral_type
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: Tipo do lastro declarado. Dois valores dominam o universo, e a
        distinção é entre comprar um contrato de dívida e comprar um fluxo de
        recebíveis.
      vocabulary:
        - Título de Dívida
        - Créditos
    - name: collateral_detail
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: Detalhamento do lastro em texto livre, como a securitizadora
        escreveu. É onde aparece o que o tipo não diz — incorporação, aluguel,
        home equity, loteamento.
      vocabulary: null
    - name: guarantees
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: 'As garantias da emissão em texto livre. A coluna se chama
        sobrecolateralização na fonte e NÃO é número: traz "Alienação Fiduciária
        - Imóveis Cessão Fiduciária - Créditos Presentes Fiança". Nome de coluna
        não é documentação.'
      vocabulary: null
    - name: fiduciary_regime
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: "Se a emissão tem regime fiduciário instituído. É o que segrega o
        patrimônio da securitizadora: sem ele, o investidor concorre com os
        credores da emissora."
      vocabulary:
        - "true"
        - "false"
    - name: risk_retention_type
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: Como o risco foi retido, em texto livre da fonte. Preenchido em ~2
        de 3 linhas, e 'Não há' é resposta declarada — que é diferente de campo
        vazio.
      vocabulary: null
    - name: risk_retainer
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: "Quem retém o risco, como declarado. É o complemento de
        `risk_retention_type`: sem ele, saber que há retenção não diz quem
        absorve a perda."
      vocabulary: null
    - name: trustee_name
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: "Agente fiduciário da emissão, pelo NOME. Não vira aresta de
        propósito: o CNPJ do prestador está preenchido em zero linhas desde a
        migração de layout, e casar casa por razão social liga a emissão à
        empresa errada."
      vocabulary: null
    - name: custodian_name
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: "Custodiante da emissão, pelo NOME. Mesma ressalva do agente
        fiduciário: sem CNPJ na fonte, não vira relação do grafo."
      vocabulary: null
    - name: rating_agency
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: Agência classificadora declarada no informe, as-filed. A fonte
        também escreve nome de agência no campo de CNPJ dela, então este texto é
        o que há — não é o cadastro da agência.
      vocabulary: null
    - name: credit_segment
      kind: securitization
      source: Informe mensal de securitizadora (CVM)
      description: "Segmento dos créditos vinculados. Campo da era ANTERIOR do layout
        do CRI: vazio desde 2022-07 e preenchido antes disso — leia junto de
        `layout_era` antes de concluir ausência."
      vocabulary: null
  aspects:
    - kind: company
      name: indicators
      id: market.indicators.latest
      authority: calculated
      stability: stable
      subject_key_type: ticker
      description: Indicadores fundamentalistas de {ticker}, TTM e consolidados
      parameter: ticker
      grain: paper
      shape: snapshot
    - kind: company
      name: corporate_events
      id: market.corporate_events.list
      authority: projected
      stability: stable
      subject_key_type: ticker
      description: Eventos societários MECÂNICOS de {ticker} — desdobramento,
        grupamento, bonificação, com o factor de ajuste por data-ex. Não é o
        ledger editorial de `getObjectEvents`
      parameter: ticker
      grain: paper
      shape: event
    - kind: company
      name: documents
      id: documents.company.list
      authority: projected
      stability: stable
      subject_key_type: cvm_code
      description: Documentos entregues à CVM, por data de referência e de entrega. É
        da COMPANHIA, não do papel
      parameter: company
      grain: object
      shape: event
    - kind: company
      name: insider
      id: market.insider.history
      authority: calculated
      stability: stable
      subject_key_type: ticker
      description: "Fluxo mensal de insiders (compras menos vendas de mercado). É do
        EMISSOR: qualquer papel desta companhia devolve os MESMOS números, então
        somar papéis conta a mesma movimentação duas vezes"
      parameter: ticker
      grain: object
      shape: series
    - kind: company
      name: us_filings
      id: us.filings.list
      authority: projected
      stability: stable
      subject_key_type: us_ticker
      description: Filings SEC de {ticker} (10-K, 10-Q, 8-K…), com link do documento
        no EDGAR. O tamanho e o frescor do acervo estão nas propriedades
        `us_filings_*`
      parameter: ticker
      grain: object
      shape: event
    - kind: equity_security
      name: indicators
      id: market.indicators.latest
      authority: calculated
      stability: stable
      subject_key_type: ticker
      description: Indicadores fundamentalistas de {ticker}, TTM e consolidados
      parameter: ticker
      grain: object
      shape: snapshot
    - kind: equity_security
      name: corporate_events
      id: market.corporate_events.list
      authority: projected
      stability: stable
      subject_key_type: ticker
      description: Eventos societários MECÂNICOS de {ticker} — desdobramento,
        grupamento, bonificação, com o factor de ajuste por data-ex. A rota
        resolve os códigos antigos do papel. Não é o ledger editorial de
        `getObjectEvents`
      parameter: ticker
      grain: object
      shape: event
    - kind: equity_security
      name: factor_exposure
      id: market.factor_exposure.get
      authority: calculated
      stability: preview
      subject_key_type: ticker
      description: "Exposição de {ticker} aos fatores de risco (NEFIN, Fama-French):
        um beta por fator, alfa anualizado e R² — decomposição do retorno
        passado, não recomendação"
      parameter: ticker
      grain: object
      shape: snapshot
    - kind: equity_security
      name: ownership_movers
      id: market.ownership_movers.rank
      authority: calculated
      stability: stable
      subject_key_type: ticker
      description: Fundos que mais aumentaram e mais reduziram posição em {ticker}
        entre duas competências do CDA, pela quantidade econômica (direta,
        cedida em empréstimo e obrigação recebida) — não é a posse divulgada de
        `holds`
      parameter: ticker
      grain: object
      shape: snapshot
    - kind: equity_security
      name: options_chain
      id: market.options_chain.get
      authority: calculated
      stability: stable
      subject_key_type: ticker
      description: "Cadeia de opções viva de {ticker}: séries não vencidas que
        negociaram, com strike, vencimento, prêmio, moneyness, volatilidade
        implícita e gregas. A SÉRIE de opção não é objeto — o sujeito é o
        subjacente"
      parameter: ticker
      grain: object
      shape: snapshot
    - kind: equity_security
      name: option_expiries
      id: market.option_expiries.list
      authority: projected
      stability: stable
      subject_key_type: ticker
      description: Vencimentos com séries de opção abertas em {ticker}, com a contagem
        por vencimento. É o eixo para escolher `expiry` antes de pedir a cadeia
      parameter: ticker
      grain: object
      shape: snapshot
    - kind: fund
      name: profile
      id: funds.profile.get
      authority: projected
      stability: stable
      subject_key_type: cnpj
      description: "Cadastro do fundo: administrador, gestor, taxas, situação"
      parameter: cnpj
      grain: object
      shape: static
    - kind: fund
      name: factor_exposure
      id: market.factor_exposure.get
      authority: calculated
      stability: preview
      subject_key_type: cnpj
      description: "Exposição do fundo aos fatores de risco (NEFIN, Fama-French) pela
        cota ajustada: um beta por fator, alfa anualizado e R² — decomposição do
        retorno passado, não recomendação"
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: holdings
      id: funds.holdings.latest
      authority: projected
      stability: stable
      subject_key_type: cnpj
      description: Carteira declarada (CDA), por competência
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: look_through
      id: funds.look_through.compose
      authority: calculated
      stability: stable
      subject_key_type: cnpj
      description: Exposição efetiva por ativo, atravessando os fundos investidos
        (look-through da CDA)
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: regulation_terms
      id: credit.regulation.terms
      authority: canonical
      stability: preview
      subject_key_type: cnpj
      description: "O que o REGULAMENTO da classe estipula, com página e trecho
        literal por campo: índices de subordinação, eventos de avaliação e
        liquidação, limites de concentração, elegibilidade, taxas e cascata.
        Cobertura parcial e extração manual — ausência é 'ainda não extraído',
        nunca 'o regulamento não estipula'"
      parameter: cnpj
      grain: object
      shape: static
    - kind: fund
      name: fidc_delinquency
      id: credit.fidc_delinquency.distribution
      authority: projected
      stability: stable
      subject_key_type: cnpj
      description: "Aging dos direitos creditórios por faixa de prazo: quanto vence e
        quanto está vencido e não pago. `risk_retained` separa com e sem risco
        de recompra, e as duas visões não se somam"
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: fidc_scr
      id: credit.fidc_scr.distribution
      authority: projected
      stability: stable
      subject_key_type: cnpj
      description: Mix de risco da carteira pelos níveis SCR da Resolução CMN 2.682
        (AA a H), atribuídos pela própria instituição. Não é rating de agência —
        a nota sai por `listObjectLinks(rel=rates, direction=in)`
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: fidc_sectors
      id: credit.fidc_sectors.distribution
      authority: projected
      stability: stable
      subject_key_type: cnpj
      description: Do que a carteira de direitos creditórios é FEITA, setor a setor.
        As categorias de topo já cobrem a carteira inteira e não se somam às
        subcategorias; `unclassified_total` é a parte que a classe não abriu
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: fidc_investors
      id: credit.fidc_investors.distribution
      authority: projected
      stability: stable
      subject_key_type: cnpj
      description: "De quem é o passivo da classe: cotistas por tipo e senioridade.
        `pct_of_seniority` tem como denominador o total da própria senioridade,
        e a série começa em 2019-11"
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: fund
      name: fidc_pricing
      id: credit.fidc_pricing.distribution
      authority: calculated
      stability: stable
      subject_key_type: cnpj
      description: "Por quanto a classe COMPRA o risco: taxas de compra e venda por
        classe de ativo e tipo de taxa, com a mediana dos pares ao lado.
        `desconto_aquisicao` e `juros` não se somam"
      parameter: cnpj
      grain: object
      shape: snapshot
    - kind: index
      name: factor_exposure
      id: market.factor_exposure.get
      authority: calculated
      stability: preview
      subject_key_type: index_code
      description: "Exposição do índice {code} aos fatores de risco (NEFIN,
        Fama-French): um beta por fator, alfa anualizado e R²"
      parameter: code
      grain: object
      shape: snapshot
    - kind: offering
      name: offering_terms
      id: credit.offering.terms
      authority: canonical
      stability: preview
      subject_key_type: crowdfunding_offer_id
      description: "A lâmina (Anexo E) desta oferta: remuneração do investidor,
        remuneração da plataforma (Seção 9), lastro, garantias e riscos,
        extraídos do PDF que a plataforma publica. Cobertura parcial — ausência
        é 'lâmina ainda não extraída', nunca 'a oferta não declara'"
      parameter: offer_id
      grain: object
      shape: static
  examples:
    - operation: resolveObject
      input:
        q: PETR4
        kind: equity_security
      description: O papel PETR4 — não a companhia; para ela, atravesse `issued`.
    - operation: listObjects
      input:
        kind: company
        where: sector=Petróleo e Gás
        total: "true"
      description: TODAS as companhias do setor — o universo do cadastro, sem exigir
        medida; `cohort_size` é o denominador.
    - operation: listObjects
      input:
        kind: commodity
        limit: 100
      description: O catálogo de commodities — um tipo sem medida nenhuma também é
        enumerável.
    - operation: getObject
      subject:
        entity_id: pub_3e80862b6163669c
        label: PETR4
      input: {}
      description: "A ficha e o mapa: chaves, relações, capítulos e medidas declaradas."
    - operation: getObjectFacts
      subject:
        entity_id: pub_3e80862b6163669c
        label: PETR4
      input:
        facts: close,pl,dy_12m
      description: Três medidas no último valor, cada uma com data-base, escala e grão.
    - operation: getObjectFacts
      subject:
        entity_id: pub_3e80862b6163669c
        label: PETR4
      input:
        facts: pl
        at: 2025-06-30
      description: O P/L como era conhecido em 30/06/2025 — point-in-time, não a data-base.
    - operation: getObjectHistory
      subject:
        entity_id: pub_3e80862b6163669c
        label: PETR4
      input:
        facts: close
        from: 2025-01-01
      description: A série de fechamento ajustado desde 2025.
    - operation: getObjectProperties
      subject:
        entity_id: pub_b58cbecf6730bf83
        label: Petrobras
      input: {}
      description: "As palavras da companhia: situação, segmento de listagem, setor."
    - operation: getObjectEvents
      subject:
        entity_id: pub_b58cbecf6730bf83
        label: Petrobras
      input:
        limit: 20
      description: Os eventos editoriais mais recentes ligados à companhia.
    - operation: getObjectEvidence
      subject:
        entity_id: pub_b58cbecf6730bf83
        label: Petrobras
      input:
        limit: 20
      description: As afirmações e fontes que sustentam as relações da companhia.
    - operation: listObjectLinks
      subject:
        entity_id: pub_3e80862b6163669c
        label: PETR4
      input:
        rel: issued
        direction: in
      description: "Quem emitiu o papel: a companhia."
    - operation: listObjectLinks
      subject:
        entity_id: pub_b58cbecf6730bf83
        label: Petrobras
      input:
        rel: holds
        direction: in
        limit: 50
      description: Os fundos que detêm papéis da companhia, na última competência.
    - operation: listObjectLinks
      subject:
        entity_id: pub_0005ea890c5c80c4
        label: 145ª emissão de CRI da Opea
      input:
        rel: assigned_to
        direction: in
        at: 2026-07-01
      description: "Quem CEDEU os recebíveis desta emissão na competência —
        `magnitude` é a participação em ponto percentual. O sujeito é o
        CERTIFICADO, não a série: pedir isto ao ISIN devolve vazio, e vazio aqui
        se lê como 'não tem cedente'."
    - operation: listObjectLinks
      subject:
        entity_id: pub_0005ea890c5c80c4
        label: 145ª emissão de CRI da Opea
      input:
        rel: owes_under
        direction: in
        at: 2026-07-01
      description: "Quem DEVE os recebíveis. Verbo diferente de `assigned_to` de
        propósito: o cedente transfere o recebível e o devedor o paga, e a mesma
        empresa exerce os dois papéis em 362 certificados."
    - operation: listObjectLinks
      subject:
        entity_id: pub_0005ea890c5c80c4
        label: 145ª emissão de CRI da Opea
      input:
        rel: member_of
        direction: in
      description: As séries desta emissão — cada uma com seu ISIN, vencimento e nota.
        Carteira e partes são da emissão; preço e remuneração são da série.
    - operation: traverseObjectPath
      input:
        steps: assigned_to:in,assigned_to:out
        start_id: pub_0005ea890c5c80c4
        limit: 20
      description: Do certificado ao cedente, e dele às outras emissões que ele também
        cedeu — a concentração que uma carteira de CRIs esconde.
    - operation: getObjectLinkHistory
      subject:
        entity_id: pub_3e80862b6163669c
        label: PETR4
      input:
        rel: holds
        direction: in
        limit: 50
      description: Como a detenção por fundos mudou ao longo das competências.
    - operation: listGlobalLinks
      input:
        rel: manages
        from_kind: service_provider
        to_kind: fund
        limit: 50
      description: Gestora → fundo, no grafo inteiro.
    - operation: getObjectLinkStats
      input:
        rel: issued
      description: Quantas relações `issued` existem, por par de tipos.
    - operation: getObjectCensus
      input: {}
      description: Quantos objetos e chaves existem, por tipo.
    - operation: listObjectRelations
      input: {}
      description: O vocabulário de verbos, com forma temporal e tipos de cada lado.
    - operation: listFactCatalog
      input:
        kind: fund
      description: As medidas que um fundo pode declarar, com régua e janela.
    - operation: rankObjects
      input:
        kind: equity_security
        fact: dy_12m
        order: desc
        limit: 10
      description: Os dez papéis de maior dividend yield.
    - operation: rankObjects
      input:
        kind: fund
        subkind: fidc
        fact: fidc_impaired_ratio
        order: desc
        limit: 10
        where: fidc_net_worth>100000000
      description: FIDCs mais inadimplentes entre os com PL acima de 100 mi.
    - operation: rankObjects
      input:
        kind: securitization
        fact: securit_unpaid_pct
        order: desc
        limit: 10
        where: asset_family=CRI
      description: "As emissões de CRI com maior inadimplência da carteira. Ausência
        NÃO é zero: a securitizadora que não declara concentração escreve zero
        na fonte, e o mart a serve como ausente."
    - operation: aggregateObjects
      input:
        kind: fund
        subkind: fidc
        fact: fidc_net_worth
        agg: sum
        group_by: manages
        group_by_direction: in
        limit: 10
      description: PL de FIDC somado por gestora.
    - operation: aggregateObjects
      input:
        kind: securitization
        fact: securit_outstanding
        agg: sum
        group_by: issued
        group_by_direction: in
        limit: 10
      description: Saldo devedor somado por SECURITIZADORA — o tamanho de cada casa,
        sem join no cliente.
    - operation: intersectObjects
      input:
        a: holds
        b: manages
        a_direction: out
        b_direction: in
        kind: fund
        limit: 20
      description: "Fundos que detêm algo E têm gestora: a interseção de duas relações."
    - operation: traverseObjectPath
      input:
        steps: issued:in,manages:in
        start_id: pub_3e80862b6163669c
        limit: 20
      description: Do papel à companhia, e dela a quem a gere — dois saltos numa chamada.
    - operation: findObjectPaths
      input:
        from_id: pub_3e80862b6163669c
        to_id: pub_b58cbecf6730bf83
        max_hops: 2
      description: Os caminhos mais curtos entre o papel e a companhia.
    - operation: getObjectTable
      input:
        operation: getObjectHistory
        id: pub_3e80862b6163669c
        input: '{"facts":"close","from":"2025-01-01"}'
      description: A mesma série de fechamento, como tabela com `time` e `measure`
        declarados — o que um notebook desenha.
    - operation: getObjectTable
      input:
        operation: rankObjects
        input: '{"kind":"equity_security","fact":"dy_12m","order":"desc","limit":10}'
      description: "O mesmo ranking de dividend yield, como tabela de barras: `label`
        no x, `measure` no y."
    - operation: getObjectTable
      input:
        operation: getObjectFacts
        id: pub_3e80862b6163669c
        input: '{"facts":"pl,dy_12m,roe"}'
      description: "A ficha de indicadores do papel como tabela: uma linha por medida,
        com régua, data-base e fonte."
    - operation: getObjectTable
      input:
        operation: aggregateObjects
        input: '{"kind":"fund","subkind":"fidc","fact":"fidc_net_worth","agg":"sum","group_by":"manages","group_by_direction":"in","limit":10}'
      description: "PL de FIDC somado por gestora, como tabela de barras: `label` no
        x, `measure` no y."
x-functions:
  - id: bonds.curves.get
    module: core
    domain: bonds
    title: Curvas de juros por prazo
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_bonds_curves_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_bonds_curves_get"
  - id: commodities.curve.get
    module: core
    domain: commodities
    title: Curva de ajuste da mercadoria
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_commodities_curve_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_commodities_curve_get"
  - id: commodities.settlements.list
    module: core
    domain: commodities
    title: Ajuste diário da mercadoria
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: series
      cut: to
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_commodities_settlements_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_commodities_settlements_list"
  - id: credit.curve.get
    module: core
    domain: credit
    title: Curva de crédito privado por prazo
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_curve_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_curve_get"
  - id: credit.debentures.screen
    module: core
    domain: credit
    title: Filtro de debêntures por risco, prazo e liquidez
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: null
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_credit_debentures_screen"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_debentures_screen"
  - id: credit.fidc_delinquency.distribution
    module: core
    domain: credit
    title: Aging dos direitos creditórios da classe
    subject:
      mode: object
      kinds:
        - fund
      subkinds:
        - fidc
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_fidc_delinquency_distribution"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_fidc_delinquency_distribution"
  - id: credit.fidc_investors.distribution
    module: core
    domain: credit
    title: Cotistas da classe por tipo e senioridade
    subject:
      mode: object
      kinds:
        - fund
      subkinds:
        - fidc
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_fidc_investors_distribution"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_fidc_investors_distribution"
  - id: credit.fidc_pricing.distribution
    module: core
    domain: credit
    title: Por quanto a classe compra o risco
    subject:
      mode: object
      kinds:
        - fund
      subkinds:
        - fidc
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_fidc_pricing_distribution"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_fidc_pricing_distribution"
  - id: credit.fidc_scr.distribution
    module: core
    domain: credit
    title: Mix de risco SCR da carteira
    subject:
      mode: object
      kinds:
        - fund
      subkinds:
        - fidc
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_fidc_scr_distribution"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_fidc_scr_distribution"
  - id: credit.fidc_sectors.distribution
    module: core
    domain: credit
    title: Carteira da classe por setor do lastro
    subject:
      mode: object
      kinds:
        - fund
      subkinds:
        - fidc
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_fidc_sectors_distribution"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_fidc_sectors_distribution"
  - id: credit.offering.terms
    module: core
    domain: credit
    title: Lâmina da oferta de crowdfunding
    subject:
      mode: object
      kinds:
        - offering
      subkinds:
        - crowdfunding
      grain: object
    lifecycle: default
    stability: preview
    host: core
    temporal:
      shape: static
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_offering_terms"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_offering_terms"
  - id: credit.otc_quotes.list
    module: core
    domain: credit
    title: Secundário de balcão por instrumento
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: series
      cut: date
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_credit_otc_quotes_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_otc_quotes_list"
  - id: credit.regulation.terms
    module: core
    domain: credit
    title: Termos do regulamento da classe
    subject:
      mode: object
      kinds:
        - fund
      subkinds:
        - fidc
      grain: object
    lifecycle: default
    stability: preview
    host: core
    temporal:
      shape: static
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_credit_regulation_terms"
    output:
      $ref: "#/components/schemas/FunctionOutput_credit_regulation_terms"
  - id: documents.company.list
    module: core
    domain: documents
    title: Documentos da companhia na CVM
    subject:
      mode: object
      kinds:
        - company
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: to
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_documents_company_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_documents_company_list"
  - id: documents.content.read
    module: core
    domain: documents
    title: Leitura ordenada de um documento
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: hosted
    temporal:
      shape: static
      cut: null
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_documents_content_read"
    output:
      $ref: "#/components/schemas/FunctionOutput_documents_content_read"
  - id: documents.corpus.search
    module: core
    domain: documents
    title: Busca semântica no corpus de documentos
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: hosted
    temporal:
      shape: event
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_documents_corpus_search"
    output:
      $ref: "#/components/schemas/FunctionOutput_documents_corpus_search"
  - id: documents.taxonomy.get
    module: core
    domain: documents
    title: Taxonomia e cobertura do acervo
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: hosted
    temporal:
      shape: static
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_documents_taxonomy_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_documents_taxonomy_get"
  - id: events.anomalies.list
    module: core
    domain: events
    title: Dias anômalos e o evento associado
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: to
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_events_anomalies_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_events_anomalies_list"
  - id: events.ledger.list
    module: core
    domain: events
    title: Ledger de eventos de mercado
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: to
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_events_ledger_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_events_ledger_list"
  - id: events.ledger.search
    module: core
    domain: events
    title: Busca semântica no ledger de eventos
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: hosted
    temporal:
      shape: event
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_events_ledger_search"
    output:
      $ref: "#/components/schemas/FunctionOutput_events_ledger_search"
  - id: events.similarity.search
    module: core
    domain: events
    title: Eventos históricos semelhantes
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_events_similarity_search"
    output:
      $ref: "#/components/schemas/FunctionOutput_events_similarity_search"
  - id: events.thread.get
    module: core
    domain: events
    title: Timeline de uma thread de eventos
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_events_thread_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_events_thread_get"
  - id: funds.holdings.latest
    module: core
    domain: funds
    title: Carteira declarada do fundo
    subject:
      mode: object
      kinds:
        - fund
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_funds_holdings_latest"
    output:
      $ref: "#/components/schemas/FunctionOutput_funds_holdings_latest"
  - id: funds.look_through.compose
    module: core
    domain: funds
    title: Exposição direta e indireta do fundo
    subject:
      mode: object
      kinds:
        - fund
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_funds_look_through_compose"
    output:
      $ref: "#/components/schemas/FunctionOutput_funds_look_through_compose"
  - id: funds.profile.get
    module: core
    domain: funds
    title: Ficha do fundo
    subject:
      mode: object
      kinds:
        - fund
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: static
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_funds_profile_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_funds_profile_get"
  - id: macro.gears.get
    module: core
    domain: macro
    title: Engrenagens macro
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: at
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_macro_gears_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_macro_gears_get"
  - id: macro.regime.get
    module: core
    domain: macro
    title: Regime econômico
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: at
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_macro_regime_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_macro_regime_get"
  - id: market.corporate_events.list
    module: core
    domain: market
    title: Eventos societários do papel
    subject:
      mode: object
      kinds:
        - company
        - equity_security
      grain: paper
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: to
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_corporate_events_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_corporate_events_list"
  - id: market.crypto_live.list
    module: core
    domain: market
    title: Cotações quase-live de cripto
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_crypto_live_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_crypto_live_list"
  - id: market.factor_exposure.get
    module: core
    domain: market
    title: Exposição a fatores de risco
    subject:
      mode: object
      kinds:
        - equity_security
        - fund
        - index
      grain: object
    lifecycle: default
    stability: preview
    host: core
    temporal:
      shape: snapshot
      cut: to
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_factor_exposure_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_factor_exposure_get"
  - id: market.indicators.latest
    module: core
    domain: market
    title: Indicadores fundamentalistas do papel
    subject:
      mode: object
      kinds:
        - company
        - equity_security
      grain: paper
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: at
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_indicators_latest"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_indicators_latest"
  - id: market.insider.history
    module: core
    domain: market
    title: Fluxo mensal de insiders
    subject:
      mode: object
      kinds:
        - company
      grain: object
    lifecycle: default
    stability: preview
    host: core
    temporal:
      shape: series
      cut: to
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_insider_history"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_insider_history"
  - id: market.investor_flow.history
    module: core
    domain: market
    title: Fluxo diário por perfil de investidor
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: series
      cut: to
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_market_investor_flow_history"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_investor_flow_history"
  - id: market.investor_flow.monthly
    module: core
    domain: market
    title: Participação mensal por perfil e segmento
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: series
      cut: null
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_market_investor_flow_monthly"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_investor_flow_monthly"
  - id: market.option_expiries.list
    module: core
    domain: market
    title: Vencimentos abertos do subjacente
    subject:
      mode: object
      kinds:
        - equity_security
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_option_expiries_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_option_expiries_list"
  - id: market.option_quotes.history
    module: core
    domain: market
    title: Histórico EOD de uma série de opção
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: series
      cut: to
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_market_option_quotes_history"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_option_quotes_history"
  - id: market.options_chain.get
    module: core
    domain: market
    title: Cadeia de opções vigente do subjacente
    subject:
      mode: object
      kinds:
        - equity_security
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: null
    pagination: none
    input:
      $ref: "#/components/schemas/FunctionInput_market_options_chain_get"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_options_chain_get"
  - id: market.ownership_movers.rank
    module: core
    domain: market
    title: Fundos que mais mexeram na posição do papel
    subject:
      mode: object
      kinds:
        - equity_security
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: date
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_market_ownership_movers_rank"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_ownership_movers_rank"
  - id: market.trading_status.list
    module: core
    domain: market
    title: Emissoras em situação excepcional
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: snapshot
      cut: null
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_market_trading_status_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_market_trading_status_list"
  - id: minerals.observations.list
    module: core
    domain: minerals
    title: Produção e reservas minerais por país
    subject:
      mode: none
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: series
      cut: null
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_minerals_observations_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_minerals_observations_list"
  - id: us.filings.list
    module: core
    domain: us
    title: Filings SEC da empresa
    subject:
      mode: object
      kinds:
        - company
      grain: object
    lifecycle: default
    stability: stable
    host: core
    temporal:
      shape: event
      cut: null
    pagination: cursor
    input:
      $ref: "#/components/schemas/FunctionInput_us_filings_list"
    output:
      $ref: "#/components/schemas/FunctionOutput_us_filings_list"
