DataBolsa docs
Referência da APIDados de mercadoObjects

Atravessa uma relação a partir (ou em direção a) este objeto

Uma linha por AFIRMAÇÃO, com o outro lado já resolvido em nome e tipo — a mesma relação afirmada por duas fontes, ou interrompida e retomada, ocupa mais de uma linha. Para contar objetos, agrupe por `other_id`. `magnitude` é o tamanho que a fonte publicou (participação, peso no índice, valor de mercado) e **nulo não é zero**: significa que a fonte não publicou valor plausível. Prova documental é `getObjectEvidence`, não este campo. `valid_from`/`valid_to` delimitam o período — use `?at=` para o presente. **JÁ VEM ORDENADO POR `magnitude` DECRESCENTE, com nulo por último — então `limit=5` É o top-5.** Está escrito aqui porque a ausência custou caro: numa sondagem de 22/08/2026 um consumidor competente pediu "os cinco maiores donos da Vale", baixou as 341 arestas inteiras (160 mil caracteres) e ordenou por fora para chegar exatamente às cinco linhas que `limit=5` já devolveria. Capacidade que existe e não se anuncia é indistinguível de capacidade que não existe. No pior caso a diferença é entre uma chamada e o impossível: a ISA Energia tem **4.925** detentores, e a lista inteira não cabe em resposta nenhuma. O critério é o TAMANHO da aresta, não a data — e `magnitude` é o MÁXIMO do segmento, nunca o valor pontual, então isto ordena por "maior posição do período" e não por "maior posição hoje".

GET
/v1/objects/{id}/links
AuthorizationBearer <token>

In: header

Path Parameters

idstring

Query Parameters

cursor?string
limit?integer
Default100
Range1 <= value <= 1000
total?string

true = inclui meta.total (contagem do universo filtrado). Custa uma consulta a mais.

rel?string

Omitir = todas as relações desta direção.

Value in"issued" | "assigned_to" | "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"
direction?string

out = este objeto PRATICA o verbo; in = sofre. Ex.: fundo out holds ativo; ativo in holds fundo.

Default"out"
Value in"out" | "in"
at?string

Corte temporal (AAAA-MM-DD). SEM ele a resposta é 'quem JÁ se relacionou', não 'quem se relaciona' — a diferença é grande e silenciosa.

O RECORTE DEPENDE DA FORMA DO VERBO (shape, publicado em listObjectRelations):

  • event (issued, indexed_to, succeeded_by): aconteceu numa data e não deixa de ter acontecido — entra tudo que ocorreu até at, sem limite superior. Aresta sem data declarada NÃO entra: o registro de ações não publica data de emissão, e afirmar que ela já existia numa data passada é afirmação que a fonte não faz.
  • snapshot (holds, contains, assigned_to, exposed_to_issuer): retrato por competência, e nenhum retrato se afirma válido depois de ser tirado. A janela é contida (relação que saiu e voltou não aparece no buraco), e at mais recente que a última competência recua até ela — a resposta diz em meta.as_of qual data foi realmente aplicada. Cada verbo tem a competência DELE: holds fecha no trimestre da CDA, contains no pregão do dia.
  • static (manages, administers, custodies, audits, same_owner, shareholder_of, measures, forecasts): o registro publica só o VIGENTE — 111.729 arestas sem início declarado. Com o verbo preso em rel, at no passado responde 400 em vez de devolver o gestor de hoje como gestor de 2020. Sem verbo preso, essas arestas são removidas do conjunto e meta.excluded_shapes diz que foram.

AS IRMÃS NÃO COMPARTILHAM O DEFAULT. Sem at: esta operação, listGlobalLinks, intersectObjects e findObjectPaths respondem 'quem JÁ se relacionou'; getObjectLinkStats resume o retrato VIGENTE (última competência do próprio conjunto); traverseObjectPath atravessa o retrato vigente POR SUJEITO em cada salto. As diferenças são deliberadas — histórico acumulado, resumo e travessia respondem perguntas distintas — e cada rota declara a sua no próprio at. Medido em 23/08/2026: 1 aresta no resumo contra 100+ na listagem, para o mesmo objeto, os dois certos.

Match^\d{4}-\d{2}-\d{2}$
resolve?string

Como interpretar o id recebido.

  • auto (default) — como REFERÊNCIA publicada: id fundido resolve sozinho para o sucessor (com redirected_from preenchido) e id cindido responde 409 com a lista.
  • exact — como o id do objeto que existe HOJE: nenhum histórico é consultado, e o id ou responde ou é 404.

Quando você precisa de exact: numa cisão, um dos sucessores é o PRÓPRIO id pedido — o ramo que ficou com a chave de nascimento herda o identificador. O 409 manda consultar cada sucessor, e consultar esse cairia no mesmo 409. exact é o endereço dele. Serve também para desligar o redirect automático de fusão quando você quer saber se o id que guardou ainda é o id de alguma coisa.

Default"auto"
Value in"auto" | "exact"

Response Body

curl -X GET "https://api.databolsa.com/v1/objects/string/links?cursor=string&limit=100&total=string&rel=issued&direction=out&at=string&resolve=auto"
{
  "data": [
    {
      "rel": "string",
      "shape": "event",
      "direction": "out",
      "other_id": "string",
      "other_kind": "string",
      "other_name": "string",
      "other_key_type": "string",
      "other_key": "string",
      "source": "string",
      "valid_from": "string",
      "valid_to": "string",
      "observations": 0,
      "magnitude": 0,
      "magnitude_unit": "string",
      "evidence": 0,
      "evidence_unit": "string",
      "confidence": "high"
    }
  ],
  "meta": {
    "next_cursor": "string",
    "count": 0,
    "total": 0,
    "subject": {
      "property1": "string",
      "property2": "string"
    },
    "as_of": "string",
    "as_of_by_rel": {
      "property1": "string",
      "property2": "string"
    },
    "excluded_shapes": [
      "event"
    ]
  }
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string"
}