@signa-so/sdk 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -541,14 +541,14 @@ export interface paths {
541
541
  cookie?: never;
542
542
  };
543
543
  /**
544
- * @description GET variant of trademark search/list. Same multi-strategy search as POST, with flat query params.
544
+ * @description GET variant of trademark search/list. Same search as POST, with flat query params.
545
545
  *
546
546
  * Credits: 10 per page.
547
547
  */
548
548
  get: operations["listTrademarks"];
549
549
  put?: never;
550
550
  /**
551
- * @description Multi-strategy text and phonetic search with faceted aggregations and relevance scoring. When query is omitted, acts as a filtered list (requires at least one filter). When sort is specified with query, relevance_score is null and rescore is disabled.
551
+ * @description Trademark search: q ranks marks through the similarity channels, filters (filters.mark_text included) decide which marks qualify, exclude removes marks, with faceted aggregations. Without q, acts as a filtered list (requires a filter or a mark_text operator). relevance_score is present on every hit whenever there is a q, whatever the sort.
552
552
  *
553
553
  * Credits: 10 per page.
554
554
  */
@@ -1122,7 +1122,7 @@ export interface paths {
1122
1122
  cookie?: never;
1123
1123
  };
1124
1124
  /**
1125
- * @description List an entity's trademarks (summary tier) across ALL member owners, with full Appendix A filter support. Identical to GET /v1/owners/{id}/trademarks per-member, fanned across the entity's members. Rate class: search.
1125
+ * @description List an entity's trademarks (summary tier): every mark whose owner is linked to the entity, with full Appendix A filter support. Scoped exactly like GET /v1/trademarks?entity_id= (the same resolved entity ids, no member-owner cap), so both return the same set for the same entity; the difference is that a missing entity is a 404 here and an empty page there. Rate class: search.
1126
1126
  *
1127
1127
  * Credits: 10 per page.
1128
1128
  */
@@ -2557,6 +2557,12 @@ export interface components {
2557
2557
  */
2558
2558
  stage: string;
2559
2559
  reason: string | null;
2560
+ /**
2561
+ * @description Pending challenges against the record. On an IR family row, the de-duplicated union across its designations.
2562
+ * @example [
2563
+ * "opposition_pending"
2564
+ * ]
2565
+ */
2560
2566
  challenges: string[];
2561
2567
  /**
2562
2568
  * @description Office-reported date when the current status took effect, when available.
@@ -3176,7 +3182,23 @@ export interface components {
3176
3182
  /** @example image/jpeg */
3177
3183
  mime_type: string | null;
3178
3184
  url: string;
3185
+ /** @description Exactly one item is primary when `primary_image_url` is set: the item that URL points at. */
3179
3186
  is_primary: boolean;
3187
+ /**
3188
+ * @description Signa's classification of the office's document type for a document item (office_action, certificate, correspondence, filed_form, other), the same value `GET /v1/trademarks/{id}/documents` serves; null for images.
3189
+ * @example office_action
3190
+ */
3191
+ document_kind: string | null;
3192
+ /**
3193
+ * @description The office's date on the document (mailing or issue date), as published; null when none.
3194
+ * @example 2025-02-03
3195
+ */
3196
+ official_date: string | null;
3197
+ /**
3198
+ * @description Page count of a document item, as published by the office; null when none.
3199
+ * @example 4
3200
+ */
3201
+ page_count: number | null;
3180
3202
  }[];
