DataBolsa docs
Referência da APIDados de mercadoObjects

A MESMA resposta de uma operação do grafo, como tabela com papéis declarados

O resultado tabular canônico. Uma série de `getObjectHistory` ou um ranking de `rankObjects` volta como `{ schema.columns, rows, meta }`: cada coluna declara `type`, `role` (`identity`, `label`, `dimension`, `time`, `measure`, `status`) e `unit`, e as linhas são escalares na ordem das colunas. O casamento com um gráfico é mecânico — `time` no eixo x, `measure` no y, `dimension` separa séries — e é isso que permite a um notebook desenhar sem conhecer a operação por baixo. Nada é recalculado: os números são os da operação especializada, em formato longo. `input` leva os parâmetros dela em JSON, validados pelo mesmo schema; `meta.query` devolve a consulta como `ObjectQuery`, reexecutável. Série com réguas diferentes no lote deixa `unit` da coluna `value` nula, traz a régua por linha e avisa em `meta.warnings`.

GET
/v1/objects/table
AuthorizationBearer <token>

In: header

Query Parameters

operationstring

A operação projetada. Só as que já têm projeção tabular.

Value in"getObjectHistory" | "rankObjects"
id?string

O(s) id(s) do sujeito, como em /objects/{id}/history. Obrigatório em getObjectHistory; ausente em rankObjects.

input?string

Os parâmetros de query da operação, em JSON, pelo nome do contrato — {"facts":"close","from":"2025-01-01"}.

Default"{}"

Response Body

curl -X GET "https://api.databolsa.com/v1/objects/table?operation=getObjectHistory&id=string&input=%7B%7D"
{
  "schema": {
    "columns": [
      {
        "name": "string",
        "type": "string",
        "role": "identity",
        "label": "string",
        "semantic": "string",
        "unit": "brl",
        "nullable": true
      }
    ],
    "primary_key": [
      "string"
    ]
  },
  "rows": [
    [
      "string"
    ]
  ],
  "meta": {
    "ontology_version": 0,
    "query": {
      "operation": "resolveObject",
      "subject": {
        "entity_id": "string",
        "label": "string"
      },
      "input": {
        "property1": null,
        "property2": null
      },
      "description": "string"
    },
    "as_of": "string",
    "count": 0,
    "warnings": [
      {
        "code": "mixed_scales",
        "message": "string"
      }
    ],
    "lineage": [
      {
        "source": "string",
        "lineage": "string"
      }
    ]
  }
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "details": {
    "property1": null,
    "property2": null
  }
}

As PROPRIEDADES do objeto — o que ele é, em palavras

A terceira forma de dizer algo sobre uma coisa. `getObjectFacts` serve NÚMERO (tem unidade, escala, data-base, anda no tempo); `listObjectLinks` serve LIGAÇÃO (aponta para outro objeto); esta rota serve PALAVRA de vocabulário fechado — situação, forma de condomínio, público-alvo, segmento de listagem, rito da oferta. **Leia `vocabulary` antes de concluir qualquer coisa de um valor.** Ele traz os valores POSSÍVEIS quando a fonte tem lista fechada, e é o que separa 'existem cinco situações' de 'existem vinte'. Um exemplo que morde: a situação de fundo tem cinco valores e NENHUM deles é 'Encerrado' — referência de mercado que exibe isso está derivando de outro lugar. Onde a lista é grande e viva (70 setores, 66 classificações ANBIMA), `vocabulary` é nulo de propósito: vocabulário declarado e desatualizado é pior que vocabulário ausente. **O valor sai como a tabela o tem**, sempre texto — booleano vem `"true"`/`"false"`, e onde a CVM publica `S`/`N` é `S`/`N` que sai. Esta rota não traduz, porque traduzir aqui faria ela discordar da rota de domínio sobre a mesma coluna. **Propriedade nula não vira linha.** Publicá-la diria 'esta coisa não tem público-alvo' quando o que houve foi a fonte não declarar — 475 das 9.119 subclasses não declaram previdência, e isso não as torna não-previdenciárias. **O que NÃO está aqui, e por quê:** administrador, gestor, auditor e custodiante de um fundo, e o coordenador líder de uma oferta, parecem propriedade e são ARESTA — apontam para outro objeto. Hoje ainda são texto na tabela de origem; publicá-los como propriedade normalizaria o erro em vez de resolvê-lo.

ÁLGEBRA DE CONJUNTOS sobre relações: interseção, união e diferença

Responde a classe de pergunta que dois montes separados não respondem. `op` escolhe a operação e o resto dos parâmetros é o mesmo nas três: - `op=intersect` (default) — quem está nos DOIS. Ex.: `a=assigned_to&b=issued` são as empresas que vendem recebível para FIDC **e** têm debênture emitida. - `op=union` — quem está em QUALQUER um dos dois. - `op=difference` — quem está em A e NÃO em B. É a pergunta de concentração: cedente EXCLUSIVO é risco que não aparece em média nenhuma. EXEMPLO COMPLETO da diferença, com os parâmetros exatos: cedentes do FIDC X que não cedem para o FIDC Y é `a=assigned_to&a_to_id=<X>&b=assigned_to&b_to_id=<Y>&op=difference&total=true`. Note que o VERBO é o mesmo nos dois lados — o que muda é a outra ponta. Comparar dois objetos concretos é para isso que `a_to_id`/`b_to_id` existem; sem eles você compara dois verbos, que é outra pergunta. E reporte `meta.total`, não o tamanho da página. `a_to_id`/`b_to_id` prendem a OUTRA ponta de cada relação — é o que permite comparar dois objetos concretos (cedentes do FIDC A contra os do FIDC B) em vez de dois verbos. Use `?total=true` para o tamanho do conjunto sem paginar.