Per-Office Sync Schedule
Production Offices
| Office | Code | Primary Source | Frequency | Typical Lag |
|---|---|---|---|---|
| USPTO | uspto | ODP API bulk daily XML | Daily | < 24 hours |
| EUIPO | euipo | eSearch Plus API | Daily | < 24 hours |
| WIPO | wipo | FTP country notifications | Weekly per country | 1—7 days |
USPTO publishes daily bulk files; Signa ingests within minutes of publication. End-to-end lag from a trademark event to API availability is typically < 24 hours.
EUIPO is currently in beta (sandbox verified). Production API access is pending (returns 403). Data shown is from the EUIPO sandbox environment.
Planned Offices
The following 18 offices are planned for future phases. Connector scaffolds and data source research are in progress. CIPO (Canada), DPMA (Germany), UKIPO (United Kingdom), IGE/IPI (Switzerland), INPI France, BOIP (Benelux), PRV (Sweden), NIPO (Norway), DKPTO (Denmark), PRH (Finland), ISIPO (Iceland), UPRP (Poland), IPOS (Singapore), JPO (Japan), KIPO (South Korea), CNIPA (China), DIP (Thailand), IP Vietnam.Sync frequencies represent the target schedule for production offices. Actual freshness depends on office uptime and data availability. Use the
source_data_date field to determine the actual age of any individual record.Understanding source_data_date
Every trademark record carries a source_data_date field that indicates when the data was published by the source office — not when Signa ingested it. This distinction matters:
| Field | Meaning |
|---|---|
source_data_date | When the office published this version of the data |
updated_at | When Signa last wrote to this record |
created_at | When Signa first ingested this record |
source_data_date: "2026-03-20" and updated_at: "2026-03-22T10:15:00Z" means the data was part of the March 20 daily file, which Signa processed on March 22.
Connector Architecture
Each office has a dedicated connector — a self-contained module that handles the specifics of fetching, parsing, and normalizing data from that office.Sync Modes
Each connector supports two sync modes:| Mode | Method | Use Case |
|---|---|---|
| Incremental | fetchIncremental(since) | Daily/weekly updates. Only fetches records changed since the last sync. |
| Full sync | fetchFullSync() | Initial load or periodic revalidation. Processes the entire dataset. |
Data Consistency Model
Signa uses a two-tier storage architecture with different consistency guarantees:PostgreSQL (Source of Truth)
- Consistency: Immediate
- Writes: Synchronous, transactional
- Reads: Strong consistency (read-your-writes)
- All API detail endpoints (
GET /v1/trademarks/{id}) read from PostgreSQL
OpenSearch (Search Index)
- Consistency: Eventually consistent
- Lag: Typically under 30 seconds after a database write
- Writes: Asynchronous via event pipeline (outbox -> SNS -> SQS -> indexer)
- Search endpoints (
POST /v1/trademarks/search) read from OpenSearch
- When a trademark is updated, the detail endpoint reflects the change immediately
- The search endpoint may take up to 30 seconds to reflect the same change
- In rare cases (indexer backlog, reindexing), search lag can extend to minutes
Checking Office Status
Use the reference data endpoints to check the current sync status of each office:Finding Recently Updated Records
Filter byupdated_at to find records that changed within a time window:
Known Limitations
Some offices have delayed publication
Some offices have delayed publication
Certain offices publish data with a built-in delay. For example, some offices only publish weekly gazette updates, meaning a status change on Monday may not appear in Signa’s data until the following week’s publication.
Historical data may be incomplete
Historical data may be incomplete
Full sync captures the current state of each record but may not include all historical events. Some offices only provide current snapshots without event history. Signa preserves all events it observes going forward, but events that occurred before the first ingestion may be missing.
Image availability varies by office
Image availability varies by office
Not all offices make mark images available via their data feeds. Some require separate image downloads. Image availability is indicated by the
has_media field on trademark records.Goods and services text language
Goods and services text language
Most offices provide goods/services descriptions in their local language. Signa stores the original text and language code but does not translate. Some offices (EUIPO, WIPO) provide multi-language descriptions.