3181
3203
  priority_claims: {
3182
3204
  /** @example paris */
@@ -3386,6 +3408,45 @@ export interface components {
3386
3408
  */
3387
3409
  matched_via_kind: "direct" | "regional_membership";
3388
3410
  };
3411
+ /** @description Why the hit is in the result set. Search responses only; on a metadata-only listing (no q, no positive mark_text operator) tier is null and via and terms are empty. */
3412
+ TrademarkMatch: {
3413
+ /**
3414
+ * @description The strongest similarity tier of the lanes this hit matched: identical, near_identical, similar or related. Tiers are retrieval categories, not measured edit distances. Null for rows matched only by a trademark number in q, and for rows of a request without q.
3415
+ * @example near_identical
3416
+ * @enum {string|null}
3417
+ */
3418
+ tier: "identical" | "near_identical" | "similar" | "related" | null;
3419
+ /**
3420
+ * @description The similarity channels that matched this hit, plus `identifier` when q was read as a trademark number. Empty without q.
3421
+ * @example [
3422
+ * "fuzzy"
3423
+ * ]
3424
+ */
3425
+ via: ("identifier" | "identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
3426
+ /**
3427
+ * @description The mark_text operator values this hit satisfied, as the caller spelled them (operator order: is, word, starts_with, ends_with, contains, pattern). Empty when the request has no positive mark_text operator.
3428
+ * @example []
3429
+ */
3430
+ terms: string[];
3431
+ /** @description Only with include=match_details. */
3432
+ details?: {
3433
+ /**
3434
+ * @description Internal retrieval lane names that matched.
3435
+ * @example [
3436
+ * "fuzzy_1",
3437
+ * "phonetic_strong"
3438
+ * ]
3439
+ */
3440
+ lanes: string[];
3441
+ /** @description The ranking factors applied to this hit's score. Under an explicit sort or a trademark-number q the length factor does not apply. */
3442
+ factors: {
3443
+ /** @example live_status */
3444
+ factor: string;
3445
+ /** @example 1.3 */
3446
+ weight: number;
3447
+ }[];
3448
+ };
3449
+ };
3389
3450
  /** @description Shape-identical to a /v1/trademarks summary row, minus relevance_score / match_explanation. */
3390
3451
  TrademarkSummaryV1: {
3391
3452
  /** @example tm_7d4e1f2a3b8c9d0e */
@@ -3563,11 +3624,12 @@ export interface components {
3563
3624
  /** @description Search responses only, when a jurisdictions filter is active under the default protection mode: why this hit satisfied it. */
3564
3625
  territory_matches?: components["schemas"]["TerritoryMatch"][];
3565
3626
  /**
3566
- * @description Search responses only: relevance (0–100) for the ranked `similar` mode. Null when ranking is bypassed (explicit sort or a deterministic match mode); absent without a text query.
3627
+ * @description Search responses only: how well the hit matches q (0–100), for ordering only, not a likelihood of confusion. Present on every hit when q is present, whatever the sort (under a sort the length factor does not apply). Null for rows matched only by a trademark number, for mark_text-only requests, and on metadata-only listings.
3567
3628
  * @example 87
3568
3629
  */
3569
3630
  relevance_score?: number | null;
3570
- /** @description Search responses only. Null when ranking is bypassed; absent without a text query. */
3631
+ match?: components["schemas"]["TrademarkMatch"];
3632
+ /** @description Deprecated (removed after the 90-day window): read `match`. Present on every hit when q is present; null for mark_text-only requests. */
3571
3633
  match_explanation?: {
3572
3634
  /**
3573
3635
  * @example [
@@ -3608,7 +3670,7 @@ export interface components {
3608
3670
  [key: string]: string[];
3609
3671
  } | null;
3610
3672
  /**
3611
- * @description List searches only (q sent as a list): the terms (as the caller spelled them) this hit is an exact match for.
3673
+ * @description Deprecated (removed after the 90-day window): read `match.terms`. Present when the request has a positive mark_text operator.
3612
3674
  * @example [
3613
3675
  * "limber"
3614
3676
  * ]
@@ -5249,21 +5311,81 @@ export interface components {
5249
5311
  */
5250
5312
  query: string | null;
5251
5313
  /**
5252
- * @description Public search strategies used for the served result set. Empty for deterministic match modes.
5314
+ * @description Deprecated (removed after the 90-day window): read `similarity_applied`. The applied channels in the old strategy vocabulary.
5253
5315
  * @example [
5254
5316
  * "exact",
5255
- * "phonetic",
5256
5317
  * "fuzzy",
5257
5318
  * "prefix"
5258
5319
  * ]
5259
5320
  */
5260
5321
  strategies_used: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
5261
5322
  /**
5262
- * @description How the query matched the mark text. 'similar' runs the ranked ladder; exact/starts_with/ends_with/contains are deterministic (relevance_score is null on every row).
5323
+ * @description Deprecated (removed after the 90-day window): the old `match` mode the request was translated from, else 'similar'.
5263
5324
  * @example similar
5264
5325
  * @enum {string}
5265
5326
  */
5266
5327
  match: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
5328
+ /**
5329
+ * @description The similarity channels q ran on (identical is always included). Empty without q.
5330
+ * @example [
5331
+ * "identical",
5332
+ * "fuzzy",
5333
+ * "embedded",
5334
+ * "lookalike"
5335
+ * ]
5336
+ */
5337
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
5338
+ /**
5339
+ * @description Version of the ranking that ordered this response. Cursors are bound to it: a new version restarts pagination (400 `cursor_invalid`).
5340
+ * @example v12
5341
+ */
5342
+ ranking_version: string;
5343
+ /**
5344
+ * @description The order applied: `relevance` (q present), `mark_text_fit` (text order for a mark_text-only request), `filing_date` (newest filing first), or the explicit `sort` string.
5345
+ * @example relevance
5346
+ */
5347
+ order: string;
5348
+ /**
5349
+ * @description False only when the search hit its time limit or lost a shard and the request set allow_partial; the page may then be missing matches. Without allow_partial such a search returns 503.
5350
+ * @example true
5351
+ */
5352
+ complete: boolean;
5353
+ /**
5354
+ * @description Why `complete` is false. Omitted when complete.
5355
+ * @example timeout
5356
+ * @enum {string}
5357
+ */
5358
+ incomplete_reason?: "timeout" | "shard_failure";
5359
+ /** @description Present when q was read as a trademark number: those records are looked up besides the ranked text match and listed first. */
5360
+ identifier?: {
5361
+ /**
5362
+ * @description WIPO ST.3 code when q names or implies one office; null for a bare number.
5363
+ * @example US
5364
+ */
5365
+ office: string | null;
5366
+ /**
5367
+ * @example number
5368
+ * @enum {string}
5369
+ */
5370
+ kind: "application" | "registration" | "ir" | "signa_id" | "number";
5371
+ /**
5372
+ * @description The number in the office's stored form (a tm_ id for signa_id).
5373
+ * @example 1939139
5374
+ */
5375
+ number: string;
5376
+ };
5377
+ /** @description The deprecated parameters this request used, each with its replacement. Omitted when none. */
5378
+ deprecations?: {
5379
+ /** @example strategies */
5380
+ param: string;
5381
+ /** @example similarity */
5382
+ replacement: string;
5383
+ /**
5384
+ * @description Date (UTC) from which the deprecated parameter is rejected.
5385
+ * @example 2026-12-28
5386
+ */
5387
+ sunset: string;
5388
+ }[];
5267
5389
  /**
5268
5390
  * @description International registration presentation actually served. grouped = one row per mark/IR, coverage block present on IR rows; expanded = one row per Madrid designation.
5269
5391
  * @example grouped
@@ -5281,24 +5403,24 @@ export interface components {
5281
5403
  * @enum {string}
5282
5404
  */
5283
5405
  territory_match: "protection" | "direct";
5284
- /** @description Coded search warnings: per-strategy skip warnings (a REQUESTED strategy produced zero clauses for the query shape — e.g. strategies=[phonetic] on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
5406
+ /** @description Coded search warnings: per-channel skip warnings (a REQUESTED similarity channel produced zero clauses for the query shape — e.g. similarity=phonetic on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
5285
5407
  warnings?: {
5286
5408
  /**
5287
- * @description Stable warning code for client handling: `<strategy>_skipped` (a requested strategy produced no clauses), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `partial_results` (the search hit its time limit or lost a shard; the page may be missing matches), `strategies_reduced` (OpenSearch rejected the full query and it was retried with fewer strategies; see `dropped_strategies`), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a `q` term, or a term of a `q` list, under a deterministic `match` mode mixes Latin with Greek or Cyrillic letters, which that mode compares as written; see `affected_filter`).
5409
+ * @description Stable warning code for client handling: `<channel>_skipped` (a requested similarity channel produced no clauses for this query; see `channel`), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a mark_text operator value mixes Latin with Greek or Cyrillic letters, which the operators compare as written; see `affected_filter`).
5288
5410
  * @example phonetic_skipped
5289
5411
  */
5290
5412
  code: string;
5291
5413
  /**
5292
5414
  * @description Human-readable explanation of the warning.
5293
- * @example phonetic_skipped: the phonetic strategy produced no clauses for this query.
5415
+ * @example phonetic_skipped: the phonetic similarity channel produced no clauses for this query.
5294
5416
  */
5295
5417
  message: string;
5296
5418
  /**
5297
- * @description For strategy-skip warnings, the requested strategy that produced no clauses.
5419
+ * @description For `<channel>_skipped` warnings, the requested similarity channel that produced no clauses.
5298
5420
  * @example phonetic
5299
5421
  * @enum {string}
5300
5422
  */
5301
- strategy?: "exact" | "phonetic" | "fuzzy" | "prefix";
5423
+ channel?: "identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike";
5302
5424
  /**
5303
5425
  * @description Warning severity (filter-coverage warnings).
5304
5426
  * @example warning
@@ -5317,13 +5439,6 @@ export interface components {
5317
5439
  * ]
5318
5440
  */
5319
5441
  affected_offices?: string[];
5320
- /**
5321
- * @description For `strategies_reduced` warnings, the requested strategies the retry dropped.
5322
- * @example [
5323
- * "fuzzy"
5324
- * ]
5325
- */
5326
- dropped_strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
5327
5442
  /**
5328
5443
  * @description For `expanded_fallback` warnings, the filter(s) the grouped view could not serve. Two entries mean the pair could hold on different designations of one mark.
5329
5444
  * @example [
@@ -5356,6 +5471,33 @@ export interface components {
5356
5471
  aggregation_metadata?: components["schemas"]["AggregationMetadata"];
5357
5472
  request_id: string;
5358
5473
  };
5474
+ /** @description Mark text operators. Values within one operator are OR; operators are AND. Up to 100 values of 200 characters each. */
5475
+ MarkTextFilters: {
5476
+ /** @description Whole-mark equality (case, accents, punctuation, spacing and trademark notices ignored). */
5477
+ is?: string[];
5478
+ /** @description The value appears as a whole word, or consecutive words, of the mark. */
5479
+ word?: string[];
5480
+ /** @description The folded mark begins with the value. */
5481
+ starts_with?: string[];
5482
+ /** @description The folded mark ends with the value. At least 3 characters. */
5483
+ ends_with?: string[];
5484
+ /** @description The value appears anywhere in the folded mark. At least 3 characters. */
5485
+ contains?: string[];
5486
+ /** @description `*` any run, `?` one character, `\` escapes the next character; everything else literal. */
5487
+ pattern?: string[];
5488
+ };
5489
+ /** @description Exclusions: rows matching any value are removed. Never affects ranking. */
5490
+ SearchExclude: {
5491
+ mark_text?: components["schemas"]["MarkTextFilters"];
5492
+ /** @description Exclude marks whose owners are linked to these entities (ent_...). */
5493
+ entity_id?: string[];
5494
+ /** @description Exclude marks linked to any entity in these entities' corporate families (ent_...). */
5495
+ entity_group?: string[];
5496
+ /** @description Exclude marks held by these owners (own_...). */
5497
+ owner_id?: string[];
5498
+ /** @description Exclude these trademarks (tm_...); on the grouped view, the family row containing them. */
5499
+ trademark_ids?: string[];
5500
+ };
5359
5501
  TrademarkEvent: {
5360
5502
  /** @example hst_7d4e1f2a-3b8c-4d0e-9f1a-2b3c4d5e6f70 */
5361
5503
  id: string;
@@ -6092,21 +6234,81 @@ export interface components {
6092
6234
  */
6093
6235
  query: string | null;
6094
6236
  /**
6095
- * @description Public search strategies used for the served result set. Empty for deterministic match modes.
6237
+ * @description Deprecated (removed after the 90-day window): read `similarity_applied`. The applied channels in the old strategy vocabulary.
6096
6238
  * @example [
6097
6239
  * "exact",
6098
- * "phonetic",
6099
6240
  * "fuzzy",
6100
6241
  * "prefix"
6101
6242
  * ]
6102
6243
  */
6103
6244
  strategies_used: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6104
6245
  /**
6105
- * @description How the query matched the mark text. 'similar' runs the ranked ladder; exact/starts_with/ends_with/contains are deterministic (relevance_score is null on every row).
6246
+ * @description Deprecated (removed after the 90-day window): the old `match` mode the request was translated from, else 'similar'.
6106
6247
  * @example similar
6107
6248
  * @enum {string}
6108
6249
  */
6109
6250
  match: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
6251
+ /**
6252
+ * @description The similarity channels q ran on (identical is always included). Empty without q.
6253
+ * @example [
6254
+ * "identical",
6255
+ * "fuzzy",
6256
+ * "embedded",
6257
+ * "lookalike"
6258
+ * ]
6259
+ */
6260
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
6261
+ /**
6262
+ * @description Version of the ranking that ordered this response. Cursors are bound to it: a new version restarts pagination (400 `cursor_invalid`).
6263
+ * @example v12
6264
+ */
6265
+ ranking_version: string;
6266
+ /**
6267
+ * @description The order applied: `relevance` (q present), `mark_text_fit` (text order for a mark_text-only request), `filing_date` (newest filing first), or the explicit `sort` string.
6268
+ * @example relevance
6269
+ */
6270
+ order: string;
6271
+ /**
6272
+ * @description False only when the search hit its time limit or lost a shard and the request set allow_partial; the page may then be missing matches. Without allow_partial such a search returns 503.
6273
+ * @example true
6274
+ */
6275
+ complete: boolean;
6276
+ /**
6277
+ * @description Why `complete` is false. Omitted when complete.
6278
+ * @example timeout
6279
+ * @enum {string}
6280
+ */
6281
+ incomplete_reason?: "timeout" | "shard_failure";
6282
+ /** @description Present when q was read as a trademark number: those records are looked up besides the ranked text match and listed first. */
6283
+ identifier?: {
6284
+ /**
6285
+ * @description WIPO ST.3 code when q names or implies one office; null for a bare number.
6286
+ * @example US
6287
+ */
6288
+ office: string | null;
6289
+ /**
6290
+ * @example number
6291
+ * @enum {string}
6292
+ */
6293
+ kind: "application" | "registration" | "ir" | "signa_id" | "number";
6294
+ /**
6295
+ * @description The number in the office's stored form (a tm_ id for signa_id).
6296
+ * @example 1939139
6297
+ */
6298
+ number: string;
6299
+ };
6300
+ /** @description The deprecated parameters this request used, each with its replacement. Omitted when none. */
6301
+ deprecations?: {
6302
+ /** @example strategies */
6303
+ param: string;
6304
+ /** @example similarity */
6305
+ replacement: string;
6306
+ /**
6307
+ * @description Date (UTC) from which the deprecated parameter is rejected.
6308
+ * @example 2026-12-28
6309
+ */
6310
+ sunset: string;
6311
+ }[];
6110
6312
  /**
6111
6313
  * @description International registration presentation actually served. grouped = one row per mark/IR, coverage block present on IR rows; expanded = one row per Madrid designation.
6112
6314
  * @example grouped
@@ -6124,24 +6326,24 @@ export interface components {
6124
6326
  * @enum {string}
6125
6327
  */
6126
6328
  territory_match: "protection" | "direct";
6127
- /** @description Coded search warnings: per-strategy skip warnings (a REQUESTED strategy produced zero clauses for the query shape — e.g. strategies=[phonetic] on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6329
+ /** @description Coded search warnings: per-channel skip warnings (a REQUESTED similarity channel produced zero clauses for the query shape — e.g. similarity=phonetic on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6128
6330
  warnings?: {
6129
6331
  /**
6130
- * @description Stable warning code for client handling: `<strategy>_skipped` (a requested strategy produced no clauses), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `partial_results` (the search hit its time limit or lost a shard; the page may be missing matches), `strategies_reduced` (OpenSearch rejected the full query and it was retried with fewer strategies; see `dropped_strategies`), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a `q` term, or a term of a `q` list, under a deterministic `match` mode mixes Latin with Greek or Cyrillic letters, which that mode compares as written; see `affected_filter`).
6332
+ * @description Stable warning code for client handling: `<channel>_skipped` (a requested similarity channel produced no clauses for this query; see `channel`), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a mark_text operator value mixes Latin with Greek or Cyrillic letters, which the operators compare as written; see `affected_filter`).
6131
6333
  * @example phonetic_skipped
6132
6334
  */
6133
6335
  code: string;
6134
6336
  /**
6135
6337
  * @description Human-readable explanation of the warning.
6136
- * @example phonetic_skipped: the phonetic strategy produced no clauses for this query.
6338
+ * @example phonetic_skipped: the phonetic similarity channel produced no clauses for this query.
6137
6339
  */
6138
6340
  message: string;
6139
6341
  /**
6140
- * @description For strategy-skip warnings, the requested strategy that produced no clauses.
6342
+ * @description For `<channel>_skipped` warnings, the requested similarity channel that produced no clauses.
6141
6343
  * @example phonetic
6142
6344
  * @enum {string}
6143
6345
  */
6144
- strategy?: "exact" | "phonetic" | "fuzzy" | "prefix";
6346
+ channel?: "identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike";
6145
6347
  /**
6146
6348
  * @description Warning severity (filter-coverage warnings).
6147
6349
  * @example warning
@@ -6160,13 +6362,6 @@ export interface components {
6160
6362
  * ]
6161
6363
  */
6162
6364
  affected_offices?: string[];
6163
- /**
6164
- * @description For `strategies_reduced` warnings, the requested strategies the retry dropped.
6165
- * @example [
6166
- * "fuzzy"
6167
- * ]
6168
- */
6169
- dropped_strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6170
6365
  /**
6171
6366
  * @description For `expanded_fallback` warnings, the filter(s) the grouped view could not serve. Two entries mean the pair could hold on different designations of one mark.
6172
6367
  * @example [
@@ -6348,21 +6543,81 @@ export interface components {
6348
6543
  */
6349
6544
  query: string | null;
6350
6545
  /**
6351
- * @description Public search strategies used for the served result set. Empty for deterministic match modes.
6546
+ * @description Deprecated (removed after the 90-day window): read `similarity_applied`. The applied channels in the old strategy vocabulary.
6352
6547
  * @example [
6353
6548
  * "exact",
6354
- * "phonetic",
6355
6549
  * "fuzzy",
6356
6550
  * "prefix"
6357
6551
  * ]
6358
6552
  */
6359
6553
  strategies_used: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6360
6554
  /**
6361
- * @description How the query matched the mark text. 'similar' runs the ranked ladder; exact/starts_with/ends_with/contains are deterministic (relevance_score is null on every row).
6555
+ * @description Deprecated (removed after the 90-day window): the old `match` mode the request was translated from, else 'similar'.
6362
6556
  * @example similar
6363
6557
  * @enum {string}
6364
6558
  */
6365
6559
  match: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
6560
+ /**
6561
+ * @description The similarity channels q ran on (identical is always included). Empty without q.
6562
+ * @example [
6563
+ * "identical",
6564
+ * "fuzzy",
6565
+ * "embedded",
6566
+ * "lookalike"
6567
+ * ]
6568
+ */
6569
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
6570
+ /**
6571
+ * @description Version of the ranking that ordered this response. Cursors are bound to it: a new version restarts pagination (400 `cursor_invalid`).
6572
+ * @example v12
6573
+ */
6574
+ ranking_version: string;
6575
+ /**
6576
+ * @description The order applied: `relevance` (q present), `mark_text_fit` (text order for a mark_text-only request), `filing_date` (newest filing first), or the explicit `sort` string.
6577
+ * @example relevance
6578
+ */
6579
+ order: string;
6580
+ /**
6581
+ * @description False only when the search hit its time limit or lost a shard and the request set allow_partial; the page may then be missing matches. Without allow_partial such a search returns 503.
6582
+ * @example true
6583
+ */
6584
+ complete: boolean;
6585
+ /**
6586
+ * @description Why `complete` is false. Omitted when complete.
6587
+ * @example timeout
6588
+ * @enum {string}
6589
+ */
6590
+ incomplete_reason?: "timeout" | "shard_failure";
6591
+ /** @description Present when q was read as a trademark number: those records are looked up besides the ranked text match and listed first. */
6592
+ identifier?: {
6593
+ /**
6594
+ * @description WIPO ST.3 code when q names or implies one office; null for a bare number.
6595
+ * @example US
6596
+ */
6597
+ office: string | null;
6598
+ /**
6599
+ * @example number
6600
+ * @enum {string}
6601
+ */
6602
+ kind: "application" | "registration" | "ir" | "signa_id" | "number";
6603
+ /**
6604
+ * @description The number in the office's stored form (a tm_ id for signa_id).
6605
+ * @example 1939139
6606
+ */
6607
+ number: string;
6608
+ };
6609
+ /** @description The deprecated parameters this request used, each with its replacement. Omitted when none. */
6610
+ deprecations?: {
6611
+ /** @example strategies */
6612
+ param: string;
6613
+ /** @example similarity */
6614
+ replacement: string;
6615
+ /**
6616
+ * @description Date (UTC) from which the deprecated parameter is rejected.
6617
+ * @example 2026-12-28
6618
+ */
6619
+ sunset: string;
6620
+ }[];
6366
6621
  /**
6367
6622
  * @description International registration presentation actually served. grouped = one row per mark/IR, coverage block present on IR rows; expanded = one row per Madrid designation.
6368
6623
  * @example grouped
@@ -6380,24 +6635,24 @@ export interface components {
6380
6635
  * @enum {string}
6381
6636
  */
6382
6637
  territory_match: "protection" | "direct";
6383
- /** @description Coded search warnings: per-strategy skip warnings (a REQUESTED strategy produced zero clauses for the query shape — e.g. strategies=[phonetic] on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6638
+ /** @description Coded search warnings: per-channel skip warnings (a REQUESTED similarity channel produced zero clauses for the query shape — e.g. similarity=phonetic on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6384
6639
  warnings?: {
6385
6640
  /**
6386
- * @description Stable warning code for client handling: `<strategy>_skipped` (a requested strategy produced no clauses), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `partial_results` (the search hit its time limit or lost a shard; the page may be missing matches), `strategies_reduced` (OpenSearch rejected the full query and it was retried with fewer strategies; see `dropped_strategies`), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a `q` term, or a term of a `q` list, under a deterministic `match` mode mixes Latin with Greek or Cyrillic letters, which that mode compares as written; see `affected_filter`).
6641
+ * @description Stable warning code for client handling: `<channel>_skipped` (a requested similarity channel produced no clauses for this query; see `channel`), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a mark_text operator value mixes Latin with Greek or Cyrillic letters, which the operators compare as written; see `affected_filter`).
6387
6642
  * @example phonetic_skipped
6388
6643
  */
6389
6644
  code: string;
6390
6645
  /**
6391
6646
  * @description Human-readable explanation of the warning.
6392
- * @example phonetic_skipped: the phonetic strategy produced no clauses for this query.
6647
+ * @example phonetic_skipped: the phonetic similarity channel produced no clauses for this query.
6393
6648
  */
6394
6649
  message: string;
6395
6650
  /**
6396
- * @description For strategy-skip warnings, the requested strategy that produced no clauses.
6651
+ * @description For `<channel>_skipped` warnings, the requested similarity channel that produced no clauses.
6397
6652
  * @example phonetic
6398
6653
  * @enum {string}
6399
6654
  */
6400
- strategy?: "exact" | "phonetic" | "fuzzy" | "prefix";
6655
+ channel?: "identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike";
6401
6656
  /**
6402
6657
  * @description Warning severity (filter-coverage warnings).
6403
6658
  * @example warning
@@ -6416,13 +6671,6 @@ export interface components {
6416
6671
  * ]
6417
6672
  */
6418
6673
  affected_offices?: string[];
6419
- /**
6420
- * @description For `strategies_reduced` warnings, the requested strategies the retry dropped.
6421
- * @example [
6422
- * "fuzzy"
6423
- * ]
6424
- */
6425
- dropped_strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6426
6674
  /**
6427
6675
  * @description For `expanded_fallback` warnings, the filter(s) the grouped view could not serve. Two entries mean the pair could hold on different designations of one mark.
6428
6676
  * @example [
@@ -6613,21 +6861,81 @@ export interface components {
6613
6861
  */
6614
6862
  query: string | null;
6615
6863
  /**
6616
- * @description Public search strategies used for the served result set. Empty for deterministic match modes.
6864
+ * @description Deprecated (removed after the 90-day window): read `similarity_applied`. The applied channels in the old strategy vocabulary.
6617
6865
  * @example [
6618
6866
  * "exact",
6619
- * "phonetic",
6620
6867
  * "fuzzy",
6621
6868
  * "prefix"
6622
6869
  * ]
6623
6870
  */
6624
6871
  strategies_used: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6625
6872
  /**
6626
- * @description How the query matched the mark text. 'similar' runs the ranked ladder; exact/starts_with/ends_with/contains are deterministic (relevance_score is null on every row).
6873
+ * @description Deprecated (removed after the 90-day window): the old `match` mode the request was translated from, else 'similar'.
6627
6874
  * @example similar
6628
6875
  * @enum {string}
6629
6876
  */
6630
6877
  match: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
6878
+ /**
6879
+ * @description The similarity channels q ran on (identical is always included). Empty without q.
6880
+ * @example [
6881
+ * "identical",
6882
+ * "fuzzy",
6883
+ * "embedded",
6884
+ * "lookalike"
6885
+ * ]
6886
+ */
6887
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
6888
+ /**
6889
+ * @description Version of the ranking that ordered this response. Cursors are bound to it: a new version restarts pagination (400 `cursor_invalid`).
6890
+ * @example v12
6891
+ */
6892
+ ranking_version: string;
6893
+ /**
6894
+ * @description The order applied: `relevance` (q present), `mark_text_fit` (text order for a mark_text-only request), `filing_date` (newest filing first), or the explicit `sort` string.
6895
+ * @example relevance
6896
+ */
6897
+ order: string;
6898
+ /**
6899
+ * @description False only when the search hit its time limit or lost a shard and the request set allow_partial; the page may then be missing matches. Without allow_partial such a search returns 503.
6900
+ * @example true
6901
+ */
6902
+ complete: boolean;
6903
+ /**
6904
+ * @description Why `complete` is false. Omitted when complete.
6905
+ * @example timeout
6906
+ * @enum {string}
6907
+ */
6908
+ incomplete_reason?: "timeout" | "shard_failure";
6909
+ /** @description Present when q was read as a trademark number: those records are looked up besides the ranked text match and listed first. */
6910
+ identifier?: {
6911
+ /**
6912
+ * @description WIPO ST.3 code when q names or implies one office; null for a bare number.
6913
+ * @example US
6914
+ */
6915
+ office: string | null;
6916
+ /**
6917
+ * @example number
6918
+ * @enum {string}
6919
+ */
6920
+ kind: "application" | "registration" | "ir" | "signa_id" | "number";
6921
+ /**
6922
+ * @description The number in the office's stored form (a tm_ id for signa_id).
6923
+ * @example 1939139
6924
+ */
6925
+ number: string;
6926
+ };
6927
+ /** @description The deprecated parameters this request used, each with its replacement. Omitted when none. */
6928
+ deprecations?: {
6929
+ /** @example strategies */
6930
+ param: string;
6931
+ /** @example similarity */
6932
+ replacement: string;
6933
+ /**
6934
+ * @description Date (UTC) from which the deprecated parameter is rejected.
6935
+ * @example 2026-12-28
6936
+ */
6937
+ sunset: string;
6938
+ }[];
6631
6939
  /**
6632
6940
  * @description International registration presentation actually served. grouped = one row per mark/IR, coverage block present on IR rows; expanded = one row per Madrid designation.
6633
6941
  * @example grouped
@@ -6645,24 +6953,24 @@ export interface components {
6645
6953
  * @enum {string}
6646
6954
  */
6647
6955
  territory_match: "protection" | "direct";
6648
- /** @description Coded search warnings: per-strategy skip warnings (a REQUESTED strategy produced zero clauses for the query shape — e.g. strategies=[phonetic] on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6956
+ /** @description Coded search warnings: per-channel skip warnings (a REQUESTED similarity channel produced zero clauses for the query shape — e.g. similarity=phonetic on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6649
6957
  warnings?: {
6650
6958
  /**
6651
- * @description Stable warning code for client handling: `<strategy>_skipped` (a requested strategy produced no clauses), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `partial_results` (the search hit its time limit or lost a shard; the page may be missing matches), `strategies_reduced` (OpenSearch rejected the full query and it was retried with fewer strategies; see `dropped_strategies`), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a `q` term, or a term of a `q` list, under a deterministic `match` mode mixes Latin with Greek or Cyrillic letters, which that mode compares as written; see `affected_filter`).
6959
+ * @description Stable warning code for client handling: `<channel>_skipped` (a requested similarity channel produced no clauses for this query; see `channel`), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a mark_text operator value mixes Latin with Greek or Cyrillic letters, which the operators compare as written; see `affected_filter`).
6652
6960
  * @example phonetic_skipped
6653
6961
  */
6654
6962
  code: string;
6655
6963
  /**
6656
6964
  * @description Human-readable explanation of the warning.
6657
- * @example phonetic_skipped: the phonetic strategy produced no clauses for this query.
6965
+ * @example phonetic_skipped: the phonetic similarity channel produced no clauses for this query.
6658
6966
  */
6659
6967
  message: string;
6660
6968
  /**
6661
- * @description For strategy-skip warnings, the requested strategy that produced no clauses.
6969
+ * @description For `<channel>_skipped` warnings, the requested similarity channel that produced no clauses.
6662
6970
  * @example phonetic
6663
6971
  * @enum {string}
6664
6972
  */
6665
- strategy?: "exact" | "phonetic" | "fuzzy" | "prefix";
6973
+ channel?: "identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike";
6666
6974
  /**
6667
6975
  * @description Warning severity (filter-coverage warnings).
6668
6976
  * @example warning
@@ -6681,13 +6989,6 @@ export interface components {
6681
6989
  * ]
6682
6990
  */
6683
6991
  affected_offices?: string[];
6684
- /**
6685
- * @description For `strategies_reduced` warnings, the requested strategies the retry dropped.
6686
- * @example [
6687
- * "fuzzy"
6688
- * ]
6689
- */
6690
- dropped_strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6691
6992
  /**
6692
6993
  * @description For `expanded_fallback` warnings, the filter(s) the grouped view could not serve. Two entries mean the pair could hold on different designations of one mark.
6693
6994
  * @example [
@@ -6929,21 +7230,81 @@ export interface components {
6929
7230
  */
6930
7231
  query: string | null;
6931
7232
  /**
6932
- * @description Public search strategies used for the served result set. Empty for deterministic match modes.
7233
+ * @description Deprecated (removed after the 90-day window): read `similarity_applied`. The applied channels in the old strategy vocabulary.
6933
7234
  * @example [
6934
7235
  * "exact",
6935
- * "phonetic",
6936
7236
  * "fuzzy",
6937
7237
  * "prefix"
6938
7238
  * ]
6939
7239
  */
6940
7240
  strategies_used: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
6941
7241
  /**
6942
- * @description How the query matched the mark text. 'similar' runs the ranked ladder; exact/starts_with/ends_with/contains are deterministic (relevance_score is null on every row).
7242
+ * @description Deprecated (removed after the 90-day window): the old `match` mode the request was translated from, else 'similar'.
6943
7243
  * @example similar
6944
7244
  * @enum {string}
6945
7245
  */
6946
7246
  match: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
7247
+ /**
7248
+ * @description The similarity channels q ran on (identical is always included). Empty without q.
7249
+ * @example [
7250
+ * "identical",
7251
+ * "fuzzy",
7252
+ * "embedded",
7253
+ * "lookalike"
7254
+ * ]
7255
+ */
7256
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
7257
+ /**
7258
+ * @description Version of the ranking that ordered this response. Cursors are bound to it: a new version restarts pagination (400 `cursor_invalid`).
7259
+ * @example v12
7260
+ */
7261
+ ranking_version: string;
7262
+ /**
7263
+ * @description The order applied: `relevance` (q present), `mark_text_fit` (text order for a mark_text-only request), `filing_date` (newest filing first), or the explicit `sort` string.
7264
+ * @example relevance
7265
+ */
7266
+ order: string;
7267
+ /**
7268
+ * @description False only when the search hit its time limit or lost a shard and the request set allow_partial; the page may then be missing matches. Without allow_partial such a search returns 503.
7269
+ * @example true
7270
+ */
7271
+ complete: boolean;
7272
+ /**
7273
+ * @description Why `complete` is false. Omitted when complete.
7274
+ * @example timeout
7275
+ * @enum {string}
7276
+ */
7277
+ incomplete_reason?: "timeout" | "shard_failure";
7278
+ /** @description Present when q was read as a trademark number: those records are looked up besides the ranked text match and listed first. */
7279
+ identifier?: {
7280
+ /**
7281
+ * @description WIPO ST.3 code when q names or implies one office; null for a bare number.
7282
+ * @example US
7283
+ */
7284
+ office: string | null;
7285
+ /**
7286
+ * @example number
7287
+ * @enum {string}
7288
+ */
7289
+ kind: "application" | "registration" | "ir" | "signa_id" | "number";
7290
+ /**
7291
+ * @description The number in the office's stored form (a tm_ id for signa_id).
7292
+ * @example 1939139
7293
+ */
7294
+ number: string;
7295
+ };
7296
+ /** @description The deprecated parameters this request used, each with its replacement. Omitted when none. */
7297
+ deprecations?: {
7298
+ /** @example strategies */
7299
+ param: string;
7300
+ /** @example similarity */
7301
+ replacement: string;
7302
+ /**
7303
+ * @description Date (UTC) from which the deprecated parameter is rejected.
7304
+ * @example 2026-12-28
7305
+ */
7306
+ sunset: string;
7307
+ }[];
6947
7308
  /**
6948
7309
  * @description International registration presentation actually served. grouped = one row per mark/IR, coverage block present on IR rows; expanded = one row per Madrid designation.
6949
7310
  * @example grouped
@@ -6961,24 +7322,24 @@ export interface components {
6961
7322
  * @enum {string}
6962
7323
  */
6963
7324
  territory_match: "protection" | "direct";
6964
- /** @description Coded search warnings: per-strategy skip warnings (a REQUESTED strategy produced zero clauses for the query shape — e.g. strategies=[phonetic] on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
7325
+ /** @description Coded search warnings: per-channel skip warnings (a REQUESTED similarity channel produced zero clauses for the query shape — e.g. similarity=phonetic on a query too short/high-collision), filter-coverage warnings (an applied filter, e.g. opposition_status or seniority_claims, has partial index coverage), `expanded_fallback` (a grouped request was served one row per record), and `result_window_reached` (the 10,000-row result window, not the data, ends this walk). Omitted when there is nothing to warn about. */
6965
7326
  warnings?: {
6966
7327
  /**
6967
- * @description Stable warning code for client handling: `<strategy>_skipped` (a requested strategy produced no clauses), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `partial_results` (the search hit its time limit or lost a shard; the page may be missing matches), `strategies_reduced` (OpenSearch rejected the full query and it was retried with fewer strategies; see `dropped_strategies`), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a `q` term, or a term of a `q` list, under a deterministic `match` mode mixes Latin with Greek or Cyrillic letters, which that mode compares as written; see `affected_filter`).
7328
+ * @description Stable warning code for client handling: `<channel>_skipped` (a requested similarity channel produced no clauses for this query; see `channel`), `partial_opposition_coverage` / `partial_seniority_coverage` (filter coverage), `expanded_fallback` (a grouped request was served one row per record because the grouped view cannot serve a filter, sort or option; see `affected_filters` / `affected_option`), `result_window_reached` (more than 10,000 rows match and this page is the last one the 10,000-row result window lets a relevance or sorted walk reach), `mixed_script` (a mark_text operator value mixes Latin with Greek or Cyrillic letters, which the operators compare as written; see `affected_filter`).
6968
7329
  * @example phonetic_skipped
6969
7330
  */
6970
7331
  code: string;
6971
7332
  /**
6972
7333
  * @description Human-readable explanation of the warning.
6973
- * @example phonetic_skipped: the phonetic strategy produced no clauses for this query.
7334
+ * @example phonetic_skipped: the phonetic similarity channel produced no clauses for this query.
6974
7335
  */
6975
7336
  message: string;
6976
7337
  /**
6977
- * @description For strategy-skip warnings, the requested strategy that produced no clauses.
7338
+ * @description For `<channel>_skipped` warnings, the requested similarity channel that produced no clauses.
6978
7339
  * @example phonetic
6979
7340
  * @enum {string}
6980
7341
  */
6981
- strategy?: "exact" | "phonetic" | "fuzzy" | "prefix";
7342
+ channel?: "identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike";
6982
7343
  /**
6983
7344
  * @description Warning severity (filter-coverage warnings).
6984
7345
  * @example warning
@@ -6997,13 +7358,6 @@ export interface components {
6997
7358
  * ]
6998
7359
  */
6999
7360
  affected_offices?: string[];
7000
- /**
7001
- * @description For `strategies_reduced` warnings, the requested strategies the retry dropped.
7002
- * @example [
7003
- * "fuzzy"
7004
- * ]
7005
- */
7006
- dropped_strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
7007
7361
  /**
7008
7362
  * @description For `expanded_fallback` warnings, the filter(s) the grouped view could not serve. Two entries mean the pair could hold on different designations of one mark.
7009
7363
  * @example [
@@ -9140,11 +9494,16 @@ export interface components {
9140
9494
  /** @description Present and `true` when the change diff was bounded (entries dropped past the max count, or an over-long from/to value replaced with a sentinel, or a byte-budget cap hit). Absent when the diff is complete. */
9141
9495
  diff_truncated?: boolean;
9142
9496
  };
9143
- /** @description Match metadata (why/how the mark matched the watch). Null for pure-filter / pre-v2 alerts that carry no match scoring. */
9497
+ /** @description Match metadata (why/how the mark matched the watch). Null for pure-filter / pre-v2 alerts that carry no match scoring. `score` is the engine score for the watch query, not the 0-100 search `relevance_score`. */
9144
9498
  match: {
9145
9499
  reason: string | null;
9146
9500
  score: number | null;
9147
9501
  score_basis: string | null;
9502
+ /**
9503
+ * @description Similarity tier of the matched mark, the same label a search hit carries as `match.tier` (identical, near_identical, similar, related). A retrieval category, not a measured edit distance. Null for filter-only watches, marks found only by their number, and alerts emitted before the field existed.
9504
+ * @enum {string|null}
9505
+ */
9506
+ tier: "identical" | "near_identical" | "similar" | "related" | null;
9148
9507
  } | null;
9149
9508
  trademark: components["schemas"]["AlertTrademark"];
9150
9509
  deadline: {
@@ -9219,11 +9578,16 @@ export interface components {
9219
9578
  /** @description Present and `true` when the change diff was bounded (entries dropped past the max count, or an over-long from/to value replaced with a sentinel, or a byte-budget cap hit). Absent when the diff is complete. */
9220
9579
  diff_truncated?: boolean;
9221
9580
  };
9222
- /** @description Match metadata (why/how the mark matched the watch). Null for pure-filter / pre-v2 alerts that carry no match scoring. */
9581
+ /** @description Match metadata (why/how the mark matched the watch). Null for pure-filter / pre-v2 alerts that carry no match scoring. `score` is the engine score for the watch query, not the 0-100 search `relevance_score`. */
9223
9582
  match: {
9224
9583
  reason: string | null;
9225
9584
  score: number | null;
9226
9585
  score_basis: string | null;
9586
+ /**
9587
+ * @description Similarity tier of the matched mark, the same label a search hit carries as `match.tier` (identical, near_identical, similar, related). A retrieval category, not a measured edit distance. Null for filter-only watches, marks found only by their number, and alerts emitted before the field existed.
9588
+ * @enum {string|null}
9589
+ */
9590
+ tier: "identical" | "near_identical" | "similar" | "related" | null;
9227
9591
  } | null;
9228
9592
  trademark: components["schemas"]["AlertTrademark"];
9229
9593
  deadline: {
@@ -9268,6 +9632,17 @@ export interface components {
9268
9632
  };
9269
9633
  request_id: string;
9270
9634
  };
9635
+ WatchDeprecation: {
9636
+ /** @example query.strategies */
9637
+ param: string;
9638
+ /** @example query.similarity */
9639
+ replacement: string;
9640
+ /**
9641
+ * @description Date the deprecated key stops being accepted (YYYY-MM-DD).
9642
+ * @example 2026-12-28
9643
+ */
9644
+ sunset: string;
9645
+ };
9271
9646
  Watch: {
9272
9647
  /** @example wat_01HK... */
9273
9648
  id: string;
@@ -9334,6 +9709,8 @@ export interface components {
9334
9709
  };
9335
9710
  created_at: string;
9336
9711
  updated_at: string;
9712
+ /** @description Present on create, update and bulk responses when the written query used a deprecated key: `strategies` (replaced by `similarity`) or `min_match_tier` (replaced by `min_tier`). The watch is kept as a legacy watch with its original matching until it is re-saved without them. Each entry names the key, its replacement and the date the old key stops being accepted. */
9713
+ deprecations?: components["schemas"]["WatchDeprecation"][];
9337
9714
  request_id: string;
9338
9715
  };
9339
9716
  WatchList: {
@@ -9405,6 +9782,8 @@ export interface components {
9405
9782
  };
9406
9783
  created_at: string;
9407
9784
  updated_at: string;
9785
+ /** @description Present on create, update and bulk responses when the written query used a deprecated key: `strategies` (replaced by `similarity`) or `min_match_tier` (replaced by `min_tier`). The watch is kept as a legacy watch with its original matching until it is re-saved without them. Each entry names the key, its replacement and the date the old key stops being accepted. */
9786
+ deprecations?: components["schemas"]["WatchDeprecation"][];
9408
9787
  }[];
9409
9788
  has_more: boolean;
9410
9789
  pagination: {
@@ -9427,6 +9806,13 @@ export interface components {
9427
9806
  score_threshold: number | null;
9428
9807
  /** @enum {string|null} */
9429
9808
  min_match_tier: "exact" | "normalized" | "fuzzy" | "phonetic" | null;
9809
+ /** @description The similarity channels the watch query runs. Null without q, and for a legacy watch (stored with the deprecated keys, or before v3 and not re-saved since). */
9810
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
9811
+ /**
9812
+ * @description The weakest similarity tier that alerts. Null for a legacy watch (stored with the deprecated keys, or before v3 and not re-saved since), which reports min_match_tier.
9813
+ * @enum {string|null}
9814
+ */
9815
+ min_tier: "identical" | "near_identical" | "similar" | "related" | null;
9430
9816
  alert_fired: boolean;
9431
9817
  reason: string;
9432
9818
  /** @enum {string|null} */
@@ -11944,9 +12330,24 @@ export interface operations {
11944
12330
  query?: {
11945
12331
  q?: string;
11946
12332
  sort?: string;
11947
- strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[] | null;
11948
- match?: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
11949
- mark_text_not_contains?: string;
12333
+ similarity?: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
12334
+ mark_text_is?: string[] | null;
12335
+ mark_text_word?: string[] | null;
12336
+ mark_text_starts_with?: string[] | null;
12337
+ mark_text_ends_with?: string[] | null;
12338
+ mark_text_contains?: string[] | null;
12339
+ mark_text_pattern?: string[] | null;
12340
+ mark_text_not_is?: string[] | null;
12341
+ mark_text_not_word?: string[] | null;
12342
+ mark_text_not_starts_with?: string[] | null;
12343
+ mark_text_not_ends_with?: string[] | null;
12344
+ mark_text_not_contains?: string[] | null;
12345
+ mark_text_not_pattern?: string[] | null;
12346
+ entity_id_not?: string[] | null;
12347
+ entity_group_not?: string[] | null;
12348
+ owner_id_not?: string[] | null;
12349
+ trademark_ids_not?: string[] | null;
12350
+ allow_partial?: boolean | null;
11950
12351
  status_primary?: ("pending" | "active" | "inactive" | "unknown" | "mixed")[] | null;
11951
12352
  status_stage?: ("filed" | "examining" | "pending_publication" | "published" | "opposition_period" | "pending_opposition" | "pending_cancellation" | "pending_issuance" | "registered" | "allowed" | "abandoned" | "withdrawn" | "surrendered" | "refused" | "cancelled" | "invalidated" | "expired" | "unknown" | "mixed")[] | null;
11952
12353
  status_reason?: ("refused" | "withdrawn" | "abandoned" | "cancelled" | "invalidated" | "expired" | "surrendered" | "revoked" | "other")[] | null;
@@ -12032,7 +12433,7 @@ export interface operations {
12032
12433
  is_retracted?: boolean | null;
12033
12434
  is_series_mark?: boolean | null;
12034
12435
  international_registrations?: "grouped" | "expanded";
12035
- include?: "full_goods_services"[] | null;
12436
+ include?: ("full_goods_services" | "match_details")[] | null;
12036
12437
  fields?: string[] | null;
12037
12438
  owner_publicly_traded?: boolean | null;
12038
12439
  owner_has_lei?: boolean | null;
@@ -12110,24 +12511,13 @@ export interface operations {
12110
12511
  requestBody?: {
12111
12512
  content: {
12112
12513
  "application/json": {
12113
- /**
12114
- * @description Search query: one term as a string, or a list of exact terms. A list returns every mark that is an exact match under match=exact rules (case, accents, punctuation and spacing) for ANY of its terms, and each hit carries matched_terms[]. A list takes 1-100 terms of up to 200 characters; terms that differ only in case or accents are sent once under the first spelling, and matched_terms lists the kept spellings a hit matches. A list runs match=exact (the default for a list; any other match, or strategies, is a 400). One page costs the same as any search page regardless of term count. A string needs 2 characters for match=similar and 1 for the deterministic match modes. Optional for filtered listing.
12115
- * @example SIGNA
12116
- */
12117
- query?: string | string[];
12118
- /** @description Alias for `query` (parity with GET /v1/trademarks). Pass one or the other, not both. */
12119
- q?: string | string[];
12120
- /** @description Sort field(s), comma-separated, - prefix for desc. Valid: filing_date, registration_date, expiry_date, renewal_due_date, updated_at, publication_date, termination_date, office_code, jurisdiction_code, mark_text, owner_name. Max 3. Default: -filing_date when no query. Note: sort=office_code orders by the stored office identifier, which can differ from the alphabetical order of the ST.3 codes shown in office_code. */
12514
+ /** @description Search text, ranked through the similarity channels: 1-500 characters, at least 2 after case and accent folding (one CJK character is enough). Always literal; filter on the mark text with the mark_text operators. A trademark number in q (1939139, US 5123456, tm_...) is also looked up and its records lead the page. Optional for a filtered listing. */
12515
+ q?: string;
12516
+ /** @description Similarity channels for q: identical, fuzzy, embedded, phonetic, lookalike. Default identical, fuzzy, embedded, lookalike; identical is always on. Requires q. */
12517
+ similarity?: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[];
12518
+ exclude?: components["schemas"]["SearchExclude"];
12519
+ /** @description Sort field(s), comma-separated, - prefix for desc. Default: relevance with q, mark text order with a mark_text filter and no q, otherwise -filing_date. relevance_score stays on every hit under any sort when q is present. sort=office_code orders by the ST.3 code shown in office_code. Valid: filing_date, registration_date, expiry_date, renewal_due_date, updated_at, publication_date, termination_date, office_code, jurisdiction_code, mark_text, owner_name. Max 3. */
12121
12520
  sort?: string;
12122
- /** @description Search strategies (match=similar only). Defaults to exact + fuzzy for text queries. Only the strategies passed run: exact = whole-mark match (plus serial/registration numbers); synonym and phrase matching are part of fuzzy. */
12123
- strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[];
12124
- /**
12125
- * @description How the query matches the mark text: similar (default, ranked) | exact | starts_with | ends_with | contains. Deterministic modes require a query and disallow strategies.
12126
- * @enum {string}
12127
- */
12128
- match?: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
12129
- /** @description Exclude marks whose text contains this substring (case/accent-insensitive). Composable with any match mode. */
12130
- mark_text_not_contains?: string;
12131
12521
  /**
12132
12522
  * @description How filters.jurisdictions matches: protection (default — includes regional rights whose membership covers the requested territory, e.g. a EUTM for jurisdictions=[FR]) or direct (literal territory legs only).
12133
12523
  * @enum {string}
@@ -12258,6 +12648,7 @@ export interface operations {
12258
12648
  /** @description Filter by exact LEI (uppercased server-side). */
12259
12649
  owner_lei?: string;
12260
12650
  trademark_ids?: string[];
12651
+ mark_text?: components["schemas"]["MarkTextFilters"];
12261
12652
  };
12262
12653
  options?: {
12263
12654
  aggregations?: ("status_stage" | "office_code" | "jurisdiction_code" | "nice_classes" | "filing_year" | "mark_feature_type" | "mark_legal_category" | "filing_route" | "right_kind" | "scope_kind" | "firm_id" | "attorney_id" | "owner_country" | "owner_id" | "entity_id" | "owner_count" | "entity_count")[];
@@ -12268,9 +12659,11 @@ export interface operations {
12268
12659
  aggregation_mode?: "filtered" | "exclude_own_filter";
12269
12660
  aggregations_only?: boolean;
12270
12661
  include_total?: boolean;
12271
- /** @description If true, includes highlight snippets under the default similar match mode. In deterministic match modes, highlights is inert. */
12662
+ /** @description If true, includes highlight snippets for a ranked q. */
12272
12663
  highlights?: boolean;
12273
12664
  include_timing?: boolean;
12665
+ /** @description Return 200 with search_meta.complete=false when the engine times out or a shard fails, instead of 503. Default false. */
12666
+ allow_partial?: boolean;
12274
12667
  };
12275
12668
  /** @default 20 */
12276
12669
  limit?: number;
@@ -12282,12 +12675,12 @@ export interface operations {
12282
12675
  */
12283
12676
  international_registrations?: "grouped" | "expanded";
12284
12677
  /**
12285
- * @description Optional row projections. `full_goods_services` returns full classifications[].goods_services_text; default rows truncate long G&S text to about 280 characters.
12678
+ * @description Optional row projections. `full_goods_services` returns full classifications[].goods_services_text; default rows truncate long G&S text to about 280 characters. `match_details` adds match.details (the matched lanes and the ranking factors applied) to each hit.
12286
12679
  * @example [
12287
12680
  * "full_goods_services"
12288
12681
  * ]
12289
12682
  */
12290
- include?: "full_goods_services"[];
12683
+ include?: ("full_goods_services" | "match_details")[];
12291
12684
  /**
12292
12685
  * @description Sparse top-level field projection. id and object are always retained.
12293
12686
  * @example [
@@ -13308,7 +13701,24 @@ export interface operations {
13308
13701
  parameters: {
13309
13702
  query?: {
13310
13703
  q?: string;
13311
- strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[] | null;
13704
+ similarity?: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
13705
+ mark_text_is?: string[] | null;
13706
+ mark_text_word?: string[] | null;
13707
+ mark_text_starts_with?: string[] | null;
13708
+ mark_text_ends_with?: string[] | null;
13709
+ mark_text_contains?: string[] | null;
13710
+ mark_text_pattern?: string[] | null;
13711
+ mark_text_not_is?: string[] | null;
13712
+ mark_text_not_word?: string[] | null;
13713
+ mark_text_not_starts_with?: string[] | null;
13714
+ mark_text_not_ends_with?: string[] | null;
13715
+ mark_text_not_contains?: string[] | null;
13716
+ mark_text_not_pattern?: string[] | null;
13717
+ entity_id_not?: string[] | null;
13718
+ entity_group_not?: string[] | null;
13719
+ owner_id_not?: string[] | null;
13720
+ trademark_ids_not?: string[] | null;
13721
+ allow_partial?: boolean | null;
13312
13722
  sort?: string;
13313
13723
  status_primary?: ("pending" | "active" | "inactive" | "unknown" | "mixed")[] | null;
13314
13724
  status_stage?: ("filed" | "examining" | "pending_publication" | "published" | "opposition_period" | "pending_opposition" | "pending_cancellation" | "pending_issuance" | "registered" | "allowed" | "abandoned" | "withdrawn" | "surrendered" | "refused" | "cancelled" | "invalidated" | "expired" | "unknown" | "mixed")[] | null;
@@ -13392,10 +13802,8 @@ export interface operations {
13392
13802
  is_retracted?: boolean | null;
13393
13803
  is_series_mark?: boolean | null;
13394
13804
  international_registrations?: "grouped" | "expanded";
13395
- include?: "full_goods_services"[] | null;
13805
+ include?: ("full_goods_services" | "match_details")[] | null;
13396
13806
  fields?: string[] | null;
13397
- match?: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
13398
- mark_text_not_contains?: string;
13399
13807
  owner_publicly_traded?: boolean | null;
13400
13808
  owner_has_lei?: boolean | null;
13401
13809
  owner_ticker?: string;
@@ -13683,7 +14091,24 @@ export interface operations {
13683
14091
  parameters: {
13684
14092
  query?: {
13685
14093
  q?: string;
13686
- strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[] | null;
14094
+ similarity?: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
14095
+ mark_text_is?: string[] | null;
14096
+ mark_text_word?: string[] | null;
14097
+ mark_text_starts_with?: string[] | null;
14098
+ mark_text_ends_with?: string[] | null;
14099
+ mark_text_contains?: string[] | null;
14100
+ mark_text_pattern?: string[] | null;
14101
+ mark_text_not_is?: string[] | null;
14102
+ mark_text_not_word?: string[] | null;
14103
+ mark_text_not_starts_with?: string[] | null;
14104
+ mark_text_not_ends_with?: string[] | null;
14105
+ mark_text_not_contains?: string[] | null;
14106
+ mark_text_not_pattern?: string[] | null;
14107
+ entity_id_not?: string[] | null;
14108
+ entity_group_not?: string[] | null;
14109
+ owner_id_not?: string[] | null;
14110
+ trademark_ids_not?: string[] | null;
14111
+ allow_partial?: boolean | null;
13687
14112
  sort?: string;
13688
14113
  status_primary?: ("pending" | "active" | "inactive" | "unknown" | "mixed")[] | null;
13689
14114
  status_stage?: ("filed" | "examining" | "pending_publication" | "published" | "opposition_period" | "pending_opposition" | "pending_cancellation" | "pending_issuance" | "registered" | "allowed" | "abandoned" | "withdrawn" | "surrendered" | "refused" | "cancelled" | "invalidated" | "expired" | "unknown" | "mixed")[] | null;
@@ -13767,10 +14192,8 @@ export interface operations {
13767
14192
  is_retracted?: boolean | null;
13768
14193
  is_series_mark?: boolean | null;
13769
14194
  international_registrations?: "grouped" | "expanded";
13770
- include?: "full_goods_services"[] | null;
14195
+ include?: ("full_goods_services" | "match_details")[] | null;
13771
14196
  fields?: string[] | null;
13772
- match?: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
13773
- mark_text_not_contains?: string;
13774
14197
  owner_publicly_traded?: boolean | null;
13775
14198
  owner_has_lei?: boolean | null;
13776
14199
  owner_ticker?: string;
@@ -14130,7 +14553,24 @@ export interface operations {
14130
14553
  parameters: {
14131
14554
  query?: {
14132
14555
  q?: string;
14133
- strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[] | null;
14556
+ similarity?: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
14557
+ mark_text_is?: string[] | null;
14558
+ mark_text_word?: string[] | null;
14559
+ mark_text_starts_with?: string[] | null;
14560
+ mark_text_ends_with?: string[] | null;
14561
+ mark_text_contains?: string[] | null;
14562
+ mark_text_pattern?: string[] | null;
14563
+ mark_text_not_is?: string[] | null;
14564
+ mark_text_not_word?: string[] | null;
14565
+ mark_text_not_starts_with?: string[] | null;
14566
+ mark_text_not_ends_with?: string[] | null;
14567
+ mark_text_not_contains?: string[] | null;
14568
+ mark_text_not_pattern?: string[] | null;
14569
+ entity_id_not?: string[] | null;
14570
+ entity_group_not?: string[] | null;
14571
+ owner_id_not?: string[] | null;
14572
+ trademark_ids_not?: string[] | null;
14573
+ allow_partial?: boolean | null;
14134
14574
  sort?: string;
14135
14575
  status_primary?: ("pending" | "active" | "inactive" | "unknown" | "mixed")[] | null;
14136
14576
  status_stage?: ("filed" | "examining" | "pending_publication" | "published" | "opposition_period" | "pending_opposition" | "pending_cancellation" | "pending_issuance" | "registered" | "allowed" | "abandoned" | "withdrawn" | "surrendered" | "refused" | "cancelled" | "invalidated" | "expired" | "unknown" | "mixed")[] | null;
@@ -14214,10 +14654,8 @@ export interface operations {
14214
14654
  is_retracted?: boolean | null;
14215
14655
  is_series_mark?: boolean | null;
14216
14656
  international_registrations?: "grouped" | "expanded";
14217
- include?: "full_goods_services"[] | null;
14657
+ include?: ("full_goods_services" | "match_details")[] | null;
14218
14658
  fields?: string[] | null;
14219
- match?: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
14220
- mark_text_not_contains?: string;
14221
14659
  owner_publicly_traded?: boolean | null;
14222
14660
  owner_has_lei?: boolean | null;
14223
14661
  owner_ticker?: string;
@@ -14438,7 +14876,24 @@ export interface operations {
14438
14876
  parameters: {
14439
14877
  query?: {
14440
14878
  q?: string;
14441
- strategies?: ("exact" | "phonetic" | "fuzzy" | "prefix")[] | null;
14879
+ similarity?: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
14880
+ mark_text_is?: string[] | null;
14881
+ mark_text_word?: string[] | null;
14882
+ mark_text_starts_with?: string[] | null;
14883
+ mark_text_ends_with?: string[] | null;
14884
+ mark_text_contains?: string[] | null;
14885
+ mark_text_pattern?: string[] | null;
14886
+ mark_text_not_is?: string[] | null;
14887
+ mark_text_not_word?: string[] | null;
14888
+ mark_text_not_starts_with?: string[] | null;
14889
+ mark_text_not_ends_with?: string[] | null;
14890
+ mark_text_not_contains?: string[] | null;
14891
+ mark_text_not_pattern?: string[] | null;
14892
+ entity_id_not?: string[] | null;
14893
+ entity_group_not?: string[] | null;
14894
+ owner_id_not?: string[] | null;
14895
+ trademark_ids_not?: string[] | null;
14896
+ allow_partial?: boolean | null;
14442
14897
  sort?: string;
14443
14898
  status_primary?: ("pending" | "active" | "inactive" | "unknown" | "mixed")[] | null;
14444
14899
  status_stage?: ("filed" | "examining" | "pending_publication" | "published" | "opposition_period" | "pending_opposition" | "pending_cancellation" | "pending_issuance" | "registered" | "allowed" | "abandoned" | "withdrawn" | "surrendered" | "refused" | "cancelled" | "invalidated" | "expired" | "unknown" | "mixed")[] | null;
@@ -14522,10 +14977,8 @@ export interface operations {
14522
14977
  is_retracted?: boolean | null;
14523
14978
  is_series_mark?: boolean | null;
14524
14979
  international_registrations?: "grouped" | "expanded";
14525
- include?: "full_goods_services"[] | null;
14980
+ include?: ("full_goods_services" | "match_details")[] | null;
14526
14981
  fields?: string[] | null;
14527
- match?: "similar" | "exact" | "starts_with" | "ends_with" | "contains";
14528
- mark_text_not_contains?: string;
14529
14982
  owner_publicly_traded?: boolean | null;
14530
14983
  owner_has_lei?: boolean | null;
14531
14984
  owner_ticker?: string;
@@ -14599,7 +15052,7 @@ export interface operations {
14599
15052
  "application/json": components["schemas"]["Error"];
14600
15053
  };
14601
15054
  };
14602
- /** @description Entity too large. `error.reason` discriminates: `member_owners_too_large` (the entity resolved to more member owners than the cap; carries `member_count`/`member_count_limit`) or `family_graph_too_large` (the GLEIF family-graph walk exceeded its bound, fired by `?include_family=true`; carries `related_entity_limit`/`depth_limit`). */
15055
+ /** @description Family graph too large: `?include_family=true` walked a family-tree larger than the bound (`error.reason` `family_graph_too_large`; carries `related_entity_limit`/`depth_limit`). There is no member-owner cap: an entity of any size lists without `include_family`. */
14603
15056
  422: {
14604
15057
  headers: {
14605
15058
  [name: string]: unknown;
@@ -16637,11 +17090,16 @@ export interface operations {
16637
17090
  /** @description Present and `true` when the change diff was bounded (entries dropped past the max count, or an over-long from/to value replaced with a sentinel, or a byte-budget cap hit). Absent when the diff is complete. */
16638
17091
  diff_truncated?: boolean;
16639
17092
  };
16640
- /** @description Match metadata (why/how the mark matched the watch). Null for pure-filter / pre-v2 alerts that carry no match scoring. */
17093
+ /** @description Match metadata (why/how the mark matched the watch). Null for pure-filter / pre-v2 alerts that carry no match scoring. `score` is the engine score for the watch query, not the 0-100 search `relevance_score`. */
16641
17094
  match: {
16642
17095
  reason: string | null;
16643
17096
  score: number | null;
16644
17097
  score_basis: string | null;
17098
+ /**
17099
+ * @description Similarity tier of the matched mark, the same label a search hit carries as `match.tier` (identical, near_identical, similar, related). A retrieval category, not a measured edit distance. Null for filter-only watches, marks found only by their number, and alerts emitted before the field existed.
17100
+ * @enum {string|null}
17101
+ */
17102
+ tier: "identical" | "near_identical" | "similar" | "related" | null;
16645
17103
  } | null;
16646
17104
  trademark: components["schemas"]["AlertTrademark"];
16647
17105
  deadline: {
@@ -16741,15 +17199,16 @@ export interface operations {
16741
17199
  /** @enum {string} */
16742
17200
  watch_type: "mark" | "portfolio" | "owner" | "class" | "similarity";
16743
17201
  /**
16744
- * @description Watch query JSON (max 50,000 bytes serialized, depth 5 — larger bodies are 400 `validation_error`). Similarity watches use `version: "v2"`, `q` (string), optional public-search `strategies` (`exact`, `phonetic`, `fuzzy`, `prefix`), optional `min_match_tier` (`exact`, `normalized`, `fuzzy`, `phonetic`), `filters`, and optional `trigger_events` (default: `trademark.created`, `trademark.updated`, `trademark.status_changed`; `trademark.retracted` / `trademark.corrected` are opt-in). `filters.offices` takes WIPO ST.3 codes (`US`, `EM`, …; legacy `uspto`/`euipo`/`EU` accepted); `filters.jurisdictions` without `filters.offices` is auto-translated to the live offices for those jurisdictions and is rejected with 400 `no_live_office` when none resolves. `score_threshold` is NOT accepted on write (400) — match scores are informational via `match_score` on alerts — and is never echoed on read.
17202
+ * @description Watch query JSON (max 50,000 bytes serialized, depth 5 — larger bodies are 400 `validation_error`). `version` is required: `v1`, `v2` and `v3` are accepted, and a new or changed query is stored as a v3 similarity watch whatever `version` it sends (`version` is set to `v3`) unless it uses the deprecated keys below: `q` (string), optional `similarity` (the search channels: `identical`, `fuzzy`, `embedded`, `phonetic`, `lookalike`; default `identical,fuzzy,embedded,lookalike`, `identical` always on), optional `min_tier` (the weakest similarity tier that alerts: `identical`, `near_identical`, `similar`, `related`; default `related`, everything through), `filters`, and optional `trigger_events` (default: `trademark.created`, `trademark.updated`, `trademark.status_changed`; `trademark.retracted` / `trademark.corrected` are opt-in). The search text filters (`mark_text_*`) and exclusions (`exclude`, `*_not`) are not accepted on watches. Deprecated until 2026-12-28: `strategies` (replaced by `similarity`) and `min_match_tier` (replaced by `min_tier`). A write that uses them is kept as a legacy watch with its original matching until it is re-saved without them, and each is reported in the response `deprecations`; sending old and new keys together is 400 `conflicting_params`. Stored watches keep the matching they were saved with; a PATCH whose query equals the stored one changes nothing, one that differs only where a write normalises it (such as offices added from jurisdictions, or code and ID casing) is saved in that form with the same matching, and a PATCH that changes it re-saves it under these rules. `filters.offices` takes WIPO ST.3 codes (`US`, `EM`, …; legacy `uspto`/`euipo`/`EU` accepted); `filters.jurisdictions` without `filters.offices` is auto-translated to the live offices for those jurisdictions and is rejected with 400 `no_live_office` when none resolves. `score_threshold` is NOT accepted on write (400) — match scores are informational via `match.score` on alerts — and is never echoed on read.
16745
17203
  * @example {
16746
- * "version": "v2",
17204
+ * "version": "v3",
16747
17205
  * "q": "acme",
16748
- * "strategies": [
16749
- * "exact",
16750
- * "fuzzy"
17206
+ * "similarity": [
17207
+ * "identical",
17208
+ * "fuzzy",
17209
+ * "phonetic"
16751
17210
  * ],
16752
- * "min_match_tier": "fuzzy",
17211
+ * "min_tier": "similar",
16753
17212
  * "filters": {
16754
17213
  * "offices": [
16755
17214
  * "US"
@@ -17200,6 +17659,15 @@ export interface operations {
17200
17659
  object: "watch_preview";
17201
17660
  estimated_match_count: number;
17202
17661
  trial_window_days: number;
17662
+ /** @description The similarity channels the text query ran (identical always included). Null when the query has no q, and for a query that uses the deprecated keys (previewed as the legacy watch a create would keep). */
17663
+ similarity_applied: ("identical" | "fuzzy" | "embedded" | "phonetic" | "lookalike")[] | null;
17664
+ /**
17665
+ * @description The weakest similarity tier that alerts (`related` admits everything). Null for a query that uses the deprecated keys, which keeps its `min_match_tier`.
17666
+ * @enum {string|null}
17667
+ */
17668
+ min_tier: "identical" | "near_identical" | "similar" | "related" | null;
17669
+ /** @description Present when the previewed query used a deprecated key (`strategies`, `min_match_tier`); the preview ran it as the legacy watch a create would keep. */
17670
+ deprecations?: components["schemas"]["WatchDeprecation"][];
17203
17671
  /**
17204
17672
  * @description Present only when estimated_match_count is not an exact count. `query_upper_bound`: the time budget ran out after the search but before the change check; the count is the marks that matched the query in the window plus the marks changed in the last 6 hours that the search index may not reflect yet, so it can only be too high. `lower_bound`: the search timed out or lost a shard, more than 10,000 marks matched the query in the window, the change check timed out, or the re-check of marks changed in the last 6 hours (which the search index may not reflect yet) could not finish; the count is the verified matches (0 if none), so it can only be too low. `candidacy_upper_bound`: a watch without a text query could not be fully evaluated (search unreachable, a very large change set, or the budget ran out); the count is the number of changed marks in the window.
17205
17673
  * @enum {string}
@@ -17293,15 +17761,16 @@ export interface operations {
17293
17761
  /** @enum {string} */
17294
17762
  watch_type: "mark" | "portfolio" | "owner" | "class" | "similarity";
17295
17763
  /**
17296
- * @description Watch query JSON (max 50,000 bytes serialized, depth 5 — larger bodies are 400 `validation_error`). Similarity watches use `version: "v2"`, `q` (string), optional public-search `strategies` (`exact`, `phonetic`, `fuzzy`, `prefix`), optional `min_match_tier` (`exact`, `normalized`, `fuzzy`, `phonetic`), `filters`, and optional `trigger_events` (default: `trademark.created`, `trademark.updated`, `trademark.status_changed`; `trademark.retracted` / `trademark.corrected` are opt-in). `filters.offices` takes WIPO ST.3 codes (`US`, `EM`, …; legacy `uspto`/`euipo`/`EU` accepted); `filters.jurisdictions` without `filters.offices` is auto-translated to the live offices for those jurisdictions and is rejected with 400 `no_live_office` when none resolves. `score_threshold` is NOT accepted on write (400) — match scores are informational via `match_score` on alerts — and is never echoed on read.
17764
+ * @description Watch query JSON (max 50,000 bytes serialized, depth 5 — larger bodies are 400 `validation_error`). `version` is required: `v1`, `v2` and `v3` are accepted, and a new or changed query is stored as a v3 similarity watch whatever `version` it sends (`version` is set to `v3`) unless it uses the deprecated keys below: `q` (string), optional `similarity` (the search channels: `identical`, `fuzzy`, `embedded`, `phonetic`, `lookalike`; default `identical,fuzzy,embedded,lookalike`, `identical` always on), optional `min_tier` (the weakest similarity tier that alerts: `identical`, `near_identical`, `similar`, `related`; default `related`, everything through), `filters`, and optional `trigger_events` (default: `trademark.created`, `trademark.updated`, `trademark.status_changed`; `trademark.retracted` / `trademark.corrected` are opt-in). The search text filters (`mark_text_*`) and exclusions (`exclude`, `*_not`) are not accepted on watches. Deprecated until 2026-12-28: `strategies` (replaced by `similarity`) and `min_match_tier` (replaced by `min_tier`). A write that uses them is kept as a legacy watch with its original matching until it is re-saved without them, and each is reported in the response `deprecations`; sending old and new keys together is 400 `conflicting_params`. Stored watches keep the matching they were saved with; a PATCH whose query equals the stored one changes nothing, one that differs only where a write normalises it (such as offices added from jurisdictions, or code and ID casing) is saved in that form with the same matching, and a PATCH that changes it re-saves it under these rules. `filters.offices` takes WIPO ST.3 codes (`US`, `EM`, …; legacy `uspto`/`euipo`/`EU` accepted); `filters.jurisdictions` without `filters.offices` is auto-translated to the live offices for those jurisdictions and is rejected with 400 `no_live_office` when none resolves. `score_threshold` is NOT accepted on write (400) — match scores are informational via `match.score` on alerts — and is never echoed on read.
17297
17765
  * @example {
17298
- * "version": "v2",
17766
+ * "version": "v3",
17299
17767
  * "q": "acme",
17300
- * "strategies": [
17301
- * "exact",
17302
- * "fuzzy"
17768
+ * "similarity": [
17769
+ * "identical",
17770
+ * "fuzzy",
17771
+ * "phonetic"
17303
17772
  * ],
17304
- * "min_match_tier": "fuzzy",
17773
+ * "min_tier": "similar",
17305
17774
  * "filters": {
17306
17775
  * "offices": [
17307
17776
  * "US"
@@ -17405,6 +17874,8 @@ export interface operations {
17405
17874
  };
17406
17875
  created_at: string;
17407
17876
  updated_at: string;
17877
+ /** @description Present on create, update and bulk responses when the written query used a deprecated key: `strategies` (replaced by `similarity`) or `min_match_tier` (replaced by `min_tier`). The watch is kept as a legacy watch with its original matching until it is re-saved without them. Each entry names the key, its replacement and the date the old key stops being accepted. */
17878
+ deprecations?: components["schemas"]["WatchDeprecation"][];
17408
17879
  }[];
17409
17880
  request_id: string;
17410
17881
  };