Attorney Trademarks
curl --request GET \
--url https://api.signa.so/v1/attorneys/{id}/trademarks \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/attorneys/{id}/trademarks"
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}/trademarks', 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}/trademarks",
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}/trademarks"
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}/trademarks")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/attorneys/{id}/trademarks")
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": "tm_8kLm2nPq",
"object": "trademark",
"mark_text": "AURORA",
"status": { "primary": "active", "stage": "registered" },
"office_code": "US",
"jurisdiction_code": "US",
"filing_date": "2023-04-12",
"registration_date": "2024-09-18",
"classifications": [
{ "nice_class": 9, "goods_services_text": "Downloadable software for digital image processing" },
{ "nice_class": 35, "goods_services_text": "Online retail store services featuring digital media" },
{ "nice_class": 42, "goods_services_text": "Software as a service (SaaS) featuring media management tools" }
],
"owners": [
{
"id": "own_7nQp3xYz",
"name": "Aurora Digital Inc.",
"country_code": "US",
"legal_form": "corporation",
"entity_id": null
}
]
}
],
"has_more": true,
"pagination": { "cursor": "eyJpZCI6..." },
"request_id": "req_xyz"
}
Attorneys
Attorney Trademarks
List an attorney’s trademarks with the standard trademark filters
GET
/
v1
/
attorneys
/
{id}
/
trademarks
Attorney Trademarks
curl --request GET \
--url https://api.signa.so/v1/attorneys/{id}/trademarks \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/attorneys/{id}/trademarks"
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}/trademarks', 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}/trademarks",
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}/trademarks"
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}/trademarks")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/attorneys/{id}/trademarks")
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": "tm_8kLm2nPq",
"object": "trademark",
"mark_text": "AURORA",
"status": { "primary": "active", "stage": "registered" },
"office_code": "US",
"jurisdiction_code": "US",
"filing_date": "2023-04-12",
"registration_date": "2024-09-18",
"classifications": [
{ "nice_class": 9, "goods_services_text": "Downloadable software for digital image processing" },
{ "nice_class": 35, "goods_services_text": "Online retail store services featuring digital media" },
{ "nice_class": 42, "goods_services_text": "Software as a service (SaaS) featuring media management tools" }
],
"owners": [
{
"id": "own_7nQp3xYz",
"name": "Aurora Digital Inc.",
"country_code": "US",
"legal_form": "corporation",
"entity_id": null
}
]
}
],
"has_more": true,
"pagination": { "cursor": "eyJpZCI6..." },
"request_id": "req_xyz"
}
Credits: 1 per page.
Overview
Returns a paginated list of trademarks an attorney has prosecuted, scoped automatically to the parent attorney. Use this for attorney portfolio views, client roster auditing, or competitive intelligence on prosecution counsel. Withoutsort, a q search ranks by relevance, a request with a text filter such as mark_text_starts_with lists in text order, and anything else lists the newest filings first (-filing_date). Arrays are comma-separated, date ranges use flat _gte, _gt, _lte, and _lt operators, and booleans follow the request conventions.
Path Parameters
string
required
Attorney ID (
att_...).Query Parameters
The full Search Trademarks filter set applies (status, mark classification, identifiers, geography, Nice/Vienna codes, date ranges, public-company filters, and boolean flags), plus:string
Ranked text search within this attorney’s marks. One character is enough here; elsewhere
q needs two. A trademark number in q is also looked up.string
default:"identical,fuzzy,embedded,lookalike"
Channels for
q. See Similarity.string[]
Text filters:
mark_text_is, mark_text_word, mark_text_starts_with, mark_text_ends_with, mark_text_contains and mark_text_pattern, each with a mark_text_not_* exclusion. Repeat the key for several values. See Text filters.string[]
boolean
default:"false"
Return
200 with search_meta.complete: false instead of 503 when the search times out. See Complete results.string
Sort field(s), comma-separated,
- prefix for descending. Default: relevance with q, text order with a text filter, otherwise -filing_date.string
Filter to marks owned by a specific owner (
own_...).string
Filter to marks where this attorney acts through a specific firm (
firm_...): the filing names that firm. A filing that names no firm matches no firm_id. Index documents built before this rule pick it up on the next index rebuild.string
Comma-separated optional row projections.
full_goods_services returns full classifications[].goods_services_text instead of the truncated summary text. This is the list-row vocabulary: Retrieve Trademark and Batch Trademarks take office_extensions instead, and their goods and services text is never truncated. List rows never carry attorneys[]; retrieve the record (or up to 100 at once with Batch Trademarks) to read them.string
default:"grouped"
How Madrid international registrations are presented.
grouped (default) returns one row per mark: an IR and the designations linked to it come back as a single row for the IR (office_code: "WO", no national application_number), with each designated territory under coverage.territories[] and its record at coverage.territories[].trademark.id. expanded returns one row per designation, so a US designation appears with its own US serial number. Some filters and sorts can only be served expanded; see international_registrations for the list.string
Sparse top-level field projection, comma-separated.
id and object are always retained. Unknown names return 400. Fields you don’t request are left out of each row, although the OpenAPI response schema still lists every field.integer
default:"20"
Items per page (1-100).
string
Pagination cursor from a previous response.
An attorney is usually recorded on one designation, not on the IR itself. On the grouped view that designation is listed under the IR’s row, so a US designation the attorney handled appears as the
WO row. Pass international_registrations=expanded to list the designation itself, then retrieve it for its attorneys[].On the grouped view, status_primary and status_stage match an IR row when any of its territories has that status, not only the designation the attorney is on. A filter for live marks can therefore return an IR whose designation for this attorney is dead. Pass international_registrations=expanded to filter on the attorney’s own designations.Response
Returns alist envelope of trademark summary objects belonging to this attorney.
{
"object": "list",
"data": [
{
"id": "tm_8kLm2nPq",
"object": "trademark",
"mark_text": "AURORA",
"status": { "primary": "active", "stage": "registered" },
"office_code": "US",
"jurisdiction_code": "US",
"filing_date": "2023-04-12",
"registration_date": "2024-09-18",
"classifications": [
{ "nice_class": 9, "goods_services_text": "Downloadable software for digital image processing" },
{ "nice_class": 35, "goods_services_text": "Online retail store services featuring digital media" },
{ "nice_class": 42, "goods_services_text": "Software as a service (SaaS) featuring media management tools" }
],
"owners": [
{
"id": "own_7nQp3xYz",
"name": "Aurora Digital Inc.",
"country_code": "US",
"legal_form": "corporation",
"entity_id": null
}
]
}
],
"has_more": true,
"pagination": { "cursor": "eyJpZCI6..." },
"request_id": "req_xyz"
}
Code Examples
curl "https://api.signa.so/v1/attorneys/att_3kPq9X/trademarks?status_stage=registered&offices=US,EM&nice_classes=9,42&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 page = await signa.attorneys.trademarks("att_3kPq9X", {
status_stage: ["registered"],
offices: ["US", "EM"],
nice_classes: [9, 42],
limit: 20,
});
Related Endpoints
- Retrieve Attorney: attorney profile and stats
- Attorney Clients: owners represented by this attorney
- Owner Trademarks: same view scoped to an owner
- Search Trademarks: search across all attorneys