Skip to main content
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": "uspto",
      "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",
          "entity_id": "ent_7nQp3xYz",
          "entity_id_type": "derived"
        }
      ]
    }
  ],
  "has_more": true,
  "pagination": { "cursor": "eyJpZCI6..." },
  "request_id": "req_xyz"
}

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. When neither sort nor q is supplied, results default to most-recent-first (-filing_date); a q text query instead ranks by relevance. Arrays are comma-separated, date ranges use flat _gte, _gt, _lte, and _lt operators, and booleans must be the literal strings true or false.

Path Parameters

id
string
required
Attorney ID (att_...).

Query Parameters

The full List Trademarks filter set applies (status, mark classification, identifiers, geography, Nice/Vienna codes, date ranges, public-company filters, and boolean flags), plus:
q
string
Search query text within this attorney’s trademarks.
sort
string
default:"-filing_date"
Sort field(s), comma-separated, - prefix for descending.
owner_id
string
Filter to marks owned by a specific owner (own_...).
firm_id
string
Filter to marks handled through a specific firm (firm_...).
include
string
Comma-separated optional row projections. full_goods_services returns full classifications[].goods_services_text instead of the truncated summary text.
fields
string
Sparse top-level field projection, comma-separated. id and object are always retained. Unknown names return 400.
limit
integer
default:"20"
Items per page (1-100).
cursor
string
Pagination cursor from a previous response.

Response

Returns a list 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": "uspto",
      "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",
          "entity_id": "ent_7nQp3xYz",
          "entity_id_type": "derived"
        }
      ]
    }
  ],
  "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=uspto,euipo&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: ["uspto", "euipo"],
  nice_classes: [9, 42],
  limit: 20,
});

Errors

StatusTypeDescription
400validation_errorInvalid query parameter or date range
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks the trademarks:read scope
404not_foundAttorney ID does not exist
429rate_limitedToo many requests