Owner Related Entities
curl --request GET \
--url https://api.signa.so/v1/owners/{id}/related \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/owners/{id}/related"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/owners/{id}/related', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/owners/{id}/related",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/owners/{id}/related"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/owners/{id}/related")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/owners/{id}/related")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"related_owner_id": "own_Tk5nM7pQ",
"name": "Aurora Holdings Corp.",
"country_code": "US",
"relationship_type": "IS_DIRECTLY_CONSOLIDATED_BY",
"relationship_status": "ACTIVE",
"ownership_pct": null,
"period_start": "2020-01-15",
"period_end": null,
"direction": "parent",
"source": "gleif_level2"
},
{
"related_owner_id": "own_Vm8pN3qR",
"name": "Aurora Digital GmbH",
"country_code": "DE",
"relationship_type": "IS_DIRECTLY_CONSOLIDATED_BY",
"relationship_status": "ACTIVE",
"ownership_pct": null,
"period_start": "2018-06-01",
"period_end": null,
"direction": "child",
"source": "gleif_level2"
}
],
"has_more": false,
"pagination": {
"cursor": null
},
"request_id": "req_gZ6qR2sT"
}
Owners
Owner Related Entities
Find entities related to an owner through corporate structure
GET
/
v1
/
owners
/
{id}
/
related
Owner Related Entities
curl --request GET \
--url https://api.signa.so/v1/owners/{id}/related \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/owners/{id}/related"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/owners/{id}/related', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/owners/{id}/related",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/owners/{id}/related"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/owners/{id}/related")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/owners/{id}/related")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"related_owner_id": "own_Tk5nM7pQ",
"name": "Aurora Holdings Corp.",
"country_code": "US",
"relationship_type": "IS_DIRECTLY_CONSOLIDATED_BY",
"relationship_status": "ACTIVE",
"ownership_pct": null,
"period_start": "2020-01-15",
"period_end": null,
"direction": "parent",
"source": "gleif_level2"
},
{
"related_owner_id": "own_Vm8pN3qR",
"name": "Aurora Digital GmbH",
"country_code": "DE",
"relationship_type": "IS_DIRECTLY_CONSOLIDATED_BY",
"relationship_status": "ACTIVE",
"ownership_pct": null,
"period_start": "2018-06-01",
"period_end": null,
"direction": "child",
"source": "gleif_level2"
}
],
"has_more": false,
"pagination": {
"cursor": null
},
"request_id": "req_gZ6qR2sT"
}
Overview
Returns entities related to the specified owner. Relationships are primarily sourced from GLEIF Level 2 corporate parent/subsidiary data. Use this for M&A due diligence, corporate family mapping, and understanding ownership structures behind trademark portfolios.Path Parameters
string
required
Owner ID (e.g.,
own_Rj3kL9mN)Query Parameters
string
Filter by relationship direction:
parent or child. Omit to return both.integer
default:"20"
Items per page (max 100)
string
Pagination cursor from previous response
Response
object[]
Show Related entity object (flat structure)
Show Related entity object (flat structure)
string
Owner ID of the related entity (
own_*)string
Name of the related entity
string
ISO country code
string
GLEIF relationship type (e.g.,
IS_DIRECTLY_CONSOLIDATED_BY)string
Relationship status (e.g.,
ACTIVE)number
Ownership percentage (may be null)
string
ISO date when the relationship started
string
ISO date when the relationship ended (null if current)
string
parent or childstring
Data source (e.g.,
gleif_level2){
"object": "list",
"data": [
{
"related_owner_id": "own_Tk5nM7pQ",
"name": "Aurora Holdings Corp.",
"country_code": "US",
"relationship_type": "IS_DIRECTLY_CONSOLIDATED_BY",
"relationship_status": "ACTIVE",
"ownership_pct": null,
"period_start": "2020-01-15",
"period_end": null,
"direction": "parent",
"source": "gleif_level2"
},
{
"related_owner_id": "own_Vm8pN3qR",
"name": "Aurora Digital GmbH",
"country_code": "DE",
"relationship_type": "IS_DIRECTLY_CONSOLIDATED_BY",
"relationship_status": "ACTIVE",
"ownership_pct": null,
"period_start": "2018-06-01",
"period_end": null,
"direction": "child",
"source": "gleif_level2"
}
],
"has_more": false,
"pagination": {
"cursor": null
},
"request_id": "req_gZ6qR2sT"
}
Code Examples
curl "https://api.signa.so/v1/owners/own_Rj3kL9mN/related?direction=parent" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const related = await signa.owners.related("own_Rj3kL9mN");
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid direction value |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks the trademarks:read scope |
| 404 | not_found | Owner ID does not exist |
| 429 | rate_limited | Too many requests |
Related Endpoints
- Get Owner: owner profile and stats
- Owner Trademarks: marks owned by this owner
- Get Trademark: individual trademark detail
⌘I