Attorney Clients
curl --request GET \
--url https://api.signa.so/v1/attorneys/{id}/clients \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/attorneys/{id}/clients"
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/attorneys/{id}/clients', 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/attorneys/{id}/clients",
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/attorneys/{id}/clients"
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/attorneys/{id}/clients")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/attorneys/{id}/clients")
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": [
{
"id": "own_R3jK9mN2",
"object": "owner",
"name": "Apple Inc.",
"canonical_name": "APPLE INC",
"country_code": "US",
"entity_type": "corporation",
"shared_trademark_count": 47
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_xyz"
}
Attorneys
Attorney Clients
List the owners (clients) represented by an attorney across all trademarks
GET
/
v1
/
attorneys
/
{id}
/
clients
Attorney Clients
curl --request GET \
--url https://api.signa.so/v1/attorneys/{id}/clients \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/attorneys/{id}/clients"
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/attorneys/{id}/clients', 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/attorneys/{id}/clients",
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/attorneys/{id}/clients"
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/attorneys/{id}/clients")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/attorneys/{id}/clients")
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": [
{
"id": "own_R3jK9mN2",
"object": "owner",
"name": "Apple Inc.",
"canonical_name": "APPLE INC",
"country_code": "US",
"entity_type": "corporation",
"shared_trademark_count": 47
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_xyz"
}
Overview
Returns the owners that an attorney has represented on trademark filings. Each row reports the number of marks shared between the attorney and that owner, sorted byshared_trademark_count descending.
Path Parameters
string
required
Attorney ID (
att_...).Query Parameters
integer
default:"20"
Page size (1-100).
string
Pagination cursor from a previous response.
Response
object[]
Array of client owner summary records.
string
Owner ID (
own_...).string
Display name of the owner.
string
Normalized name used for search and deduplication.
string
Owner country code.
string
Owner entity type (e.g.
corporation, individual, partnership).integer
Number of trademarks where this attorney represents this owner.
{
"object": "list",
"data": [
{
"id": "own_R3jK9mN2",
"object": "owner",
"name": "Apple Inc.",
"canonical_name": "APPLE INC",
"country_code": "US",
"entity_type": "corporation",
"shared_trademark_count": 47
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_xyz"
}
Code Examples
curl "https://api.signa.so/v1/attorneys/att_3kPq9X/clients?limit=20" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const clients = await signa.attorneys.clients("att_3kPq9X", { limit: 20 });
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid attorney ID |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks the trademarks:read scope |
| 404 | not_found | Attorney not found |
| 429 | rate_limited | Too many requests |
Related Endpoints
- Retrieve Attorney: full attorney detail
- Attorney Trademarks: marks handled by this attorney
- Search Owners: search owners independently