> ## 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.

# Madrid Protocol

> How Signa models international trademark registrations under the Madrid System

The Madrid Protocol is an international treaty that allows trademark holders to seek protection in multiple countries through a single application filed with WIPO (the World Intellectual Property Organization). Signa models the Madrid System, including international registrations, designations, coverage status, and Madrid-specific deadlines.

## How the Madrid System Works

1. **Filing:** The applicant files an international application through their home office (the "office of origin")
2. **WIPO registration:** WIPO registers the mark in the International Register and publishes it in the Madrid Gazette
3. **Designation:** The applicant designates one or more member countries where they want protection
4. **National examination:** Each designated office examines the mark under its own law
5. **Protection or refusal:** Each office independently grants or refuses protection

## Data Model

Signa models a Madrid IR as one **designation** record per designated country, plus the **IR record** itself (the international registration). Each designation is an independent trademark that can have its own status, deadlines, and events, because each designated office makes independent decisions about examination, opposition, and renewal. A mark can be protected in one country and refused in another.

### Designation

| Field               | Value                                                                        |
| ------------------- | ---------------------------------------------------------------------------- |
| `filing_route`      | `madrid_designation`                                                         |
| `office_code`       | `WO` (always: every WIPO-sourced record uses the WIPO office code)           |
| `jurisdiction_code` | The designated country (e.g., `GB`, `DE`): tracks where protection is sought |
| `scope_kind`        | `international_registration`                                                 |
| `ir_number`         | The WIPO registration number (links all designations from the same IR)       |

### Querying an IR family

`GET/POST /v1/trademarks` defaults to **grouped** result presentation (`international_registrations=grouped`): a Madrid IR family is returned as one row with a `coverage` rollup summarizing every designated territory's status. Pass `international_registrations=expanded` to get one row per designation instead. Either way, `GET /v1/trademarks?ir_number=...` returns the whole family, and the `/coverage` endpoint (below) always lists the full per-territory breakdown for a given mark.

## Querying Madrid Marks

### Find All Madrid Marks

<CodeGroup>
  ```bash cURL theme={null}
  # All Madrid designations
  curl -s "https://api.signa.so/v1/trademarks?filing_route=madrid_designation" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

  ```typescript TypeScript theme={null}
  // All Madrid designations
  const madridMarks = await signa.trademarks.list({
    filing_route: "madrid_designation",
  });

  // Shorthand: the is_madrid filter
  const madridMarks2 = await signa.trademarks.list({
    is_madrid: true,
  });
  ```
</CodeGroup>

### Find by IR Number

The `ir_number` is globally unique and does not require an `office` parameter:

<CodeGroup>
  ```bash cURL theme={null}
  curl -s "https://api.signa.so/v1/trademarks?ir_number=1234567" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

  ```typescript TypeScript theme={null}
  const marks = await signa.trademarks.list({
    ir_number: "1234567",
  });
  // Returns the IR family (grouped, by default) or every designation (expanded)
  ```
</CodeGroup>

### Coverage Territories

For a Madrid mark, the coverage endpoint lists all designated territories and their protection status:

<CodeGroup>
  ```bash cURL theme={null}
  curl -s "https://api.signa.so/v1/trademarks/tm_abc123/coverage" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

  ```typescript TypeScript theme={null}
  const coverage = await signa.trademarks.coverage("tm_abc123");
  for (const territory of coverage.data) {
    console.log(
      territory.territory_code,
      territory.protection_status,
      territory.protection_date
    );
  }
  ```
</CodeGroup>

Coverage status values:

| Status                  | Meaning                                       |
| ----------------------- | --------------------------------------------- |
| `designated`            | Designation filed, examination pending        |
| `provisionally_refused` | Office issued a provisional refusal           |
| `finally_refused`       | Protection definitively refused               |
| `protected`             | Protection granted                            |
| `withdrawn`             | Designation withdrawn by the holder           |
| `renounced`             | Holder renounced protection in this territory |
| `ceased`                | Protection ceased (e.g., central attack)      |
| `invalidated`           | Protection invalidated                        |
| `limited`               | Goods/services limited in this territory      |
| `expired`               | Protection expired (not renewed)              |

## Madrid-Specific Dates

Madrid marks carry additional date fields beyond the standard trademark dates:

| Field                          | Description                                                                                                                                                               |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `designation_date`             | When the designation was filed at WIPO                                                                                                                                    |
| `protection_effective_date`    | When protection took effect in the designated territory. Null until the office reports it.                                                                                |
| `dependency_period_end_date`   | End of the 5-year dependency period tied to the base application. Currently null; derive it yourself as `intl_registration_date` + 5 years if you need it today.          |
| `transformation_deadline_date` | Deadline to transform a cancelled designation into a national application. Currently null; derive it yourself as the central attack date + 3 months if you need it today. |

### The Dependency Period

For the first 5 years after international registration, a Madrid mark depends on its base application/registration at the office of origin. If the base mark is cancelled, refused, or surrendered during this period (a "central attack"), the international registration can be cancelled for all designated territories.

### Transformation

If an international registration is cancelled due to a central attack, the holder can "transform" each designation into an independent national application within 3 months.

## Madrid-Specific Deadlines

The deadline engine handles Madrid marks differently from domestic marks. Key differences:

| Aspect              | Domestic                     | Madrid                                                        |
| ------------------- | ---------------------------- | ------------------------------------------------------------- |
| **Renewal**         | Filed at the national office | Filed at WIPO (centralized)                                   |
| **US proof of use** | Section 8 (domestic)         | Section 71 (Madrid equivalent)                                |
| **Trigger date**    | Varies by jurisdiction       | `protection_grant_date` (US), `intl_registration_date` (WIPO) |

### WIPO Renewal

International registrations are renewed centrally at WIPO every 10 years from the international registration date. This covers all designated territories at once.

| Field           | Value                                 |
| --------------- | ------------------------------------- |
| **Type**        | `international_renewal`               |
| **Trigger**     | `intl_registration_date`              |
| **Cycle**       | Every 10 years                        |
| **Consequence** | `lapse_of_international_registration` |

## Relationships

The `/v1/trademarks/{id}/related` endpoint shows how Madrid marks are connected:

| Relationship Type             | Meaning                                                            |
| ----------------------------- | ------------------------------------------------------------------ |
| `madrid_designation_of`       | This designation belongs to an IR                                  |
| `based_on_basic_application`  | The IR is based on this national application                       |
| `based_on_basic_registration` | The IR is based on this national registration                      |
| `transformed_from`            | This national mark was transformed from a cancelled IR designation |
| `replaces_under_4bis`         | Replacement under Madrid Protocol Article 4bis                     |

<CodeGroup>
  ```bash cURL theme={null}
  curl -s "https://api.signa.so/v1/trademarks/tm_abc123/related" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

  ```typescript TypeScript theme={null}
  const related = await signa.trademarks.related("tm_abc123");
  for (const rel of related.data) {
    console.log(rel.relationship_type, rel.related_trademark_id);
  }
  ```
</CodeGroup>
