Skip to main content
GET
/
v1
/
opposition-rules
List Opposition Rules
curl --request GET \
  --url https://api.signa.so/v1/opposition-rules \
  --header 'Authorization: Bearer <token>'
{
  "object": "list",
  "data": [
    {
      "object": "opposition_rule",
      "jurisdiction_code": "EU",
      "office_code": "euipo",
      "filing_route": "madrid_designation",
      "trigger_event": "international_designation_publication",
      "window_months": 3,
      "window_days": null,
      "window_starts_offset_months": 1,
      "window_starts_on": "day_after",
      "office_time_zone": "Europe/Madrid",
      "holiday_calendar": "euipo_alicante",
      "common_extension": null,
      "applicable_from_date": null,
      "sources": [
        {
          "citation": "Article 196(2) EUTMR",
          "url": "https://eur-lex.europa.eu/eli/reg/2017/1001"
        }
      ]
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null }
}

Documentation Index

Fetch the complete documentation index at: https://docs.signa.so/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Returns a flat list of opposition window rules — the statutory windows during which third parties may oppose a published trademark application or registration. Each rule includes the office’s local time zone, holiday calendar (used for close-date rollover), statutory citations, and any common (non-statutory but routinely granted) extensions. Composite key: each rule is uniquely identified by (office_code, filing_route, trigger_event). This endpoint exposes the same rule corpus that powers the opposition_window field on a trademark detail response. Use it to build educational UI, surface citations alongside a watch alert, or document what your customers can expect for a given office.

Query Parameters

jurisdiction
string
Filter by jurisdiction code (uppercase ISO-2). Comma-separated for multiple values.
office
string
Filter by office code (lowercase, as returned by /v1/offices). Comma-separated for multiple values, e.g. ?office=uspto,euipo.
filing_route
string
Filter by the rule’s filing route discriminator. Accepted values: domestic, madrid_designation. Comma-separated for multiple values.
trigger_event
string
Filter by trigger event. Accepted values: application_publication, registration_publication, international_designation_publication. Comma-separated for multiple values.

Response

A standard list response with data: OppositionRule[]. The corpus is small (~24 rules today) and is returned in a single page.
object
string
Always list
data
object[]
has_more
boolean
Always false
pagination
object
Standard pagination envelope (cursor: null)
{
  "object": "list",
  "data": [
    {
      "object": "opposition_rule",
      "jurisdiction_code": "EU",
      "office_code": "euipo",
      "filing_route": "madrid_designation",
      "trigger_event": "international_designation_publication",
      "window_months": 3,
      "window_days": null,
      "window_starts_offset_months": 1,
      "window_starts_on": "day_after",
      "office_time_zone": "Europe/Madrid",
      "holiday_calendar": "euipo_alicante",
      "common_extension": null,
      "applicable_from_date": null,
      "sources": [
        {
          "citation": "Article 196(2) EUTMR",
          "url": "https://eur-lex.europa.eu/eli/reg/2017/1001"
        }
      ]
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null }
}

Code Examples

curl "https://api.signa.so/v1/opposition-rules?office=euipo" \
  -H "Authorization: Bearer sig_xxxxxxxxxxxx"

Errors

StatusTypeDescription
400validation_errorInvalid filing_route or trigger_event value
401unauthorizedMissing or invalid API key
403forbiddenAPI key missing the trademarks:read scope
429rate_limitedToo many requests