@signa-so/sdk 0.8.0 → 0.14.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.
- package/README.md +2 -7
- package/dist/client.d.ts +11 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -10
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +54 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +80 -3
- package/dist/errors.js.map +1 -1
- package/dist/generated/api-types.d.ts +13861 -6608
- package/dist/generated/api-types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +23 -2
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +45 -4
- package/dist/pagination.js.map +1 -1
- package/dist/resources/citations.d.ts +33 -0
- package/dist/resources/citations.d.ts.map +1 -0
- package/dist/resources/citations.js +38 -0
- package/dist/resources/citations.js.map +1 -0
- package/dist/resources/credits.d.ts +7 -0
- package/dist/resources/credits.d.ts.map +1 -0
- package/dist/resources/credits.js +8 -0
- package/dist/resources/credits.js.map +1 -0
- package/dist/resources/deadlines.d.ts +38 -4
- package/dist/resources/deadlines.d.ts.map +1 -1
- package/dist/resources/deadlines.js +39 -2
- package/dist/resources/deadlines.js.map +1 -1
- package/dist/resources/entities.d.ts +6 -7
- package/dist/resources/entities.d.ts.map +1 -1
- package/dist/resources/entities.js +6 -7
- package/dist/resources/entities.js.map +1 -1
- package/dist/resources/events.d.ts.map +1 -1
- package/dist/resources/events.js +4 -1
- package/dist/resources/events.js.map +1 -1
- package/dist/resources/fees.d.ts +10 -0
- package/dist/resources/fees.d.ts.map +1 -0
- package/dist/resources/fees.js +14 -0
- package/dist/resources/fees.js.map +1 -0
- package/dist/resources/goods-services.d.ts +36 -2
- package/dist/resources/goods-services.d.ts.map +1 -1
- package/dist/resources/goods-services.js +37 -1
- package/dist/resources/goods-services.js.map +1 -1
- package/dist/resources/organization.d.ts +8 -1
- package/dist/resources/organization.d.ts.map +1 -1
- package/dist/resources/organization.js +9 -0
- package/dist/resources/organization.js.map +1 -1
- package/dist/resources/portfolios.d.ts +46 -20
- package/dist/resources/portfolios.d.ts.map +1 -1
- package/dist/resources/portfolios.js +39 -5
- package/dist/resources/portfolios.js.map +1 -1
- package/dist/resources/reconcile.d.ts +21 -1
- package/dist/resources/reconcile.d.ts.map +1 -1
- package/dist/resources/reconcile.js +21 -1
- package/dist/resources/reconcile.js.map +1 -1
- package/dist/resources/references.d.ts +63 -8
- package/dist/resources/references.d.ts.map +1 -1
- package/dist/resources/references.js +77 -10
- package/dist/resources/references.js.map +1 -1
- package/dist/resources/trademarks.d.ts +42 -4
- package/dist/resources/trademarks.d.ts.map +1 -1
- package/dist/resources/trademarks.js +284 -3
- package/dist/resources/trademarks.js.map +1 -1
- package/dist/resources/watches.d.ts +3 -7
- package/dist/resources/watches.d.ts.map +1 -1
- package/dist/resources/watches.js +2 -16
- package/dist/resources/watches.js.map +1 -1
- package/dist/types.d.ts +1202 -573
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +3 -3
- package/dist/resources/saved-searches.d.ts +0 -22
- package/dist/resources/saved-searches.d.ts.map +0 -1
- package/dist/resources/saved-searches.js +0 -39
- package/dist/resources/saved-searches.js.map +0 -1
- package/dist/resources/suggest.d.ts +0 -16
- package/dist/resources/suggest.d.ts.map +0 -1
- package/dist/resources/suggest.js +0 -18
- package/dist/resources/suggest.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,207 +1,54 @@
|
|
|
1
|
-
import type { components } from './generated/api-types.js';
|
|
1
|
+
import type { components, operations } from './generated/api-types.js';
|
|
2
2
|
/** Full trademark with all optional includes (retrieve response). */
|
|
3
3
|
export type Trademark = components['schemas']['TrademarkDetailResponse'];
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The one trademark row (0.14.0): search hits, `list()` rows, party and
|
|
6
|
+
* portfolio trademark lists and screening hits all return it. Top-level dates
|
|
7
|
+
* are the office's values (null when it published none); everything the
|
|
8
|
+
* rulebook computes is under `derived`. IR family rows (a grouped Madrid
|
|
9
|
+
* family) also carry `coverage`, `source_records` and `owners_mixed`.
|
|
10
|
+
*/
|
|
5
11
|
export type TrademarkSummary = components['schemas']['TrademarkSummaryV1'];
|
|
12
|
+
/** Which unit a trademark row is: a `mark` (standalone filing or IR family) or one `record` (a leg). */
|
|
13
|
+
export type TrademarkGrain = TrademarkSummary['grain'];
|
|
6
14
|
/** One inline `relationships[]` edge on the trademark detail. */
|
|
7
15
|
export type TrademarkRelationship = components['schemas']['TrademarkRelationship'];
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
cancelled_count: number | null;
|
|
35
|
-
pending_count: number | null;
|
|
36
|
-
abandoned_count: number | null;
|
|
37
|
-
/** @deprecated Use `grant_rate` — same value. `registration_rate` is a misnomer (share of concluded prosecutions ever granted, not share currently registered). */
|
|
38
|
-
registration_rate: number | null;
|
|
39
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
40
|
-
grant_rate: number | null;
|
|
41
|
-
abandonment_rate: number | null;
|
|
42
|
-
jurisdiction_count: number | null;
|
|
43
|
-
earliest_filing: string | null;
|
|
44
|
-
latest_filing: string | null;
|
|
45
|
-
computed_at: string | null;
|
|
46
|
-
}
|
|
47
|
-
/** Full owner detail (retrieve response). */
|
|
48
|
-
export type Owner = components['schemas']['OwnerResponse'] & {
|
|
49
|
-
trademark_count?: number | null;
|
|
50
|
-
active_count?: number | null;
|
|
51
|
-
/** @deprecated Use `grant_rate` — same value; `registration_rate` is a misnomer. */
|
|
52
|
-
registration_rate?: number | null;
|
|
53
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
54
|
-
grant_rate?: number | null;
|
|
55
|
-
latest_filing?: string | null;
|
|
56
|
-
/** Resolved-entity id this owner belongs to (the derived `ent_<owner-uuid>`
|
|
57
|
-
* singleton when unlinked). Always present. */
|
|
58
|
-
entity_id?: string;
|
|
59
|
-
entity_id_type?: 'resolved' | 'derived';
|
|
60
|
-
/** Whether the (possibly entity-inherited) company set includes an active SEC
|
|
61
|
-
* company with a ticker. */
|
|
62
|
-
publicly_traded?: boolean;
|
|
63
|
-
/** First SEC ticker across the (possibly inherited) company set. */
|
|
64
|
-
ticker?: string | null;
|
|
65
|
-
/** First GLEIF LEI across the (possibly inherited) company set. */
|
|
66
|
-
lei?: string | null;
|
|
67
|
-
/** Whether any GLEIF LEI is present across the (possibly inherited) set. */
|
|
68
|
-
has_lei?: boolean;
|
|
69
|
-
/** `entity` when company facts are inherited across entity members; `direct`
|
|
70
|
-
* for an unlinked singleton. */
|
|
71
|
-
companies_source?: 'entity' | 'direct';
|
|
72
|
-
/** Public companies — when linked, the union of all members' company links
|
|
73
|
-
* (served through the entity). Omitted entirely when empty. */
|
|
74
|
-
companies?: EntityCompany[];
|
|
75
|
-
related_entities?: {
|
|
76
|
-
parent: {
|
|
77
|
-
id: string;
|
|
78
|
-
object: 'owner';
|
|
79
|
-
name: string;
|
|
80
|
-
canonical_name: string;
|
|
81
|
-
country_code: string | null;
|
|
82
|
-
entity_type: string | null;
|
|
83
|
-
} | null;
|
|
84
|
-
children: Array<{
|
|
85
|
-
id: string;
|
|
86
|
-
object: 'owner';
|
|
87
|
-
name: string;
|
|
88
|
-
canonical_name: string;
|
|
89
|
-
country_code: string | null;
|
|
90
|
-
entity_type: string | null;
|
|
91
|
-
}>;
|
|
92
|
-
};
|
|
93
|
-
stats?: OwnerStats;
|
|
94
|
-
};
|
|
16
|
+
/**
|
|
17
|
+
* A prosecution-history row (`GET /v1/trademarks/{id}/events`): object
|
|
18
|
+
* `trademark_event`, `hst_` id, the office's code and label in `raw`. The same
|
|
19
|
+
* object is `trademark_event` on an `office_action.issued` v2 payload.
|
|
20
|
+
*/
|
|
21
|
+
export type TrademarkEvent = components['schemas']['TrademarkEvent'];
|
|
22
|
+
/** Alias of {@link TrademarkEvent}. */
|
|
23
|
+
export type Event = TrademarkEvent;
|
|
24
|
+
/** Stats object on attorney detail (`stats`), null until first computed. */
|
|
25
|
+
export type AttorneyStats = NonNullable<components['schemas']['Attorney']['stats']>;
|
|
26
|
+
/** Stats object on owner detail (`stats`), null until first computed. */
|
|
27
|
+
export type OwnerStats = NonNullable<components['schemas']['Owner']['stats']>;
|
|
28
|
+
/**
|
|
29
|
+
* The one address shape (0.14.0) on owners, attorneys, trademark parties and
|
|
30
|
+
* assignment parties: `lines` verbatim from the office, components only when
|
|
31
|
+
* the office supplied them, `formatted` the office's own single-string
|
|
32
|
+
* rendering (null when it sent components only). Fields holding an address
|
|
33
|
+
* are `Address | null`.
|
|
34
|
+
*/
|
|
35
|
+
export type Address = NonNullable<components['schemas']['Address']>;
|
|
36
|
+
/**
|
|
37
|
+
* Full owner detail (retrieve response). `entity_id` is the resolved entity
|
|
38
|
+
* the owner is linked into, or `null` when it is not linked (0.14.0: no
|
|
39
|
+
* derived `ent_<owner-uuid>` id and no `entity_id_type`).
|
|
40
|
+
*/
|
|
41
|
+
export type Owner = components['schemas']['OwnerResponse'];
|
|
95
42
|
/** Composed live portfolio analytics report for an owner, attorney, firm, or entity. */
|
|
96
|
-
export
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
id: string;
|
|
100
|
-
object: 'owner' | 'attorney' | 'firm' | 'entity';
|
|
101
|
-
name: string;
|
|
102
|
-
};
|
|
103
|
-
portfolio: {
|
|
104
|
-
mark_count: number;
|
|
105
|
-
active_count: number;
|
|
106
|
-
dead_count: number;
|
|
107
|
-
status_distribution: Record<string, number>;
|
|
108
|
-
class_distribution: Record<string, number>;
|
|
109
|
-
jurisdiction_spread: Record<string, number>;
|
|
110
|
-
filing_trend: Record<string, number>;
|
|
111
|
-
};
|
|
112
|
-
litigation: {
|
|
113
|
-
subject: {
|
|
114
|
-
owner_id: string | null;
|
|
115
|
-
entity_id: string | null;
|
|
116
|
-
};
|
|
117
|
-
proceedings_total: number;
|
|
118
|
-
as_challenger: {
|
|
119
|
-
total: number;
|
|
120
|
-
by_type: Record<string, number>;
|
|
121
|
-
outcomes: Record<string, number>;
|
|
122
|
-
decided: number;
|
|
123
|
-
win_rate: number | null;
|
|
124
|
-
avg_duration_days: number | null;
|
|
125
|
-
};
|
|
126
|
-
as_defendant: {
|
|
127
|
-
total: number;
|
|
128
|
-
by_type: Record<string, number>;
|
|
129
|
-
outcomes: Record<string, number>;
|
|
130
|
-
decided: number;
|
|
131
|
-
win_rate: number | null;
|
|
132
|
-
avg_duration_days: number | null;
|
|
133
|
-
};
|
|
134
|
-
} | null;
|
|
135
|
-
transactions: {
|
|
136
|
-
transaction_count: number;
|
|
137
|
-
by_type: Record<string, number>;
|
|
138
|
-
unreleased_security_interests: number;
|
|
139
|
-
marks_with_liens: number;
|
|
140
|
-
acquired_count: number;
|
|
141
|
-
divested_count: number;
|
|
142
|
-
first_transaction_date: string | null;
|
|
143
|
-
last_transaction_date: string | null;
|
|
144
|
-
} | null;
|
|
145
|
-
generated_at: string;
|
|
146
|
-
/** Per-request id echoed at the top level of the response body (`AnalyticsReportResponse` in the OpenAPI spec). */
|
|
147
|
-
request_id: string;
|
|
148
|
-
}
|
|
149
|
-
/** Compact owner in list responses. */
|
|
150
|
-
export type OwnerSummary = components['schemas']['OwnerSummary'] & {
|
|
151
|
-
trademark_count?: number | null;
|
|
152
|
-
active_count?: number | null;
|
|
153
|
-
/** @deprecated Use `grant_rate` — same value; `registration_rate` is a misnomer. */
|
|
154
|
-
registration_rate?: number | null;
|
|
155
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
156
|
-
grant_rate?: number | null;
|
|
157
|
-
latest_filing?: string | null;
|
|
158
|
-
entity_id?: string;
|
|
159
|
-
entity_id_type?: 'resolved' | 'derived';
|
|
160
|
-
};
|
|
43
|
+
export type AnalyticsReport = components['schemas']['AnalyticsReportResponse'];
|
|
44
|
+
/** Compact owner in list responses. `entity_id` is the linked entity or `null`. */
|
|
45
|
+
export type OwnerSummary = components['schemas']['OwnerSummary'];
|
|
161
46
|
/** Full attorney detail (retrieve response). */
|
|
162
|
-
export type Attorney = components['schemas']['AttorneyResponse']
|
|
163
|
-
firm_id?: string | null;
|
|
164
|
-
email?: string | null;
|
|
165
|
-
phone?: string | null;
|
|
166
|
-
address?: unknown | null;
|
|
167
|
-
trademark_count?: number | null;
|
|
168
|
-
active_count?: number | null;
|
|
169
|
-
/** @deprecated Use `grant_rate` — same value; `registration_rate` is a misnomer. */
|
|
170
|
-
registration_rate?: number | null;
|
|
171
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
172
|
-
grant_rate?: number | null;
|
|
173
|
-
latest_filing?: string | null;
|
|
174
|
-
recent_trademarks?: Array<Record<string, unknown>>;
|
|
175
|
-
recent_trademarks_has_more?: boolean;
|
|
176
|
-
stats?: AttorneyStats;
|
|
177
|
-
};
|
|
47
|
+
export type Attorney = components['schemas']['AttorneyResponse'];
|
|
178
48
|
/** Compact attorney in list responses. */
|
|
179
|
-
export type AttorneySummary = components['schemas']['AttorneySummary']
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
active_count?: number | null;
|
|
183
|
-
/** @deprecated Use `grant_rate` — same value; `registration_rate` is a misnomer. */
|
|
184
|
-
registration_rate?: number | null;
|
|
185
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
186
|
-
grant_rate?: number | null;
|
|
187
|
-
latest_filing?: string | null;
|
|
188
|
-
};
|
|
189
|
-
/** Full firm detail (retrieve response). */
|
|
190
|
-
export interface Firm {
|
|
191
|
-
id: string;
|
|
192
|
-
object: 'firm';
|
|
193
|
-
name: string;
|
|
194
|
-
canonical_name: string;
|
|
195
|
-
attorney_count: number;
|
|
196
|
-
trademark_count: number;
|
|
197
|
-
active_count: number;
|
|
198
|
-
/** @deprecated Use `grant_rate` — same value; `registration_rate` is a misnomer. */
|
|
199
|
-
registration_rate: number | null;
|
|
200
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
201
|
-
grant_rate: number | null;
|
|
202
|
-
latest_filing: string | null;
|
|
203
|
-
created_at: string;
|
|
204
|
-
updated_at: string;
|
|
49
|
+
export type AttorneySummary = components['schemas']['AttorneySummary'];
|
|
50
|
+
/** Full firm detail (retrieve response); `attorneys` only with `include: ['attorneys']`. */
|
|
51
|
+
export type Firm = components['schemas']['FirmResponse'] & {
|
|
205
52
|
attorneys?: Array<{
|
|
206
53
|
id: string;
|
|
207
54
|
object: 'attorney';
|
|
@@ -212,161 +59,60 @@ export interface Firm {
|
|
|
212
59
|
trademark_count: number | null;
|
|
213
60
|
}>;
|
|
214
61
|
attorneys_has_more?: boolean;
|
|
215
|
-
|
|
216
|
-
}
|
|
62
|
+
};
|
|
217
63
|
/** Compact firm in list responses. */
|
|
218
|
-
export
|
|
219
|
-
id: string;
|
|
220
|
-
object: 'firm';
|
|
221
|
-
name: string;
|
|
222
|
-
canonical_name: string;
|
|
223
|
-
attorney_count: number;
|
|
224
|
-
trademark_count: number;
|
|
225
|
-
active_count: number;
|
|
226
|
-
/** @deprecated Use `grant_rate` — same value; `registration_rate` is a misnomer. */
|
|
227
|
-
registration_rate: number | null;
|
|
228
|
-
/** Share of concluded prosecutions that were ever granted. Same value as the deprecated `registration_rate`. */
|
|
229
|
-
grant_rate: number | null;
|
|
230
|
-
latest_filing: string | null;
|
|
231
|
-
created_at: string;
|
|
232
|
-
}
|
|
64
|
+
export type FirmSummary = components['schemas']['FirmSummary'];
|
|
233
65
|
/** Public-company reference inherited onto an entity member / owner. */
|
|
234
|
-
export
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
legal_name?: string;
|
|
238
|
-
ticker: string | null;
|
|
239
|
-
exchange: string | null;
|
|
240
|
-
lei: string | null;
|
|
241
|
-
entity_status: string;
|
|
242
|
-
confidence?: number;
|
|
243
|
-
verified_at?: string | null;
|
|
244
|
-
verified_by?: string | null;
|
|
245
|
-
}
|
|
246
|
-
/** Public per-member link provenance on an entity-detail member. */
|
|
247
|
-
export interface EntityMemberLink {
|
|
248
|
-
/** How this member was linked into the entity (stable public vocabulary). */
|
|
249
|
-
method: 'international_registration' | 'shared_identifier' | 'public_company' | 'portfolio_overlap' | 'manual_review' | 'other';
|
|
250
|
-
/** Coarse confidence band; null when not scored. */
|
|
251
|
-
match_strength: 'high' | 'medium' | 'low' | null;
|
|
252
|
-
/** Whether the link was confirmed by adjudication/manual review. */
|
|
253
|
-
reviewed: boolean;
|
|
254
|
-
/** matched canonical IR numbers (international_registration), when present. */
|
|
255
|
-
matched_irs?: string[];
|
|
256
|
-
/** matched office-identifier values (shared_identifier), when present. */
|
|
257
|
-
matched_identifiers?: string[];
|
|
258
|
-
}
|
|
66
|
+
export type EntityCompany = NonNullable<components['schemas']['Owner']['companies']>[number];
|
|
67
|
+
/** Public per-member link provenance on an entity-detail member. Never null. */
|
|
68
|
+
export type EntityMemberLink = components['schemas']['EntityMemberLink'];
|
|
259
69
|
/** A member owner embedded in an entity-detail response. */
|
|
260
|
-
export
|
|
261
|
-
id: string;
|
|
262
|
-
object: 'owner';
|
|
263
|
-
name: string;
|
|
264
|
-
canonical_name: string;
|
|
265
|
-
country_code: string | null;
|
|
266
|
-
entity_type: string | null;
|
|
267
|
-
office_code: string | null;
|
|
268
|
-
/** null on a derived singleton's self-member (it was never linked). */
|
|
269
|
-
link: EntityMemberLink | null;
|
|
270
|
-
}
|
|
70
|
+
export type EntityMember = components['schemas']['EntityMember'];
|
|
271
71
|
/** Compact entity in list responses (`GET /v1/entities`). */
|
|
272
|
-
export
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
active_count: number;
|
|
284
|
-
member_count: number;
|
|
285
|
-
}
|
|
286
|
-
/** The nearest listed ancestor of a `subsidiary_of_listed` entity, when it
|
|
287
|
-
* resolves to a live entity in our system. */
|
|
288
|
-
export interface EntityListedAncestor {
|
|
289
|
-
id: string;
|
|
290
|
-
object: 'entity';
|
|
291
|
-
name: string;
|
|
292
|
-
/** The listed ancestor's own ticker. */
|
|
293
|
-
ticker: string | null;
|
|
294
|
-
}
|
|
295
|
-
/** Public-listing decoration (ENG-117). Present on {@link EntityDetail} ONLY when
|
|
296
|
-
* the entity is listed or a subsidiary of a listed company; OMITTED otherwise
|
|
297
|
-
* (absence ≠ confirmed-private). */
|
|
298
|
-
export interface EntityListing {
|
|
299
|
-
/** 'listed' = the entity is itself publicly listed; 'subsidiary_of_listed' =
|
|
300
|
-
* it inherits a ticker from a listed ancestor. */
|
|
301
|
-
status: 'listed' | 'subsidiary_of_listed';
|
|
302
|
-
/** The entity's own ticker (listed) or the inherited ancestor ticker (subsidiary). */
|
|
303
|
-
ticker: string | null;
|
|
304
|
-
/** Exchange / market code (display only). */
|
|
305
|
-
exch_code: string | null;
|
|
306
|
-
/** LEI of the listed company: the entity's own LEI when listed, else the ancestor's. */
|
|
307
|
-
lei: string | null;
|
|
308
|
-
/** Derived from status: 'listed' → 'direct', 'subsidiary_of_listed' → 'inherited'. */
|
|
309
|
-
source: 'direct' | 'inherited';
|
|
310
|
-
/** The nearest listed ancestor; null for a directly-listed entity or when unresolvable. */
|
|
311
|
-
listed_ancestor: EntityListedAncestor | null;
|
|
312
|
-
}
|
|
313
|
-
/** Full entity detail (`GET /v1/entities/{id}`). Resolved entities embed
|
|
314
|
-
* members[] with link evidence; derived singletons carry a member-of-one. */
|
|
315
|
-
export interface EntityDetail {
|
|
316
|
-
id: string;
|
|
317
|
-
object: 'entity';
|
|
318
|
-
name: string;
|
|
319
|
-
country_code: string | null;
|
|
320
|
-
entity_type: string | null;
|
|
321
|
-
entity_id_type: 'resolved' | 'derived';
|
|
322
|
-
/** True when a member company is an active SEC ticker OR the entity itself is
|
|
323
|
-
* listed / a subsidiary of a listed company (ENG-117 — matches the list filter).
|
|
324
|
-
* A derived singleton exposes the owner's own public-company facts (pco-linked),
|
|
325
|
-
* else false. */
|
|
326
|
-
publicly_traded: boolean;
|
|
327
|
-
/** Survivorship ticker (first of {@link tickers}); null when none. */
|
|
328
|
-
ticker: string | null;
|
|
329
|
-
/** Deduped uppercased tickers: member-company SEC tickers UNION the entity's own
|
|
330
|
-
* direct/inherited (subsidiary_of_listed) listing_ticker (ENG-117). Includes
|
|
331
|
-
* inherited subsidiary tickers; direct-vs-inherited provenance is in {@link listing}. */
|
|
332
|
-
tickers: string[];
|
|
333
|
-
lei: string | null;
|
|
334
|
-
/** Whether any member company carries a GLEIF LEI. */
|
|
335
|
-
has_lei: boolean;
|
|
336
|
-
trademark_count: number;
|
|
337
|
-
active_count: number;
|
|
338
|
-
member_count: number;
|
|
339
|
-
/** Resolved entities only — the GLEIF parent entity id, when present. */
|
|
340
|
-
parent_entity_id?: string | null;
|
|
341
|
-
/** Public-listing block (ENG-117). Present only when the entity is listed or a
|
|
342
|
-
* subsidiary of a listed company; omitted otherwise. */
|
|
343
|
-
listing?: EntityListing;
|
|
344
|
-
members: EntityMember[];
|
|
345
|
-
updated_at: string;
|
|
346
|
-
request_id: string;
|
|
347
|
-
}
|
|
72
|
+
export type EntitySummary = components['schemas']['EntitySummary'];
|
|
73
|
+
/** The nearest listed ancestor of a `subsidiary_of_listed` entity. */
|
|
74
|
+
export type EntityListedAncestor = components['schemas']['EntityListedAncestor'];
|
|
75
|
+
/**
|
|
76
|
+
* Public-listing decoration (ENG-117). Present on {@link EntityDetail} ONLY when
|
|
77
|
+
* the entity is listed or a subsidiary of a listed company; OMITTED otherwise
|
|
78
|
+
* (absence is not confirmed-private).
|
|
79
|
+
*/
|
|
80
|
+
export type EntityListing = components['schemas']['EntityListing'];
|
|
81
|
+
/** Full entity detail (`GET /v1/entities/{id}`), members[] with link evidence. */
|
|
82
|
+
export type EntityDetail = components['schemas']['EntityResponse'];
|
|
348
83
|
/** A node in an entity's GLEIF family (`GET /v1/entities/{id}/family`). */
|
|
349
|
-
export
|
|
350
|
-
id: string;
|
|
351
|
-
object: 'entity';
|
|
352
|
-
name: string;
|
|
353
|
-
country_code: string | null;
|
|
354
|
-
relationship: 'parent' | 'direct_subsidiary';
|
|
355
|
-
source: 'gleif';
|
|
356
|
-
}
|
|
84
|
+
export type EntityFamilyNode = components['schemas']['EntityFamilyNode'];
|
|
357
85
|
/** GLEIF-curated direct family (parent + direct children, 1 level). */
|
|
358
|
-
export
|
|
359
|
-
object: 'entity_family';
|
|
360
|
-
parent: EntityFamilyNode | null;
|
|
361
|
-
children: EntityFamilyNode[];
|
|
362
|
-
source: 'gleif';
|
|
363
|
-
coverage_caveat: string;
|
|
364
|
-
request_id: string;
|
|
365
|
-
}
|
|
86
|
+
export type EntityFamily = components['schemas']['EntityFamilyResponse'];
|
|
366
87
|
/** Proceeding in list responses. */
|
|
367
88
|
export type Proceeding = components['schemas']['Proceeding'];
|
|
368
89
|
/** Full proceeding detail with embedded trademark (retrieve response). */
|
|
369
90
|
export type ProceedingDetail = components['schemas']['ProceedingResponse'];
|
|
91
|
+
/**
|
|
92
|
+
* An office-action citation: a prior mark an examiner cited against a pending
|
|
93
|
+
* application. USPTO §2(d) refusals today — see `capabilities.citations` on
|
|
94
|
+
* `signa.references.offices()` for per-office coverage.
|
|
95
|
+
*/
|
|
96
|
+
export type Citation = components['schemas']['Citation'];
|
|
97
|
+
/**
|
|
98
|
+
* Citing/cited mark summary embedded in a citation. Null means there is no
|
|
99
|
+
* persisted link to a Signa record, NOT that the mark is absent from the
|
|
100
|
+
* register: resolution runs once, at extraction time, so a mark ingested after
|
|
101
|
+
* its citations were extracted keeps a null link forever. Read a null
|
|
102
|
+
* `cited_trademark` as "matched by reference only" and use `cited_ref`.
|
|
103
|
+
*/
|
|
104
|
+
export type CitationTrademarkSummary = components['schemas']['CitationTrademarkSummary'];
|
|
105
|
+
/** How a citation resolved. Null while pending the daily disposition refresh. */
|
|
106
|
+
export type CitationDisposition = NonNullable<Citation['disposition']>;
|
|
107
|
+
/**
|
|
108
|
+
* Office-action stage the citation REACHED — not provenance about the source
|
|
109
|
+
* document. A citation first raised in a nonfinal action reads `final` once a
|
|
110
|
+
* later dated final action maintained the refusal, so `final` does not mean the
|
|
111
|
+
* row was extracted from a final action.
|
|
112
|
+
*/
|
|
113
|
+
export type CitationActionStage = NonNullable<Citation['action_stage']>;
|
|
114
|
+
/** Office-local refusal ground vocabulary (USPTO `2d` = §2(d) confusion). */
|
|
115
|
+
export type CitationRefusalType = Citation['refusal_type'];
|
|
370
116
|
/** Recorded assignment in list responses. */
|
|
371
117
|
export type Assignment = components['schemas']['Assignment'];
|
|
372
118
|
/** Full assignment detail with parties and affected marks. */
|
|
@@ -381,12 +127,64 @@ export type TrademarkBatchResponse = components['schemas']['TrademarkBatchRespon
|
|
|
381
127
|
export type TrademarkSuggestion = components['schemas']['TrademarkSuggestion'];
|
|
382
128
|
/** Attorney client (owner) entry with shared count. */
|
|
383
129
|
export type AttorneyClient = components['schemas']['AttorneyClient'];
|
|
384
|
-
/**
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
130
|
+
/**
|
|
131
|
+
* @deprecated Since 0.14.0 search hits, list rows and portfolio rows are one
|
|
132
|
+
* type: use {@link TrademarkSummary}. This alias is the same type.
|
|
133
|
+
*/
|
|
134
|
+
export type TrademarkSearchResult = TrademarkSummary;
|
|
388
135
|
/** Goods & services term (Nice classification). */
|
|
389
136
|
export type GoodsServicesTerm = components['schemas']['GoodsServicesTerm'];
|
|
137
|
+
/** Request body for `POST /v1/goods-services/validate`. */
|
|
138
|
+
export type GoodsServicesValidateParams = Omit<components['schemas']['GoodsServicesValidateRequest'], 'language'> & {
|
|
139
|
+
/** Catalog language. Defaults to `en`; no other language is available in v1. */
|
|
140
|
+
language?: 'en';
|
|
141
|
+
};
|
|
142
|
+
/** One submitted item in a goods/services catalog validation request. */
|
|
143
|
+
export type GoodsServicesValidateItem = components['schemas']['GoodsServicesValidateItem'];
|
|
144
|
+
/** One per-item result from goods/services catalog validation. */
|
|
145
|
+
export type GoodsServicesValidation = components['schemas']['GoodsServicesValidation'];
|
|
146
|
+
/** Advisory same-class wording or USPTO template candidate. */
|
|
147
|
+
export type GoodsServicesValidationCandidate = components['schemas']['GoodsServicesValidationCandidate'];
|
|
148
|
+
/** Half-open token span into the submitted wording. */
|
|
149
|
+
export type GoodsServicesValidationSpan = components['schemas']['GoodsServicesValidationSpan'];
|
|
150
|
+
/** USPTO drafting template attached to a template candidate. */
|
|
151
|
+
export type GoodsServicesValidationTemplate = components['schemas']['GoodsServicesValidationTemplate'];
|
|
152
|
+
/** One fillable placeholder in a USPTO drafting template. */
|
|
153
|
+
export type GoodsServicesValidationTemplateSlot = components['schemas']['GoodsServicesValidationTemplateSlot'];
|
|
154
|
+
/** Descriptive token coverage for one submitted item. */
|
|
155
|
+
export type GoodsServicesValidationCoverage = components['schemas']['GoodsServicesValidationCoverage'];
|
|
156
|
+
/** Whether same-class candidate search completed reliably. */
|
|
157
|
+
export type CandidateSearch = components['schemas']['CandidateSearch'];
|
|
158
|
+
/** Why same-class candidate search did not complete. */
|
|
159
|
+
export type CandidateSearchReason = components['schemas']['CandidateSearchReason'];
|
|
160
|
+
/** Suggested class provenance when `class_source` is `inferred`. */
|
|
161
|
+
export type GoodsServicesClassInference = NonNullable<GoodsServicesValidation['class_inference']>;
|
|
162
|
+
/** Source of the resolved Nice class, including advisory inference. */
|
|
163
|
+
export type GoodsServicesClassSource = GoodsServicesValidation['class_source'];
|
|
164
|
+
/** Cited, non-predictive guidance about potentially indefinite wording. */
|
|
165
|
+
export type WordingWarning = components['schemas']['WordingWarning'];
|
|
166
|
+
/** Catalog source and its last-known upstream refresh date. */
|
|
167
|
+
export type GoodsServicesValidationCatalogFreshness = components['schemas']['GoodsServicesValidationCatalogFreshness'];
|
|
168
|
+
/** Candidate-search rollup across all submitted items. */
|
|
169
|
+
export type GoodsServicesValidationSummaryCandidateSearch = components['schemas']['GoodsServicesValidationSummaryCandidateSearch'];
|
|
170
|
+
/** Warning totals grouped by severity. */
|
|
171
|
+
export type GoodsServicesValidationSummaryWarningCount = components['schemas']['GoodsServicesValidationSummaryWarningCount'];
|
|
172
|
+
/** Full response from `POST /v1/goods-services/validate`. */
|
|
173
|
+
export type GoodsServicesValidationResponse = components['schemas']['GoodsServicesValidationListResponse'];
|
|
174
|
+
/** Item-level catalog validation status. */
|
|
175
|
+
export type ValidationItemStatus = components['schemas']['ValidationItemStatus'];
|
|
176
|
+
/** Per-office catalog validation status. */
|
|
177
|
+
export type OfficeVerdictStatus = components['schemas']['OfficeVerdictStatus'];
|
|
178
|
+
export type FeeRule = components['schemas']['FeeRule'];
|
|
179
|
+
export type FeeSource = components['schemas']['FeeSource'];
|
|
180
|
+
export type FeeEstimateLine = components['schemas']['FeeEstimateLine'];
|
|
181
|
+
export type FeeEstimateParams = components['schemas']['FeeEstimateRequest'];
|
|
182
|
+
export type FeeEstimate = components['schemas']['FeeEstimateResponse'];
|
|
183
|
+
export type FeeListResponse = components['schemas']['FeeListResponse'];
|
|
184
|
+
export type FeeListParams = {
|
|
185
|
+
office?: string;
|
|
186
|
+
action?: FeeEstimateParams['action'];
|
|
187
|
+
};
|
|
390
188
|
/** Single maintenance deadline rule (item in `GET /v1/deadline-rules`). */
|
|
391
189
|
export type DeadlineRule = components['schemas']['DeadlineRule'];
|
|
392
190
|
/** Single computed maintenance deadline. */
|
|
@@ -394,11 +192,53 @@ export type ComputedDeadline = components['schemas']['ComputedDeadline'];
|
|
|
394
192
|
/** Per-item result from `POST /v1/deadlines/compute`. */
|
|
395
193
|
export type DeadlineComputation = components['schemas']['DeadlineComputation'];
|
|
396
194
|
/** Input item for `POST /v1/deadlines/compute`. */
|
|
397
|
-
export type DeadlineComputeItem = components['schemas']['
|
|
195
|
+
export type DeadlineComputeItem = components['schemas']['DeadlineComputeRequest']['items'][number];
|
|
196
|
+
export type DeadlineComputeResult = components['schemas']['DeadlineComputeResponse']['data'][number];
|
|
197
|
+
export type DeadlineListRow = components['schemas']['DeadlineListRow'];
|
|
198
|
+
/**
|
|
199
|
+
* A maintenance rule that applies to a mark but was declined because the
|
|
200
|
+
* record lacks the date the statute anchors it on, so no deadline row exists
|
|
201
|
+
* for it. Carried as `unsupported_rules` on `POST /v1/deadlines/compute`
|
|
202
|
+
* items and `unsupported_marks[]` entries, and as
|
|
203
|
+
* `derived.deadlines.unsupported_rules` on a trademark row.
|
|
204
|
+
*/
|
|
205
|
+
export type UnsupportedDeadlineRule = components['schemas']['UnsupportedDeadlineRule'];
|
|
206
|
+
/**
|
|
207
|
+
* A mark in a deadline list's scope whose schedule was not computed
|
|
208
|
+
* (`supported: false`, no rows) or computed only in part (`supported: true`
|
|
209
|
+
* with `unsupported_rules`). Same coverage fields as a compute item.
|
|
210
|
+
*/
|
|
211
|
+
export type DeadlineUnsupportedMark = components['schemas']['DeadlineUnsupportedMark'];
|
|
212
|
+
export type DeadlineListParams = Omit<NonNullable<operations['listDeadlines']['parameters']['query']>, 'portfolio_id' | 'trademark_id'> & ({
|
|
213
|
+
portfolio_id: string;
|
|
214
|
+
trademark_id?: never;
|
|
215
|
+
} | {
|
|
216
|
+
trademark_id: string;
|
|
217
|
+
portfolio_id?: never;
|
|
218
|
+
});
|
|
398
219
|
/** Request body for `POST /v1/deadlines/compute`. */
|
|
399
220
|
export type DeadlineComputeParams = components['schemas']['DeadlineComputeRequest'];
|
|
400
221
|
/** List response from `POST /v1/deadlines/compute`. */
|
|
401
222
|
export type DeadlineComputeResponse = components['schemas']['DeadlineComputeResponse'];
|
|
223
|
+
/**
|
|
224
|
+
* Why a deadline was not computed.
|
|
225
|
+
*
|
|
226
|
+
* Open enum — widened in the prosecution release from two maintenance values
|
|
227
|
+
* to the full engine vocabulary. Keep a default branch.
|
|
228
|
+
*/
|
|
229
|
+
export type DeadlineUnsupportedReason = components['schemas']['DeadlineUnsupportedReason'];
|
|
230
|
+
/** Per-deadline-type capability on a `POST /v1/deadlines/compute` result. */
|
|
231
|
+
export type DeadlineSupport = components['schemas']['DeadlineSupport'];
|
|
232
|
+
/** One prosecution fact instance sent on `items[].facts`. */
|
|
233
|
+
export type ProsecutionFact = components['schemas']['ProsecutionFact'];
|
|
234
|
+
/** The maintenance filing under examination, for post-registration refusals. */
|
|
235
|
+
export type ProsecutionMaintenanceFiling = components['schemas']['ProsecutionMaintenanceFiling'];
|
|
236
|
+
/** One computed prosecution deadline, with the rule provenance behind it. */
|
|
237
|
+
export type ProsecutionDeadline = components['schemas']['ProsecutionDeadline'];
|
|
238
|
+
/** The rule identity + sources stamped onto a computed prosecution deadline. */
|
|
239
|
+
export type ProsecutionRuleIdentity = components['schemas']['ProsecutionRuleIdentity'];
|
|
240
|
+
/** A citable source behind a prosecution rule. */
|
|
241
|
+
export type ProsecutionRuleSource = components['schemas']['ProsecutionRuleSource'];
|
|
402
242
|
/** Single opposition window rule (item in `GET /v1/opposition-rules`). */
|
|
403
243
|
export type OppositionRule = components['schemas']['OppositionRule'];
|
|
404
244
|
/** Common extension available for an opposition window, when modeled. */
|
|
@@ -425,6 +265,20 @@ export type ReconcileParams = components['schemas']['ReconcileRequest'];
|
|
|
425
265
|
export type Reconciliation = components['schemas']['Reconciliation'];
|
|
426
266
|
/** List response from `POST /v1/reconcile`. */
|
|
427
267
|
export type ReconcileResponse = components['schemas']['ReconcileResponse'];
|
|
268
|
+
/** Three-source per-field verdict row (`POST /v1/reconcile` with `verdict_detail: true`). */
|
|
269
|
+
export type FieldVerdict = components['schemas']['ReconcileFieldVerdict'];
|
|
270
|
+
/** The 7-value verdict partition on a `FieldVerdict`. */
|
|
271
|
+
export type ReconcileVerdict = FieldVerdict['verdict'];
|
|
272
|
+
/** Which sources produced a value for a `FieldVerdict`. */
|
|
273
|
+
export type VerdictBasis = FieldVerdict['basis'];
|
|
274
|
+
/** One caller-docketed deadline (`your_fields.docketed_deadlines[]`, requires `verdict_detail: true`). */
|
|
275
|
+
export type DocketedDeadline = components['schemas']['DocketedDeadline'];
|
|
276
|
+
/** Identifier-interpretation echo on a verdict_detail result. */
|
|
277
|
+
export type ReconcileLookup = components['schemas']['ReconcileLookup'];
|
|
278
|
+
/** Computed-schedule context on a verdict_detail result. */
|
|
279
|
+
export type ReconcileComputedContext = components['schemas']['ReconcileComputedContext'];
|
|
280
|
+
/** Totals over `field_verdicts[]` — every verdict key explicit. */
|
|
281
|
+
export type ReconcileVerdictCounts = components['schemas']['ReconcileVerdictCounts'];
|
|
428
282
|
/** Statutory citation + URL surfaced on rule items. */
|
|
429
283
|
export type RuleSource = components['schemas']['RuleSource'];
|
|
430
284
|
/** Vienna design code. */
|
|
@@ -449,47 +303,138 @@ export type GoodsServicesSuggestResult = components['schemas']['GoodsServicesSug
|
|
|
449
303
|
export type Office = components['schemas']['Office'];
|
|
450
304
|
/** Trademark office with detail (retrieve response). */
|
|
451
305
|
export type OfficeDetail = components['schemas']['OfficeDetailResponse'];
|
|
306
|
+
/** One office-coverage vote cast by the authenticated organization. */
|
|
307
|
+
export type OfficeVote = components['schemas']['OfficeVoteResource'];
|
|
308
|
+
/** Confirmation returned by `references.retractOfficeVote(...)`. */
|
|
309
|
+
export type OfficeVoteDeleted = components['schemas']['OfficeVoteDeleted'];
|
|
310
|
+
/** Body for `references.castOfficeVotes(...)`. */
|
|
311
|
+
export interface CastOfficeVotesParams {
|
|
312
|
+
/**
|
|
313
|
+
* Office codes to vote for (1–50). ST.3 / ISO country codes, any case
|
|
314
|
+
* (surrounding whitespace is trimmed); legacy internal codes and reserved
|
|
315
|
+
* aliases like `UK` are canonicalized. Offices Signa already covers are
|
|
316
|
+
* rejected — vote for what you want added. Codes your organization already
|
|
317
|
+
* voted for are no-ops, never double counts.
|
|
318
|
+
*/
|
|
319
|
+
office_codes: string[];
|
|
320
|
+
}
|
|
452
321
|
/** Jurisdiction. */
|
|
453
322
|
export type Jurisdiction = components['schemas']['Jurisdiction'];
|
|
454
323
|
/** Jurisdiction with detail (retrieve response). */
|
|
455
324
|
export type JurisdictionDetail = components['schemas']['JurisdictionDetailResponse'];
|
|
456
|
-
/** Canonical status with office mappings (Phase 2 — manually typed while route is gated). */
|
|
457
|
-
export interface Status {
|
|
458
|
-
object: 'status_mapping';
|
|
459
|
-
office_code: string;
|
|
460
|
-
raw_code: string;
|
|
461
|
-
status_stage: string;
|
|
462
|
-
status_reason: string | null;
|
|
463
|
-
challenge_states: string[];
|
|
464
|
-
status_source: string;
|
|
465
|
-
confidence: number;
|
|
466
|
-
notes: string | null;
|
|
467
|
-
}
|
|
468
325
|
/** Event type code. */
|
|
469
326
|
export type EventType = components['schemas']['EventTypeMapping'];
|
|
470
|
-
/**
|
|
327
|
+
/**
|
|
328
|
+
* One office status code (`GET /v1/status-codes`): the office's verbatim
|
|
329
|
+
* `raw.code` and `raw.label` (null when we hold no verbatim office label for
|
|
330
|
+
* the code, for example USPTO codes today) and the normalised
|
|
331
|
+
* `primary`/`stage`/`reason` Signa maps it to. Decode a trademark's
|
|
332
|
+
* `status.raw.code` with it.
|
|
333
|
+
*/
|
|
334
|
+
export type StatusCode = components['schemas']['StatusCode'];
|
|
335
|
+
/** Query params for `references.eventTypes()`. */
|
|
336
|
+
export interface EventTypeListParams {
|
|
337
|
+
/** Office code (WIPO ST.3, e.g. `US`, `EM`). Omit for every office. */
|
|
338
|
+
office_code?: string;
|
|
339
|
+
/** Page size (1-500, default 100). */
|
|
340
|
+
limit?: number;
|
|
341
|
+
cursor?: string;
|
|
342
|
+
}
|
|
343
|
+
/** Query params for `references.statusCodes()`. */
|
|
344
|
+
export interface StatusCodeListParams {
|
|
345
|
+
/** Office code (WIPO ST.3, e.g. `US`, `EM`). Omit for every office. */
|
|
346
|
+
office_code?: string;
|
|
347
|
+
/** Page size (1-500, default 100). */
|
|
348
|
+
limit?: number;
|
|
349
|
+
cursor?: string;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* One membership row of a portfolio: the trademark summary the rest of the API
|
|
353
|
+
* returns ({@link TrademarkSummary}), plus the three fields that describe the
|
|
354
|
+
* MEMBERSHIP rather than the mark — `added_at`, `added_by` (`key_*`, or `null`
|
|
355
|
+
* when it predates attribution) and `external_ref` (your own docketing
|
|
356
|
+
* reference for THIS membership, `null` when none is bound; the same mark in
|
|
357
|
+
* two portfolios can carry two different references, or none).
|
|
358
|
+
*
|
|
359
|
+
* Generated, not hand-written: the API publishes `PortfolioMark` as a
|
|
360
|
+
* component, so the two shapes cannot drift.
|
|
361
|
+
*/
|
|
362
|
+
export type PortfolioMark = components['schemas']['PortfolioMark'];
|
|
363
|
+
/** The embedded membership page returned by `portfolios.retrieve()`. */
|
|
364
|
+
export type PortfolioMarkList = components['schemas']['PortfolioMarkList'];
|
|
365
|
+
/**
|
|
366
|
+
* A portfolio as it appears in the rows of `portfolios.list()` — the fields
|
|
367
|
+
* every representation shares, and nothing else.
|
|
368
|
+
*
|
|
369
|
+
* The three single-object responses each carry strictly more, so they have
|
|
370
|
+
* their own types: `create()` / `update()` return {@link PortfolioResponse}
|
|
371
|
+
* (adds the top-level `request_id` every single-object response echoes), and
|
|
372
|
+
* `retrieve()` returns {@link PortfolioDetail} (adds the embedded membership
|
|
373
|
+
* page on top of that). List ROWS carry neither: `request_id` sits once on the
|
|
374
|
+
* list envelope, and the embedded page is a detail-only projection.
|
|
375
|
+
*/
|
|
471
376
|
export interface Portfolio {
|
|
472
377
|
id: string;
|
|
473
378
|
object: 'portfolio';
|
|
474
379
|
name: string;
|
|
475
380
|
description: string | null;
|
|
476
|
-
|
|
477
|
-
|
|
381
|
+
trademark_count: number;
|
|
382
|
+
/**
|
|
383
|
+
* Always an object, never `null` — an unset `metadata` is `{}`. The column is
|
|
384
|
+
* `NOT NULL DEFAULT '{}'`, every read path coerces, and both write paths type
|
|
385
|
+
* the field as a record, so no request can store a null here.
|
|
386
|
+
*/
|
|
387
|
+
metadata: Record<string, string>;
|
|
478
388
|
created_at: string;
|
|
479
389
|
updated_at: string;
|
|
480
390
|
}
|
|
481
|
-
/**
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
391
|
+
/**
|
|
392
|
+
* Portfolio as returned by `portfolios.create()` and `portfolios.update()`:
|
|
393
|
+
* the shared {@link Portfolio} fields plus the `request_id` of the call that
|
|
394
|
+
* produced it. No embedded marks — only `retrieve()` projects those.
|
|
395
|
+
*/
|
|
396
|
+
export interface PortfolioResponse extends Portfolio {
|
|
397
|
+
/** Per-request id echoed at the top level of every single-object response. */
|
|
398
|
+
request_id: string;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Portfolio as returned by `portfolios.retrieve()`, with its membership page
|
|
402
|
+
* embedded.
|
|
403
|
+
*
|
|
404
|
+
* `trademarks` is ALWAYS present, including for `limit: 0` (where `data` is
|
|
405
|
+
* empty and `has_more` reports whether the portfolio holds anything at all)
|
|
406
|
+
* and for a `?external_ref=` filter that matches nothing — so it is required,
|
|
407
|
+
* not optional. See {@link PortfolioRetrieveParams}.
|
|
408
|
+
*
|
|
409
|
+
* Generated, not hand-written: the retrieve 200 publishes the `PortfolioDetail`
|
|
410
|
+
* component (`Portfolio` + `trademarks`), so the two shapes cannot drift.
|
|
411
|
+
*/
|
|
412
|
+
export type PortfolioDetail = components['schemas']['PortfolioDetail'];
|
|
413
|
+
/**
|
|
414
|
+
* Receipt returned by `portfolios.addTrademarks()`. Counts are over the
|
|
415
|
+
* DISTINCT input marks; on any `409` the whole batch is rolled back and no
|
|
416
|
+
* receipt is returned at all.
|
|
417
|
+
*/
|
|
418
|
+
export interface PortfolioMarksAddResult {
|
|
419
|
+
object: 'portfolio_marks_result';
|
|
420
|
+
/** Memberships created by this call. */
|
|
421
|
+
added: number;
|
|
422
|
+
/** Marks that were already members (no-ops), including repeated ids. */
|
|
423
|
+
already_in_portfolio: number;
|
|
424
|
+
/** Ids that resolved to no trademark. Lenient: they do not fail the batch. */
|
|
425
|
+
not_found: number;
|
|
426
|
+
request_id: string;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Receipt returned by `portfolios.removeTrademarks()`. Entries that match no
|
|
430
|
+
* membership are simply skipped, so `removed` can be lower than the number of
|
|
431
|
+
* entries sent — and `0` is a success, not an error.
|
|
432
|
+
*/
|
|
433
|
+
export interface PortfolioMarksRemoveResult {
|
|
434
|
+
object: 'portfolio_marks_result';
|
|
435
|
+
/** Memberships actually deleted by this call. */
|
|
436
|
+
removed: number;
|
|
437
|
+
request_id: string;
|
|
493
438
|
}
|
|
494
439
|
/** One of the five watch types (VAL-PRODUCT-001). */
|
|
495
440
|
export type WatchType = 'mark' | 'portfolio' | 'owner' | 'class' | 'similarity';
|
|
@@ -595,12 +540,48 @@ export type AlertEventType = 'trademark.created' | 'trademark.updated' | 'tradem
|
|
|
595
540
|
export type AlertSeverity = 'normal' | 'high' | 'critical';
|
|
596
541
|
/** Opposition-window state for the matched mark, when applicable. */
|
|
597
542
|
export type OppositionWindowStatus = 'open' | 'closing_soon' | 'critical' | 'closed';
|
|
543
|
+
/**
|
|
544
|
+
* What a holiday calendar did to a served date. `moved` / `unchanged`: a
|
|
545
|
+
* calendar was consulted. `not_checked`: no pinned closure list verified the
|
|
546
|
+
* date, so the true date can only be the same or LATER (correct-or-EARLY; do
|
|
547
|
+
* not diarise as final). `month_end_overflow`: the period's end day does not
|
|
548
|
+
* exist in the target month and was clamped.
|
|
549
|
+
*/
|
|
550
|
+
export type HolidayAdjustment = 'moved' | 'unchanged' | 'not_checked' | 'month_end_overflow';
|
|
598
551
|
/**
|
|
599
552
|
* One entry in an alert's `event.diff`. Parent-field changes carry real
|
|
600
553
|
* `from`/`to` values; child-entity changes are opaque (`{ path, op:'changed' }`,
|
|
601
554
|
* `from`/`to` absent).
|
|
602
555
|
*/
|
|
603
556
|
export interface AlertDiffEntry {
|
|
557
|
+
/**
|
|
558
|
+
* PUBLIC trademark field name — the same vocabulary `changed_fields` and
|
|
559
|
+
* `changes` use on `trademark.status_changed`, and the same names you read
|
|
560
|
+
* back from `trademarks.retrieve()`: `status`, `mark_text`,
|
|
561
|
+
* `publication_date`, `ir_number`, or a changed child collection (`owners`,
|
|
562
|
+
* `attorneys`, `classifications`, `media`, …).
|
|
563
|
+
*
|
|
564
|
+
* Status is FLATTENED: the resource nests status under an object, this list
|
|
565
|
+
* is flat, so `status.primary` is `status` and the rest are `status_<key>`
|
|
566
|
+
* (`status_stage`, `status_reason`, `status_challenges`,
|
|
567
|
+
* `status_effective_date`, `status_basis`, `status_raw_code`,
|
|
568
|
+
* `status_raw_label`).
|
|
569
|
+
*
|
|
570
|
+
* 0.14.0: REST alerts and `alert.created` payload v2 follow the new trademark
|
|
571
|
+
* row: `office_record_id` (was `source_primary_id`), `status_basis` (was
|
|
572
|
+
* `status_source`), no `*_date_basis` entries, and office-stated values only
|
|
573
|
+
* for `expiry_date` / `renewal_due_date`. A v1 `alert.created` delivery keeps
|
|
574
|
+
* the v1 names.
|
|
575
|
+
*
|
|
576
|
+
* Fields Signa tracks internally but does not publish never appear — they
|
|
577
|
+
* are dropped rather than renamed, so every `path` is resolvable against the
|
|
578
|
+
* trademark resource and a diff can be shorter than the raw change was.
|
|
579
|
+
*
|
|
580
|
+
* BETA BREAK: this used to carry internal column tokens
|
|
581
|
+
* (`status_primary`, `mark_text_primary`, `trademark_owners`, …). Redelivered
|
|
582
|
+
* and retried deliveries of older alerts are re-emitted with the public
|
|
583
|
+
* names, so only one vocabulary ever reaches your handler.
|
|
584
|
+
*/
|
|
604
585
|
path: string;
|
|
605
586
|
op: 'set' | 'unset' | 'changed';
|
|
606
587
|
from?: unknown;
|
|
@@ -681,7 +662,12 @@ export interface Alert {
|
|
|
681
662
|
customer_reference: string | null;
|
|
682
663
|
event: {
|
|
683
664
|
type: AlertEventType;
|
|
684
|
-
/**
|
|
665
|
+
/**
|
|
666
|
+
* Short human-readable description, e.g.
|
|
667
|
+
* `"Status changed: pending → registered"`. Composed from the same PUBLIC
|
|
668
|
+
* field names as {@link AlertDiffEntry.path}, so the headline and the
|
|
669
|
+
* structured diff always agree.
|
|
670
|
+
*/
|
|
685
671
|
summary: string;
|
|
686
672
|
diff: AlertDiffEntry[];
|
|
687
673
|
/**
|
|
@@ -700,6 +686,13 @@ export interface Alert {
|
|
|
700
686
|
opposition_window_status: OppositionWindowStatus | null;
|
|
701
687
|
/** Computed customer-action deadline; null if no deadline applies. */
|
|
702
688
|
must_act_by: string | null;
|
|
689
|
+
/**
|
|
690
|
+
* Whether a holiday calendar stood behind `must_act_by` when it was frozen
|
|
691
|
+
* onto this alert. `null` on alerts emitted before this field existed and
|
|
692
|
+
* on alerts with no opposition window: read it as "no marker was
|
|
693
|
+
* recorded", never as "verified".
|
|
694
|
+
*/
|
|
695
|
+
must_act_by_adjustment: HolidayAdjustment | null;
|
|
703
696
|
};
|
|
704
697
|
/**
|
|
705
698
|
* True when this alert was generated well after the underlying change
|
|
@@ -732,8 +725,24 @@ export interface Alert {
|
|
|
732
725
|
*/
|
|
733
726
|
provenance: AlertProvenance;
|
|
734
727
|
}
|
|
735
|
-
/**
|
|
736
|
-
|
|
728
|
+
/**
|
|
729
|
+
* Webhook event types delivered by the dispatcher.
|
|
730
|
+
*
|
|
731
|
+
* The first three are the STATIC subscribable set for `enabled_events` — the
|
|
732
|
+
* API accepts them at all times, independently of our rollout state. Source of
|
|
733
|
+
* truth: `WEBHOOK_SUBSCRIBABLE_EVENT_TYPES` in `@signa/types`, pinned by
|
|
734
|
+
* `packages/types/src/api-events.test.ts` (a source-text pin, because the
|
|
735
|
+
* published SDK must not depend on `@signa/types` at runtime).
|
|
736
|
+
*
|
|
737
|
+
* `trademark.status_changed` and `office_action.issued` are accepted for
|
|
738
|
+
* subscription but are NOT YET EMITTED: they begin delivering when the API
|
|
739
|
+
* events projector is enabled. Subscribing early is safe and means you receive
|
|
740
|
+
* them from the first delivery.
|
|
741
|
+
*
|
|
742
|
+
* `webhook.test` is the shape delivered by `webhooks.test()` only; it is not a
|
|
743
|
+
* subscribable type and `enabled_events` rejects it.
|
|
744
|
+
*/
|
|
745
|
+
export type WebhookEventType = 'alert.created' | 'trademark.status_changed' | 'office_action.issued' | 'webhook.test';
|
|
737
746
|
/**
|
|
738
747
|
* What arrives at a customer webhook endpoint, in the body of the POST
|
|
739
748
|
* (Round 4 R4.5 — TSK-111 monitoring v1).
|
|
@@ -743,7 +752,7 @@ export type WebhookEventType = 'alert.created' | 'webhook.test';
|
|
|
743
752
|
* (`standardwebhooks` on npm, `svix-webhooks` for Python, etc.) before
|
|
744
753
|
* trusting `data`.
|
|
745
754
|
*
|
|
746
|
-
* `id` is a prefixed
|
|
755
|
+
* `id` is a prefixed event ID (`evt_*`) — the
|
|
747
756
|
* same value as the `webhook-id` header. `timestamp` is an ISO 8601 UTC
|
|
748
757
|
* instant captured at signing. `data` is the event-specific payload
|
|
749
758
|
* (see {@link AlertCreatedPayload}).
|
|
@@ -752,17 +761,17 @@ export interface WebhookEvent<T = unknown> {
|
|
|
752
761
|
type: WebhookEventType;
|
|
753
762
|
/** Prefixed event ID — matches the `webhook-id` header. */
|
|
754
763
|
id: string;
|
|
764
|
+
/** Version of the public event payload contract carried in `data`. */
|
|
765
|
+
payload_version?: number;
|
|
755
766
|
/** ISO 8601 UTC timestamp. */
|
|
756
767
|
timestamp: string;
|
|
757
768
|
data: T;
|
|
758
769
|
}
|
|
759
770
|
/**
|
|
760
|
-
*
|
|
771
|
+
* Alert fields nested under `data.alert` on an `alert.created` delivery.
|
|
761
772
|
*
|
|
762
|
-
*
|
|
763
|
-
*
|
|
764
|
-
* {@link AlertCreatedPayload}) so existing consumers that read flat fields
|
|
765
|
-
* never break.
|
|
773
|
+
* Phase 3 intentionally moved these fields beneath `data.alert`; consumers of
|
|
774
|
+
* the beta flat envelope must update to the nested shape.
|
|
766
775
|
*
|
|
767
776
|
* IDs are prefixed (Round 4 R4.5) — `alert_id`, `watch_id`, and
|
|
768
777
|
* `trademark_record_id` feed straight into `GET /v1/alerts/{id}` etc.
|
|
@@ -771,6 +780,9 @@ export interface WebhookEvent<T = unknown> {
|
|
|
771
780
|
* Note the absence of `org_id`: the dispatcher omits it because the
|
|
772
781
|
* customer's webhook endpoint already implies the tenant, and
|
|
773
782
|
* cross-referencing internal tenant UUIDs is not part of the public API.
|
|
783
|
+
*
|
|
784
|
+
* @deprecated The flat alert fields were removed from the webhook contract.
|
|
785
|
+
* Use {@link AlertCreatedData.alert}, the rich alert resource.
|
|
774
786
|
*/
|
|
775
787
|
export interface AlertCreatedFlatFields {
|
|
776
788
|
/** Prefixed alert ID, e.g. `alt_018f...`. */
|
|
@@ -805,31 +817,205 @@ export interface AlertCreatedFlatFields {
|
|
|
805
817
|
source_data_hash: string | null;
|
|
806
818
|
}
|
|
807
819
|
/**
|
|
808
|
-
*
|
|
820
|
+
* Self-contained alert resource nested at `data.alert`.
|
|
809
821
|
*
|
|
810
822
|
* The dispatcher (`buildSelfContainedAlertData` in
|
|
811
823
|
* `workers/webhook-dispatcher/src/dispatcher.ts`) emits a SELF-CONTAINED body:
|
|
812
824
|
* the full rich {@link Alert} object (`watch`, `event`, `match`, `trademark`,
|
|
813
825
|
* `deadline`, `timestamps`, `schema_version`, `customer_reference`, `links`,
|
|
814
|
-
* `id`, `object`)
|
|
815
|
-
* Rich-first, flat-last, so the lean flat fields win on any future key overlap.
|
|
816
|
-
*
|
|
817
|
-
* The flat fields ({@link AlertCreatedFlatFields}) are ALWAYS present. The rich
|
|
818
|
-
* half mirrors the REST {@link Alert} resource MINUS `evaluation_epoch`
|
|
819
|
-
* (REST-only — the webhook carries the epoch as a flat field instead, see
|
|
820
|
-
* {@link AlertCreatedFlatFields.evaluation_epoch}), and is OPTIONAL: the rich
|
|
821
|
-
* fields (`event`, `trademark`, `match`, `watch`, `deadline`, `timestamps`,
|
|
822
|
-
* `schema_version`, `links`, `id`, `object`, `customer_reference`) are present
|
|
823
|
-
* on normal deliveries but ABSENT on the rare lean-fallback delivery — when the
|
|
824
|
-
* alert row was hard-deleted between emit and dispatch, hydration returns null
|
|
825
|
-
* and the dispatcher emits ONLY the flat fields.
|
|
826
|
+
* `id`, `object`).
|
|
826
827
|
*
|
|
827
|
-
*
|
|
828
|
-
* `
|
|
828
|
+
* The rich object mirrors the REST {@link Alert} resource minus
|
|
829
|
+
* `evaluation_epoch` and `provenance`; the event builder DLQs when it cannot
|
|
830
|
+
* hydrate that complete resource.
|
|
829
831
|
*/
|
|
830
|
-
export type AlertCreatedPayload =
|
|
832
|
+
export type AlertCreatedPayload = Omit<Alert, 'evaluation_epoch' | 'provenance'>;
|
|
831
833
|
/** Webhook envelope for an `alert.created` delivery. */
|
|
832
|
-
export
|
|
834
|
+
export interface AlertCreatedData {
|
|
835
|
+
/** Stable spine event ID; identical to the envelope id and webhook-id header. */
|
|
836
|
+
event_id: string;
|
|
837
|
+
/** Prefixed alert resource ID. */
|
|
838
|
+
alert_id: string;
|
|
839
|
+
/** Self-contained alert payload. */
|
|
840
|
+
alert: AlertCreatedPayload;
|
|
841
|
+
}
|
|
842
|
+
export type AlertCreatedEvent = Omit<WebhookEvent<AlertCreatedData>, 'type' | 'payload_version'> & {
|
|
843
|
+
type: 'alert.created';
|
|
844
|
+
payload_version: number;
|
|
845
|
+
};
|
|
846
|
+
/**
|
|
847
|
+
* A portfolio this mark belonged to when the event was recorded (ENG-344
|
|
848
|
+
* follow-up A3), with the `external_ref` you set on the membership.
|
|
849
|
+
*
|
|
850
|
+
* FROZEN at record time. Editing the membership or its reference afterwards
|
|
851
|
+
* never rewrites an event you already received, which is what keeps a
|
|
852
|
+
* redelivery byte-identical to the original. `external_ref` is `null` when the
|
|
853
|
+
* membership carries none, or when the event predates the snapshot column —
|
|
854
|
+
* read it as "unknown or unset", never as "cleared".
|
|
855
|
+
*/
|
|
856
|
+
export interface EventPortfolioRef {
|
|
857
|
+
/** Prefixed portfolio ID (`ptf_*`). */
|
|
858
|
+
id: string;
|
|
859
|
+
external_ref: string | null;
|
|
860
|
+
}
|
|
861
|
+
/**
|
|
862
|
+
* `trademark.status_changed` data. v1 and v2 share every key; they differ in
|
|
863
|
+
* the change vocabulary of `changed_fields` / `changes` (see
|
|
864
|
+
* {@link TrademarkStatusChangedData.changed_fields}). Read the envelope's
|
|
865
|
+
* `payload_version` to tell them apart.
|
|
866
|
+
*/
|
|
867
|
+
export interface TrademarkStatusChangedData {
|
|
868
|
+
event_id: string;
|
|
869
|
+
trademark_id: string;
|
|
870
|
+
office_code: string | null;
|
|
871
|
+
jurisdiction_code: string;
|
|
872
|
+
version: number;
|
|
873
|
+
mark_text: string | null;
|
|
874
|
+
status: string | null;
|
|
875
|
+
status_stage: string;
|
|
876
|
+
status_reason: string | null;
|
|
877
|
+
owner_name: string | null;
|
|
878
|
+
/**
|
|
879
|
+
* PUBLIC field names of the trademark resource that changed — never Signa's
|
|
880
|
+
* internal column names. `status_primary` reads as `status`,
|
|
881
|
+
* `mark_text_primary` as `mark_text`, `publication_date_first` as
|
|
882
|
+
* `publication_date`, `international_registration_number` as `ir_number`,
|
|
883
|
+
* `challenge_states` as `status_challenges`; a changed child collection reads
|
|
884
|
+
* as its resource name (`owners`, `classifications`, `media`, ...). Columns
|
|
885
|
+
* Signa tracks but does not publish are OMITTED rather than renamed, so this
|
|
886
|
+
* list can be shorter than the number of columns that moved.
|
|
887
|
+
*
|
|
888
|
+
* `payload_version` 2 follows the 0.14.0 trademark row: `office_record_id`
|
|
889
|
+
* (v1 `source_primary_id`) and `status_basis` (v1 `status_source`, values in
|
|
890
|
+
* the `status.basis` vocabulary: `office`, `event_derived`,
|
|
891
|
+
* `dispatch_derived`, `computed`); `expiry_date_basis` and
|
|
892
|
+
* `renewal_due_date_basis` are never listed. In v2 `expiry_date` and
|
|
893
|
+
* `renewal_due_date` carry office-stated values only (a side Signa computed
|
|
894
|
+
* is `null`, and a change between two computed values is omitted),
|
|
895
|
+
* `status_raw_label` follows the verbatim-label rule, `registration_number`
|
|
896
|
+
* has no `WO` prefix and `office_record_id` is `null` for a Madrid key Signa
|
|
897
|
+
* composed.
|
|
898
|
+
*/
|
|
899
|
+
changed_fields: string[];
|
|
900
|
+
/** Field-level diff keyed by the same public names as `changed_fields`. */
|
|
901
|
+
changes: Record<string, {
|
|
902
|
+
before: unknown;
|
|
903
|
+
after: unknown;
|
|
904
|
+
}>;
|
|
905
|
+
/**
|
|
906
|
+
* When SIGNA produced this event (ISO-8601) — the moment ingestion stored the
|
|
907
|
+
* change, NOT the moment the office published it. The two differ by the
|
|
908
|
+
* office publication lag (1 to 14 days), so a docket sorted only on
|
|
909
|
+
* `occurred_at` is wrong by that lag. Use {@link source_date} for the
|
|
910
|
+
* office's own date.
|
|
911
|
+
*/
|
|
912
|
+
occurred_at: string;
|
|
913
|
+
/**
|
|
914
|
+
* The office-reported DATA DATE of the change as stored by Signa
|
|
915
|
+
* (`YYYY-MM-DD`), or `null` when the feed reports none.
|
|
916
|
+
*
|
|
917
|
+
* Day precision, and what it means varies by office: USPTO transaction date,
|
|
918
|
+
* WIPO gazette date, snapshot offices the crawl date. It is NOT a legal
|
|
919
|
+
* effective date — look in `changes.status_effective_date` for that. Sorting
|
|
920
|
+
* a docket by `source_date` is meaningful WITHIN ONE OFFICE; across offices
|
|
921
|
+
* you are comparing different kinds of date.
|
|
922
|
+
*/
|
|
923
|
+
source_date: string | null;
|
|
924
|
+
/**
|
|
925
|
+
* Portfolios this mark was in when the event was recorded. Empty when it was
|
|
926
|
+
* in none. See {@link EventPortfolioRef}.
|
|
927
|
+
*
|
|
928
|
+
* OPTIONAL because deliveries persisted before this release do not carry it:
|
|
929
|
+
* `/redeliver` and retry attempts 2..7 replay the stored payload verbatim, so
|
|
930
|
+
* an event first delivered before the field shipped stays without it forever.
|
|
931
|
+
* Treat `undefined` as "this delivery predates the field", not as "empty".
|
|
932
|
+
*/
|
|
933
|
+
portfolios?: EventPortfolioRef[];
|
|
934
|
+
}
|
|
935
|
+
export type TrademarkStatusChangedEvent = Omit<WebhookEvent<TrademarkStatusChangedData>, 'type' | 'payload_version'> & {
|
|
936
|
+
type: 'trademark.status_changed';
|
|
937
|
+
payload_version: number;
|
|
938
|
+
};
|
|
939
|
+
/**
|
|
940
|
+
* `office_action.issued` data at `payload_version` 1: the prosecution row's
|
|
941
|
+
* fields flattened beside the identity fields.
|
|
942
|
+
*/
|
|
943
|
+
export interface OfficeActionIssuedDataV1 {
|
|
944
|
+
/** Stable event ID; identical to the envelope id and the webhook-id header. */
|
|
945
|
+
event_id: string;
|
|
946
|
+
trademark_id: string;
|
|
947
|
+
office_code: string | null;
|
|
948
|
+
event_date: string;
|
|
949
|
+
event_code: string | null;
|
|
950
|
+
event_label: string | null;
|
|
951
|
+
scope: string | null;
|
|
952
|
+
status_after_event: string | null;
|
|
953
|
+
nice_class_number: number | null;
|
|
954
|
+
description: string | null;
|
|
955
|
+
source_identifier: string | null;
|
|
956
|
+
sequence_no: number | null;
|
|
957
|
+
jurisdiction_code: string | null;
|
|
958
|
+
/**
|
|
959
|
+
* When SIGNA produced this event (ISO-8601) — the moment ingestion stored the
|
|
960
|
+
* office-action row, not the moment the office issued it. Use
|
|
961
|
+
* {@link source_date} (or the equal {@link event_date}) for the office's date.
|
|
962
|
+
*/
|
|
963
|
+
occurred_at: string;
|
|
964
|
+
/**
|
|
965
|
+
* The office-reported data date this action is from (`YYYY-MM-DD`) — the same
|
|
966
|
+
* value as `event_date`, restated under the name every event family shares so
|
|
967
|
+
* a mixed feed sorts by office date without branching on `type`.
|
|
968
|
+
*/
|
|
969
|
+
source_date: string | null;
|
|
970
|
+
/**
|
|
971
|
+
* Portfolios this mark was in when the event was recorded. Empty when it was
|
|
972
|
+
* in none. See {@link EventPortfolioRef}.
|
|
973
|
+
*
|
|
974
|
+
* OPTIONAL because deliveries persisted before this release do not carry it —
|
|
975
|
+
* see {@link TrademarkStatusChangedData.portfolios}.
|
|
976
|
+
*/
|
|
977
|
+
portfolios?: EventPortfolioRef[];
|
|
978
|
+
}
|
|
979
|
+
/**
|
|
980
|
+
* `office_action.issued` data at `payload_version` 2: the identity fields and
|
|
981
|
+
* the prosecution row itself as `trademark_event`, the same object
|
|
982
|
+
* `trademarks.events()` returns (`hst_` id, `raw {code, label}`,
|
|
983
|
+
* `nice_class`, `sequence_number`).
|
|
984
|
+
*/
|
|
985
|
+
export interface OfficeActionIssuedDataV2 {
|
|
986
|
+
/** Stable event ID; identical to the envelope id and the webhook-id header. */
|
|
987
|
+
event_id: string;
|
|
988
|
+
trademark_id: string;
|
|
989
|
+
office_code: string | null;
|
|
990
|
+
/** Designation jurisdiction (two letters); null for mark-level actions. */
|
|
991
|
+
jurisdiction_code: string | null;
|
|
992
|
+
/** When SIGNA produced this event (ISO-8601), never the office's date. */
|
|
993
|
+
occurred_at: string;
|
|
994
|
+
/** The office's date for the action (`YYYY-MM-DD`), equal to `trademark_event.event_date`. */
|
|
995
|
+
source_date: string | null;
|
|
996
|
+
trademark_event: TrademarkEvent;
|
|
997
|
+
/** Portfolios this mark was in when the event was recorded. See {@link EventPortfolioRef}. */
|
|
998
|
+
portfolios: EventPortfolioRef[];
|
|
999
|
+
}
|
|
1000
|
+
/** `office_action.issued` data, either version. Narrow on the envelope's `payload_version`. */
|
|
1001
|
+
export type OfficeActionIssuedData = OfficeActionIssuedDataV1 | OfficeActionIssuedDataV2;
|
|
1002
|
+
/**
|
|
1003
|
+
* An `office_action.issued` delivery. Every event keeps the version it was
|
|
1004
|
+
* stored with: automatic retries, `/redeliver` and `GET /v1/events/{id}` of a
|
|
1005
|
+
* v1 event stay v1, so handle both.
|
|
1006
|
+
*
|
|
1007
|
+
* ```typescript
|
|
1008
|
+
* if (event.payload_version === 2) handleRow(event.data.trademark_event);
|
|
1009
|
+
* else handleLegacy(event.data.event_code, event.data.sequence_no);
|
|
1010
|
+
* ```
|
|
1011
|
+
*/
|
|
1012
|
+
export type OfficeActionIssuedEvent = (Omit<WebhookEvent<OfficeActionIssuedDataV1>, 'type' | 'payload_version'> & {
|
|
1013
|
+
type: 'office_action.issued';
|
|
1014
|
+
payload_version: 1;
|
|
1015
|
+
}) | (Omit<WebhookEvent<OfficeActionIssuedDataV2>, 'type' | 'payload_version'> & {
|
|
1016
|
+
type: 'office_action.issued';
|
|
1017
|
+
payload_version: 2;
|
|
1018
|
+
});
|
|
833
1019
|
/** Webhook endpoint status. */
|
|
834
1020
|
export type WebhookStatus = 'active' | 'disabled';
|
|
835
1021
|
/**
|
|
@@ -854,6 +1040,13 @@ export interface Webhook {
|
|
|
854
1040
|
url: string;
|
|
855
1041
|
description: string | null;
|
|
856
1042
|
enabled_events: WebhookEventType[] | string[];
|
|
1043
|
+
/**
|
|
1044
|
+
* Optional portfolio scope (`ptf_*`). Applies to EVERY event type,
|
|
1045
|
+
* `alert.created` included: the endpoint receives an event only when its mark
|
|
1046
|
+
* was a member of this portfolio at the time the event was recorded. Null =
|
|
1047
|
+
* no scope; the endpoint receives everything it is subscribed to.
|
|
1048
|
+
*/
|
|
1049
|
+
portfolio_id: string | null;
|
|
857
1050
|
status: WebhookStatus;
|
|
858
1051
|
secret_version: number;
|
|
859
1052
|
consecutive_failures: number;
|
|
@@ -915,13 +1108,23 @@ export interface WatchPreviewResponse {
|
|
|
915
1108
|
estimated_match_count: number;
|
|
916
1109
|
trial_window_days: number;
|
|
917
1110
|
/**
|
|
918
|
-
* Present ONLY when `estimated_match_count` is an
|
|
919
|
-
*
|
|
920
|
-
*
|
|
921
|
-
*
|
|
922
|
-
*
|
|
1111
|
+
* Present ONLY when `estimated_match_count` is not an exact count.
|
|
1112
|
+
* `query_upper_bound`: the time budget ran out after the search but before
|
|
1113
|
+
* the change check; the count is the marks that matched `q` in the window,
|
|
1114
|
+
* so it can only be too high. `lower_bound`: the search timed out or lost a
|
|
1115
|
+
* shard, more than 10,000 marks matched `q` in the window, or the change
|
|
1116
|
+
* check timed out; the count is the verified matches (0 if none), so it can
|
|
1117
|
+
* only be too low. `candidacy_upper_bound`: a watch without a text query
|
|
1118
|
+
* could not be fully evaluated; the count is the changed marks in the
|
|
1119
|
+
* window. Absent = exact count.
|
|
923
1120
|
*/
|
|
924
|
-
estimate_basis?: 'candidacy_upper_bound';
|
|
1121
|
+
estimate_basis?: 'candidacy_upper_bound' | 'query_upper_bound' | 'lower_bound';
|
|
1122
|
+
/**
|
|
1123
|
+
* True when the preview did not finish: the time budget ran out, the search
|
|
1124
|
+
* timed out or lost a shard, or the results page could not be loaded (then
|
|
1125
|
+
* `results` is empty and `has_more` false, but the count stands).
|
|
1126
|
+
*/
|
|
1127
|
+
partial?: boolean;
|
|
925
1128
|
/**
|
|
926
1129
|
* A page of the actual matching trademarks in the canonical summary shape
|
|
927
1130
|
* (identical to `GET /v1/trademarks` results). Returned BY DEFAULT; omitted
|
|
@@ -1005,8 +1208,31 @@ export interface WatchDiagnostics {
|
|
|
1005
1208
|
alert_id: string | null;
|
|
1006
1209
|
opposition: {
|
|
1007
1210
|
must_act_by: string | null;
|
|
1211
|
+
/**
|
|
1212
|
+
* Stable opaque slug of the opposition rule cited for this mark (e.g.
|
|
1213
|
+
* `us_opposition`), and the join key to `GET /v1/opposition-rules`.
|
|
1214
|
+
* Opaque — do not parse it. Effectively always present when the
|
|
1215
|
+
* `opposition` block is present: an unmodeled office yields a null block
|
|
1216
|
+
* rather than a block with a null `rule_id`. It is still emitted when the
|
|
1217
|
+
* window could not be computed (`rule_source`/`rule_version` null), so a
|
|
1218
|
+
* degraded block stays joinable; that degraded path, with an empty rule
|
|
1219
|
+
* lookup, is the only way this is null.
|
|
1220
|
+
*/
|
|
1221
|
+
rule_id: string | null;
|
|
1008
1222
|
rule_source: string | null;
|
|
1009
1223
|
rule_version: string | null;
|
|
1224
|
+
/**
|
|
1225
|
+
* The window close recomputed at request time. May legitimately differ
|
|
1226
|
+
* from the frozen `must_act_by` (a later closure notice, a rule
|
|
1227
|
+
* correction, wider calendar coverage).
|
|
1228
|
+
*/
|
|
1229
|
+
recomputed_close: string | null;
|
|
1230
|
+
/**
|
|
1231
|
+
* Describes the SERVED date (`must_act_by`): the alert's frozen marker
|
|
1232
|
+
* when it carries one, otherwise `not_checked` when the two dates
|
|
1233
|
+
* disagree, otherwise the recomputed marker.
|
|
1234
|
+
*/
|
|
1235
|
+
close_adjustment: HolidayAdjustment | null;
|
|
1010
1236
|
window_status: WatchDiagnosticsWindowStatus | null;
|
|
1011
1237
|
} | null;
|
|
1012
1238
|
data_window: {
|
|
@@ -1030,12 +1256,32 @@ export interface WatchAttestationGap {
|
|
|
1030
1256
|
through: string;
|
|
1031
1257
|
/**
|
|
1032
1258
|
* `office_lagging` = coverage was stale beyond the office SLO for this
|
|
1033
|
-
* interval. `
|
|
1034
|
-
*
|
|
1259
|
+
* interval. `evaluation_missing` = no evaluation ran for the interval at all
|
|
1260
|
+
* although one should have (pause, credit lock, lease starvation, or no
|
|
1261
|
+
* evaluation evidence for longer than the continuity backstop).
|
|
1262
|
+
* `budget_declined` (ENG-286) = a specific office sync run was NOT evaluated
|
|
1263
|
+
* because it exceeded the evaluator's per-run change budget; later coverage
|
|
1264
|
+
* does not close it, only an audited re-drive or a recorded suppression does.
|
|
1265
|
+
* A budget-declined run is reported under `budget_declined` only, never also
|
|
1266
|
+
* as `evaluation_missing`. `evaluation_failed` is reserved (not emitted).
|
|
1267
|
+
*/
|
|
1268
|
+
reason: 'office_lagging' | 'evaluation_missing' | 'evaluation_failed' | 'budget_declined';
|
|
1269
|
+
/**
|
|
1270
|
+
* True once coverage caught back up within the period (`office_lagging`),
|
|
1271
|
+
* evaluation demonstrably resumed at the end of the interval
|
|
1272
|
+
* (`evaluation_missing`), or an operator closed the declined run within the
|
|
1273
|
+
* period (`budget_declined`). A resolution AFTER the period is deliberately
|
|
1274
|
+
* invisible, so a closed period's artifact never mutates.
|
|
1035
1275
|
*/
|
|
1036
|
-
reason: 'office_lagging' | 'evaluation_failed';
|
|
1037
|
-
/** True once coverage caught back up within the period. */
|
|
1038
1276
|
resolved: boolean;
|
|
1277
|
+
/** Present only on `budget_declined` gaps: the run that was not evaluated. */
|
|
1278
|
+
sync_run_id?: string;
|
|
1279
|
+
/**
|
|
1280
|
+
* Present only on a RESOLVED `budget_declined` gap. `redriven` = the run was
|
|
1281
|
+
* re-evaluated (the changes were eventually assessed); `suppressed` = an
|
|
1282
|
+
* operator recorded that it never will be. Not the same claim.
|
|
1283
|
+
*/
|
|
1284
|
+
resolution?: 'redriven' | 'suppressed';
|
|
1039
1285
|
}
|
|
1040
1286
|
/**
|
|
1041
1287
|
* Per-office attestation entry. `status: 'unsupported'` (an in-scope office
|
|
@@ -1061,6 +1307,12 @@ export interface WatchAttestationOffice {
|
|
|
1061
1307
|
coverage_through?: string | null;
|
|
1062
1308
|
coverage_basis?: 'source_dates' | 'date_range' | 'run_completed' | null;
|
|
1063
1309
|
gaps?: WatchAttestationGap[];
|
|
1310
|
+
/**
|
|
1311
|
+
* Every supported office (`no_evaluations` and `evaluated` alike): evaluation
|
|
1312
|
+
* resumed AFTER the period. A generation-time fact, excluded from
|
|
1313
|
+
* `content_hash` — the period's own gaps stay permanently unresolved.
|
|
1314
|
+
*/
|
|
1315
|
+
evaluation_resumed_after_period?: boolean;
|
|
1064
1316
|
}
|
|
1065
1317
|
/**
|
|
1066
1318
|
* The filable monthly proof-of-monitoring artifact. Deterministic for a closed
|
|
@@ -1103,6 +1355,14 @@ export interface WatchAttestation {
|
|
|
1103
1355
|
totals: {
|
|
1104
1356
|
evaluations: number;
|
|
1105
1357
|
alerts_emitted: number;
|
|
1358
|
+
/**
|
|
1359
|
+
* ENG-286 — office sync runs in the period that were DECLINED without
|
|
1360
|
+
* evaluation (per-run change budget). Each is disclosed as a
|
|
1361
|
+
* `budget_declined` gap on its office.
|
|
1362
|
+
*/
|
|
1363
|
+
declined_runs: number;
|
|
1364
|
+
/** Subset of `declined_runs` still outstanding at the end of the period. */
|
|
1365
|
+
declined_runs_unresolved: number;
|
|
1106
1366
|
};
|
|
1107
1367
|
reconciliation: 'consistent' | 'mismatch';
|
|
1108
1368
|
statement: string;
|
|
@@ -1140,20 +1400,83 @@ export interface OrgEvent {
|
|
|
1140
1400
|
id: string;
|
|
1141
1401
|
object: 'event';
|
|
1142
1402
|
type: string;
|
|
1143
|
-
trademark_id: string;
|
|
1144
|
-
office_code: string;
|
|
1403
|
+
trademark_id: string | null;
|
|
1404
|
+
office_code: string | null;
|
|
1405
|
+
/**
|
|
1406
|
+
* When SIGNA produced this event (ISO-8601). Its meaning is per family:
|
|
1407
|
+
* ingestion time for `trademark.*` and `office_action.*`, alert-creation time
|
|
1408
|
+
* for `alert.created`. It is never the office's own date — the detail bodies
|
|
1409
|
+
* carry that as `source_date`.
|
|
1410
|
+
*/
|
|
1411
|
+
occurred_at: string;
|
|
1412
|
+
recorded_at: string;
|
|
1145
1413
|
created_at: string;
|
|
1146
1414
|
}
|
|
1147
|
-
/**
|
|
1148
|
-
export interface
|
|
1415
|
+
/** Trademark-family event detail (with field-level before/after diffs). */
|
|
1416
|
+
export interface TrademarkOrgEventDetail extends OrgEvent {
|
|
1417
|
+
type: `trademark.${string}`;
|
|
1418
|
+
payload_version: number;
|
|
1419
|
+
trademark_id: string;
|
|
1149
1420
|
version: number;
|
|
1421
|
+
mark_text: string | null;
|
|
1422
|
+
status: string | null;
|
|
1423
|
+
status_stage: string;
|
|
1424
|
+
status_reason: string | null;
|
|
1425
|
+
owner_name: string | null;
|
|
1426
|
+
jurisdiction_code: string;
|
|
1427
|
+
/**
|
|
1428
|
+
* PUBLIC trademark-resource field names that changed — same vocabulary as
|
|
1429
|
+
* the `trademark.status_changed` webhook body (see
|
|
1430
|
+
* {@link TrademarkStatusChangedData.changed_fields}). Fields Signa tracks but
|
|
1431
|
+
* does not publish are omitted rather than renamed.
|
|
1432
|
+
*/
|
|
1150
1433
|
changed_fields: string[];
|
|
1434
|
+
/** Field-level diff keyed by the same public names as `changed_fields`. */
|
|
1151
1435
|
changes: Record<string, {
|
|
1152
1436
|
before: unknown;
|
|
1153
1437
|
after: unknown;
|
|
1154
1438
|
}>;
|
|
1439
|
+
/** Office-reported data date, day precision. See {@link TrademarkStatusChangedData.source_date}. */
|
|
1440
|
+
source_date?: string | null;
|
|
1441
|
+
/** Frozen membership snapshot. See {@link EventPortfolioRef}. */
|
|
1442
|
+
portfolios?: EventPortfolioRef[];
|
|
1443
|
+
request_id: string;
|
|
1444
|
+
}
|
|
1445
|
+
/** Alert-family event detail. Family-specific trademark fields are absent. */
|
|
1446
|
+
export interface AlertCreatedOrgEventDetail {
|
|
1447
|
+
id: string;
|
|
1448
|
+
object: 'event';
|
|
1449
|
+
type: 'alert.created';
|
|
1450
|
+
payload_version: number;
|
|
1451
|
+
alert_id: string;
|
|
1452
|
+
alert: Record<string, unknown>;
|
|
1453
|
+
office_code: null;
|
|
1454
|
+
occurred_at: string;
|
|
1455
|
+
recorded_at: string;
|
|
1456
|
+
created_at: string;
|
|
1155
1457
|
request_id: string;
|
|
1156
1458
|
}
|
|
1459
|
+
/**
|
|
1460
|
+
* Office-action event detail returned by the org event feed, in the version the
|
|
1461
|
+
* event was stored with: v1 flat fields, or v2 `trademark_event`.
|
|
1462
|
+
*/
|
|
1463
|
+
export type OfficeActionIssuedOrgEventDetail = OrgEvent & {
|
|
1464
|
+
type: 'office_action.issued';
|
|
1465
|
+
trademark_id: string;
|
|
1466
|
+
jurisdiction_code: string | null;
|
|
1467
|
+
/** Office-reported data date. See {@link OfficeActionIssuedDataV1.source_date}. */
|
|
1468
|
+
source_date?: string | null;
|
|
1469
|
+
/** Frozen membership snapshot. See {@link EventPortfolioRef}. */
|
|
1470
|
+
portfolios?: EventPortfolioRef[];
|
|
1471
|
+
request_id: string;
|
|
1472
|
+
} & (({
|
|
1473
|
+
payload_version: 1;
|
|
1474
|
+
} & Omit<OfficeActionIssuedDataV1, 'event_id' | 'trademark_id' | 'office_code' | 'jurisdiction_code' | 'occurred_at' | 'source_date' | 'portfolios'>) | {
|
|
1475
|
+
payload_version: 2;
|
|
1476
|
+
trademark_event: TrademarkEvent;
|
|
1477
|
+
});
|
|
1478
|
+
/** Org-level event detail, discriminated by event family. */
|
|
1479
|
+
export type OrgEventDetail = TrademarkOrgEventDetail | OfficeActionIssuedOrgEventDetail | AlertCreatedOrgEventDetail;
|
|
1157
1480
|
/** Identity (GET /v1/organization/me). */
|
|
1158
1481
|
export type Identity = components['schemas']['Identity'];
|
|
1159
1482
|
/** Usage (GET /v1/organization/usage). */
|
|
@@ -1178,6 +1501,18 @@ export type UsageSummaryResponse = components['schemas']['UsageSummaryResponse']
|
|
|
1178
1501
|
export type UsageSummaryItem = components['schemas']['UsageSummaryItem'];
|
|
1179
1502
|
/** Billing period context on a usage summary response. */
|
|
1180
1503
|
export type UsageBillingPeriod = components['schemas']['BillingPeriodContext'];
|
|
1504
|
+
/** Usage estimate response (GET /v1/organization/usage/estimate). */
|
|
1505
|
+
export type UsageEstimate = components['schemas']['UsageEstimate'];
|
|
1506
|
+
/** Per-action row of `UsageEstimate.by_action`. */
|
|
1507
|
+
export type UsageEstimateAction = components['schemas']['UsageEstimateAction'];
|
|
1508
|
+
/** Route the credit schedule does not recognize (`UsageEstimate.unmapped`). */
|
|
1509
|
+
export type UsageEstimateUnmapped = components['schemas']['UsageEstimateUnmapped'];
|
|
1510
|
+
/** Plan the estimated traffic lands on (`UsageEstimate.plan_for`). */
|
|
1511
|
+
export type UsageEstimatePlan = components['schemas']['UsageEstimatePlan'];
|
|
1512
|
+
/** Beta thank-you discount on that plan (`UsageEstimate.offer`). */
|
|
1513
|
+
export type UsageEstimateOffer = components['schemas']['UsageEstimateOffer'];
|
|
1514
|
+
/** Extra credits the landing plan needs: one whole-dollar purchase at the plan rate (`UsageEstimate.packs_needed`). */
|
|
1515
|
+
export type UsageEstimatePacks = components['schemas']['UsageEstimatePacks'];
|
|
1181
1516
|
/** Pooled credit balance response (GET /v1/organization/credits). */
|
|
1182
1517
|
export type CreditBalance = components['schemas']['CreditBalanceResponse'];
|
|
1183
1518
|
/** Remaining-credit breakdown by grant type on a credit balance response. */
|
|
@@ -1211,27 +1546,6 @@ export interface TrademarkDocument {
|
|
|
1211
1546
|
}
|
|
1212
1547
|
/** Owner related entity (GLEIF corporate hierarchy). */
|
|
1213
1548
|
export type OwnerRelated = components['schemas']['OwnerRelated'];
|
|
1214
|
-
/**
|
|
1215
|
-
* A `search_meta.warnings[]` element (mirror of the API spec). Two families
|
|
1216
|
-
* share this shape:
|
|
1217
|
-
* • strategy-skip warnings — a REQUESTED strategy produced zero clauses for
|
|
1218
|
-
* the query shape (e.g. `strategies=[phonetic]` on a query too short or
|
|
1219
|
-
* high-collision); carries `strategy`.
|
|
1220
|
-
* • filter-coverage warnings — an applied filter (e.g. `opposition_status`,
|
|
1221
|
-
* `seniority_claims`) has partial index coverage; carries `severity`,
|
|
1222
|
-
* `affected_filter`, `affected_offices`, `behavior`.
|
|
1223
|
-
*/
|
|
1224
|
-
export interface SearchWarning {
|
|
1225
|
-
code: string;
|
|
1226
|
-
message: string;
|
|
1227
|
-
strategy?: string;
|
|
1228
|
-
severity?: 'info' | 'warning';
|
|
1229
|
-
affected_filter?: string;
|
|
1230
|
-
/** WIPO ST.3 office codes (e.g. 'US', 'EM', 'WO') affected by the caveat. */
|
|
1231
|
-
affected_offices?: string[];
|
|
1232
|
-
behavior?: string;
|
|
1233
|
-
}
|
|
1234
|
-
/** Search metadata (V2 — timing, totals, strategy info). */
|
|
1235
1549
|
/**
|
|
1236
1550
|
* ENG-106 — how the query text is matched against the mark text.
|
|
1237
1551
|
* `similar` (default) runs the ranked strategies ladder (relevance scoring).
|
|
@@ -1241,41 +1555,26 @@ export interface SearchWarning {
|
|
|
1241
1555
|
* additionally needs a folded query of at least 3 characters.
|
|
1242
1556
|
*/
|
|
1243
1557
|
export type MatchMode = 'similar' | 'exact' | 'starts_with' | 'ends_with' | 'contains';
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
* (a REQUESTED strategy produced zero clauses for the query shape) and
|
|
1265
|
-
* filter-coverage warnings (an applied filter has partial index coverage).
|
|
1266
|
-
* Omitted when there is nothing to warn about.
|
|
1267
|
-
*/
|
|
1268
|
-
warnings?: SearchWarning[];
|
|
1269
|
-
/**
|
|
1270
|
-
* NOTE: the total matching-result count is NOT on `search_meta`. It surfaces
|
|
1271
|
-
* as `pagination.total_count` (+ `pagination.total_count_approximate`) when
|
|
1272
|
-
* the caller sets `options.include_total = true` — see
|
|
1273
|
-
* `SignaList.total_count`. The former `search_meta.total_results` /
|
|
1274
|
-
* `total_count_exact` / `total_count_approximate` fields were removed in the
|
|
1275
|
-
* ENG-14 beta break.
|
|
1276
|
-
*/
|
|
1277
|
-
execution_time_ms: number;
|
|
1278
|
-
}
|
|
1558
|
+
/**
|
|
1559
|
+
* Search metadata on trademark search and list responses.
|
|
1560
|
+
*
|
|
1561
|
+
* 0.14.0: `fallback_reason` is gone; every caveat is a coded entry in
|
|
1562
|
+
* `warnings[]` (e.g. `expanded_fallback` with `affected_filters`, or
|
|
1563
|
+
* `partial_results`). `index_generation` names the index that served the page;
|
|
1564
|
+
* cursors are bound to it, so a cursor from before an index rebuild returns
|
|
1565
|
+
* `400 cursor_invalid` and pagination restarts.
|
|
1566
|
+
*
|
|
1567
|
+
* The total matching-result count is NOT here: it is `pagination.total_count`
|
|
1568
|
+
* (`SignaList.total_count`) when the request sets `include_total`.
|
|
1569
|
+
*/
|
|
1570
|
+
export type SearchMeta = NonNullable<components['schemas']['SearchResponseV2']['search_meta']>;
|
|
1571
|
+
/**
|
|
1572
|
+
* A `search_meta.warnings[]` element: a stable `code` plus a human `message`,
|
|
1573
|
+
* and the code's own detail fields (`strategy`, `affected_filter(s)`,
|
|
1574
|
+
* `affected_offices`, `dropped_strategies`, ...). Keep a default branch: new
|
|
1575
|
+
* codes can appear.
|
|
1576
|
+
*/
|
|
1577
|
+
export type SearchWarning = NonNullable<SearchMeta['warnings']>[number];
|
|
1279
1578
|
/** API error body (RFC 9457-inspired). */
|
|
1280
1579
|
export interface APIErrorBody {
|
|
1281
1580
|
type: string;
|
|
@@ -1293,6 +1592,89 @@ export interface APIErrorBody {
|
|
|
1293
1592
|
retryable?: boolean;
|
|
1294
1593
|
/** Server-suggested seconds to wait before retrying (body-level mirror of the Retry-After header). */
|
|
1295
1594
|
retry_after?: number;
|
|
1595
|
+
/**
|
|
1596
|
+
* Human-readable remediation for this error — safe to surface to an end
|
|
1597
|
+
* user or an agent as the next step.
|
|
1598
|
+
*
|
|
1599
|
+
* OPTIONAL because the API does not emit it on every response: the server
|
|
1600
|
+
* backfills it from a per-slug map and otherwise sends nothing, so a 4xx
|
|
1601
|
+
* slug outside that map arrives WITHOUT a suggestion (5xx faults always
|
|
1602
|
+
* carry one — they fall back to the feedback-channel hint). Non-JSON
|
|
1603
|
+
* envelopes synthesized by the SDK for WAF/ALB responses never carry one
|
|
1604
|
+
* either. Always narrow before displaying.
|
|
1605
|
+
*/
|
|
1606
|
+
suggestion?: string;
|
|
1607
|
+
}
|
|
1608
|
+
/**
|
|
1609
|
+
* `409 external_ref_conflict` (ENG-342) — a portfolio membership's
|
|
1610
|
+
* `external_ref` cannot be bound as requested. Distinct from the generic
|
|
1611
|
+
* `conflict` slug because it is the ONE conflict a docketing integration can
|
|
1612
|
+
* resolve itself. Two causes, one slug:
|
|
1613
|
+
*
|
|
1614
|
+
* - the membership already carries a DIFFERENT non-null reference (references
|
|
1615
|
+
* are immutable once set — remove the mark and add it again to rebind), or
|
|
1616
|
+
* - the reference is already bound to a different mark in that portfolio.
|
|
1617
|
+
*
|
|
1618
|
+
* `detail` names the conflicting reference and may name the conflicting
|
|
1619
|
+
* `tm_*` id. The whole batch is rolled back. Narrow with
|
|
1620
|
+
* {@link isExternalRefConflict}.
|
|
1621
|
+
*/
|
|
1622
|
+
export interface ExternalRefConflictErrorBody extends APIErrorBody {
|
|
1623
|
+
type: 'external_ref_conflict';
|
|
1624
|
+
/**
|
|
1625
|
+
* Always present on this slug. The remedy differs per cause, so the text
|
|
1626
|
+
* names both and defers the specifics to `detail` (which says which one
|
|
1627
|
+
* fired and quotes the conflicting reference):
|
|
1628
|
+
*
|
|
1629
|
+
* > External references are unique within a portfolio and immutable once
|
|
1630
|
+
* > set. Choose a different `external_ref`, or remove the trademark from the
|
|
1631
|
+
* > portfolio and add it again to rebind.
|
|
1632
|
+
*/
|
|
1633
|
+
suggestion?: string;
|
|
1634
|
+
}
|
|
1635
|
+
/**
|
|
1636
|
+
* Which per-plan resource cap a `resource_quota_exceeded` refers to.
|
|
1637
|
+
*
|
|
1638
|
+
* `managed_marks` (ENG-342) is NOT a row count: it is the number of DISTINCT
|
|
1639
|
+
* trademarks across ALL of the organization's portfolios, so a mark filed in
|
|
1640
|
+
* three portfolios costs one. The others count rows.
|
|
1641
|
+
*/
|
|
1642
|
+
export type QuotaScope = 'managed_marks' | 'portfolios' | 'watches';
|
|
1643
|
+
/**
|
|
1644
|
+
* `409 resource_quota_exceeded` — the organization is at a per-plan RESOURCE
|
|
1645
|
+
* cap. Distinct from the `429 quota_exceeded` request counter: retrying does
|
|
1646
|
+
* not help, so `retryable` is `false`.
|
|
1647
|
+
*
|
|
1648
|
+
* Narrow with {@link isResourceQuotaExceeded}; the extras below are what a
|
|
1649
|
+
* client needs to decide how much of the batch to retry with, without parsing
|
|
1650
|
+
* `detail` prose.
|
|
1651
|
+
*/
|
|
1652
|
+
export interface ResourceQuotaExceededErrorBody extends APIErrorBody {
|
|
1653
|
+
type: 'resource_quota_exceeded';
|
|
1654
|
+
quota_scope: QuotaScope;
|
|
1655
|
+
/** The plan's cap for this scope. */
|
|
1656
|
+
quota_limit: number;
|
|
1657
|
+
/** How much of the cap is already consumed. */
|
|
1658
|
+
quota_used?: number;
|
|
1659
|
+
/**
|
|
1660
|
+
* How much this request would have ADDED. For `managed_marks` that is the
|
|
1661
|
+
* number of distinct candidate marks not already managed anywhere in the
|
|
1662
|
+
* organization — so re-adding marks you already manage costs nothing and
|
|
1663
|
+
* succeeds even at the cap.
|
|
1664
|
+
*/
|
|
1665
|
+
quota_attempted?: number;
|
|
1666
|
+
/**
|
|
1667
|
+
* Always present on this slug, and scope-specific. `managed_marks`
|
|
1668
|
+
* overrides the generic copy (which would read "Delete an existing
|
|
1669
|
+
* managed_mark") with the actual remedy:
|
|
1670
|
+
*
|
|
1671
|
+
* > Remove marks from portfolios or upgrade your plan.
|
|
1672
|
+
*
|
|
1673
|
+
* Other scopes fall back to the generic
|
|
1674
|
+
* "Delete an existing resource or upgrade your plan. See
|
|
1675
|
+
* https://docs.signa.so/api-reference/plans."
|
|
1676
|
+
*/
|
|
1677
|
+
suggestion?: string;
|
|
1296
1678
|
}
|
|
1297
1679
|
export type TrademarkSearchInclude = 'full_goods_services';
|
|
1298
1680
|
export type TrademarkDetailInclude = 'office_extensions';
|
|
@@ -1330,7 +1712,16 @@ export interface TrademarkRetrieveParams {
|
|
|
1330
1712
|
* `GET /v1/trademarks?aggregations=` and `POST /v1/trademarks` `options.aggregations`.
|
|
1331
1713
|
* Mirrors the server-side `AggregationEnum` and the generated OpenAPI enum.
|
|
1332
1714
|
*/
|
|
1333
|
-
export type TrademarkAggregationName = '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'
|
|
1715
|
+
export type TrademarkAggregationName = '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'
|
|
1716
|
+
/** `{ value }`: distinct owner records (per office) in the result set. */
|
|
1717
|
+
| 'owner_count'
|
|
1718
|
+
/**
|
|
1719
|
+
* `{ value }`: distinct parties across offices (resolved entities; an owner
|
|
1720
|
+
* not resolved yet counts once per office record). Use for crowding.
|
|
1721
|
+
*/
|
|
1722
|
+
| 'entity_count';
|
|
1723
|
+
/** How aggregation counts relate to filters (`aggregation_mode`). */
|
|
1724
|
+
export type TrademarkAggregationMode = 'filtered' | 'exclude_own_filter';
|
|
1334
1725
|
export interface TrademarkListParams {
|
|
1335
1726
|
/**
|
|
1336
1727
|
* Coarse status bucket. Accepts a single value or an array to match any of
|
|
@@ -1364,10 +1755,17 @@ export interface TrademarkListParams {
|
|
|
1364
1755
|
vienna_codes?: string | string[];
|
|
1365
1756
|
us_design_codes?: string | string[];
|
|
1366
1757
|
filing_basis?: string | string[];
|
|
1367
|
-
|
|
1758
|
+
/**
|
|
1759
|
+
* The office register (`register.type`), case-insensitive: `principal` or
|
|
1760
|
+
* `supplemental` (US), the CIPO register category (CA), ... Replaces
|
|
1761
|
+
* `us_register_type` (0.14.0).
|
|
1762
|
+
*/
|
|
1763
|
+
register_type?: string;
|
|
1368
1764
|
opposition_status?: OppositionStatus;
|
|
1369
|
-
|
|
1370
|
-
|
|
1765
|
+
/** Opposition window closes on or after this date (YYYY-MM-DD). Replaces `opposition_closes_after`. */
|
|
1766
|
+
opposition_closes_gte?: string;
|
|
1767
|
+
/** Opposition window closes on or before this date (YYYY-MM-DD). Replaces `opposition_closes_before`. */
|
|
1768
|
+
opposition_closes_lte?: string;
|
|
1371
1769
|
seniority_claims?: SeniorityClaims;
|
|
1372
1770
|
filing_date_gte?: string;
|
|
1373
1771
|
filing_date_gt?: string;
|
|
@@ -1413,6 +1811,15 @@ export interface TrademarkListParams {
|
|
|
1413
1811
|
updated_at_gt?: string;
|
|
1414
1812
|
updated_at_lte?: string;
|
|
1415
1813
|
updated_at_lt?: string;
|
|
1814
|
+
/**
|
|
1815
|
+
* When the mark family last changed. Grouped view only (a record-grain
|
|
1816
|
+
* request is a 400); pairs with `sort: 'family_updated_at'` for incremental
|
|
1817
|
+
* sync, which pages past 10,000 results on filter-only requests.
|
|
1818
|
+
*/
|
|
1819
|
+
family_updated_at_gte?: string;
|
|
1820
|
+
family_updated_at_gt?: string;
|
|
1821
|
+
family_updated_at_lte?: string;
|
|
1822
|
+
family_updated_at_lt?: string;
|
|
1416
1823
|
owner_id?: string;
|
|
1417
1824
|
owner_name?: string;
|
|
1418
1825
|
owner_publicly_traded?: boolean;
|
|
@@ -1421,9 +1828,9 @@ export interface TrademarkListParams {
|
|
|
1421
1828
|
owner_lei?: string;
|
|
1422
1829
|
/**
|
|
1423
1830
|
* PLN-118 — resolved-entity filter (`ent_*`). The GLOBAL-portfolio feature:
|
|
1424
|
-
* returns marks across ALL member owners of the entity (every office).
|
|
1425
|
-
*
|
|
1426
|
-
* `
|
|
1831
|
+
* returns marks across ALL member owners of the entity (every office). An
|
|
1832
|
+
* owner id in entity form (`ent_<owner-uuid>`) matches nothing (0.14.0); use
|
|
1833
|
+
* `owner_id` for a single owner.
|
|
1427
1834
|
*/
|
|
1428
1835
|
entity_id?: string;
|
|
1429
1836
|
/**
|
|
@@ -1444,6 +1851,8 @@ export interface TrademarkListParams {
|
|
|
1444
1851
|
q?: string;
|
|
1445
1852
|
/** ENG-67 — faceted bucket counts (TMview "Statistics view"). Field names to aggregate. */
|
|
1446
1853
|
aggregations?: TrademarkAggregationName[];
|
|
1854
|
+
/** `filtered` (default): aggregations respect every filter. `exclude_own_filter`: each aggregation ignores its own filter (drill-down sidebars). */
|
|
1855
|
+
aggregation_mode?: TrademarkAggregationMode;
|
|
1447
1856
|
/** ENG-67 — when true, return only aggregation counts (no result documents). */
|
|
1448
1857
|
aggregations_only?: boolean;
|
|
1449
1858
|
/** Search strategies to apply (e.g. 'exact', 'phonetic', 'fuzzy', 'prefix'). */
|
|
@@ -1459,6 +1868,17 @@ export interface TrademarkListParams {
|
|
|
1459
1868
|
match?: MatchMode;
|
|
1460
1869
|
/** ENG-106 — exclude marks whose text contains this substring (case/accent-insensitive). Composable with any match mode. */
|
|
1461
1870
|
mark_text_not_contains?: string;
|
|
1871
|
+
/**
|
|
1872
|
+
* Several exact terms in ONE request: every mark that is an exact match
|
|
1873
|
+
* under `match: 'exact'` rules (case, accents, punctuation and spacing) for
|
|
1874
|
+
* ANY of the terms. 1-200 terms. Implies
|
|
1875
|
+
* `match: 'exact'` and replaces `q`; each hit carries `matched_terms[]`.
|
|
1876
|
+
* One page costs the same as any search page regardless of term count.
|
|
1877
|
+
*
|
|
1878
|
+
* `list()` sends the terms comma-joined, so it rejects an empty array and
|
|
1879
|
+
* any term containing a comma. Use `search()` (POST) for such terms.
|
|
1880
|
+
*/
|
|
1881
|
+
q_any?: string[];
|
|
1462
1882
|
/** When true, include total_count in pagination (adds latency). */
|
|
1463
1883
|
include_total?: boolean;
|
|
1464
1884
|
/** When true, include match highlight spans. */
|
|
@@ -1471,7 +1891,8 @@ export interface TrademarkListParams {
|
|
|
1471
1891
|
fields?: string[];
|
|
1472
1892
|
goods_services_text?: string;
|
|
1473
1893
|
origin_office_code?: string;
|
|
1474
|
-
|
|
1894
|
+
/** Firm of record on the attorney rows (the name the office recorded). */
|
|
1895
|
+
attorney_firm_name?: string;
|
|
1475
1896
|
/**
|
|
1476
1897
|
* Sort spec. Prefix with `-` for descending. Comma-separated for multi-field.
|
|
1477
1898
|
* E.g. `-filing_date`, `registration_date`, `-filing_date,office_code`.
|
|
@@ -1499,6 +1920,8 @@ export interface TrademarkSuggestParams {
|
|
|
1499
1920
|
status_stage?: string | string[];
|
|
1500
1921
|
}
|
|
1501
1922
|
export interface TrademarkProceedingsParams {
|
|
1923
|
+
/** Only proceedings where this mark is the `contested` or was `asserted` by the opposer / petitioner. */
|
|
1924
|
+
trademark_role?: 'contested' | 'asserted';
|
|
1502
1925
|
proceeding_type?: string;
|
|
1503
1926
|
status?: string;
|
|
1504
1927
|
limit?: number;
|
|
@@ -1518,6 +1941,19 @@ export interface TrademarkDocumentParams {
|
|
|
1518
1941
|
limit?: number;
|
|
1519
1942
|
cursor?: string;
|
|
1520
1943
|
}
|
|
1944
|
+
/**
|
|
1945
|
+
* Query params for BOTH trademark citation sub-resources
|
|
1946
|
+
* (`trademarks.citations()` and `trademarks.citedBy()`). Sort is fixed
|
|
1947
|
+
* `-action_date, id` server-side — there is no `sort` param.
|
|
1948
|
+
*/
|
|
1949
|
+
export interface TrademarkCitationsParams {
|
|
1950
|
+
disposition?: CitationDisposition | CitationDisposition[];
|
|
1951
|
+
action_stage?: CitationActionStage | CitationActionStage[];
|
|
1952
|
+
limit?: number;
|
|
1953
|
+
cursor?: string;
|
|
1954
|
+
}
|
|
1955
|
+
/** Query params for `trademarks.citedBy()` — identical to `TrademarkCitationsParams`. */
|
|
1956
|
+
export type TrademarkCitedByParams = TrademarkCitationsParams;
|
|
1521
1957
|
export interface OwnerRelatedParams {
|
|
1522
1958
|
limit?: number;
|
|
1523
1959
|
cursor?: string;
|
|
@@ -1533,7 +1969,8 @@ export type EntityRetrieveParams = Record<string, never>;
|
|
|
1533
1969
|
export interface EntityListParams {
|
|
1534
1970
|
q?: string;
|
|
1535
1971
|
country_code?: string;
|
|
1536
|
-
entity_type
|
|
1972
|
+
/** The kind of legal person (the rows' `legal_form`). Replaces `entity_type` (0.14.0). */
|
|
1973
|
+
legal_form?: string;
|
|
1537
1974
|
publicly_traded?: boolean;
|
|
1538
1975
|
ticker?: string;
|
|
1539
1976
|
has_lei?: boolean;
|
|
@@ -1558,7 +1995,8 @@ export type EntityFamilyParams = Record<string, never>;
|
|
|
1558
1995
|
export interface OwnerListParams {
|
|
1559
1996
|
q?: string;
|
|
1560
1997
|
country_code?: string;
|
|
1561
|
-
entity_type
|
|
1998
|
+
/** The kind of legal person (the rows' `legal_form`). Replaces `entity_type` (0.14.0). */
|
|
1999
|
+
legal_form?: string;
|
|
1562
2000
|
ticker?: string;
|
|
1563
2001
|
lei?: string;
|
|
1564
2002
|
publicly_traded?: boolean;
|
|
@@ -1605,10 +2043,17 @@ export interface OwnerTrademarksParams {
|
|
|
1605
2043
|
vienna_codes?: string | string[];
|
|
1606
2044
|
us_design_codes?: string | string[];
|
|
1607
2045
|
filing_basis?: string | string[];
|
|
1608
|
-
|
|
2046
|
+
/**
|
|
2047
|
+
* The office register (`register.type`), case-insensitive: `principal` or
|
|
2048
|
+
* `supplemental` (US), the CIPO register category (CA), ... Replaces
|
|
2049
|
+
* `us_register_type` (0.14.0).
|
|
2050
|
+
*/
|
|
2051
|
+
register_type?: string;
|
|
1609
2052
|
opposition_status?: OppositionStatus;
|
|
1610
|
-
|
|
1611
|
-
|
|
2053
|
+
/** Opposition window closes on or after this date (YYYY-MM-DD). Replaces `opposition_closes_after`. */
|
|
2054
|
+
opposition_closes_gte?: string;
|
|
2055
|
+
/** Opposition window closes on or before this date (YYYY-MM-DD). Replaces `opposition_closes_before`. */
|
|
2056
|
+
opposition_closes_lte?: string;
|
|
1612
2057
|
seniority_claims?: SeniorityClaims;
|
|
1613
2058
|
filing_date_gte?: string;
|
|
1614
2059
|
filing_date_gt?: string;
|
|
@@ -1654,6 +2099,15 @@ export interface OwnerTrademarksParams {
|
|
|
1654
2099
|
updated_at_gt?: string;
|
|
1655
2100
|
updated_at_lte?: string;
|
|
1656
2101
|
updated_at_lt?: string;
|
|
2102
|
+
/**
|
|
2103
|
+
* When the mark family last changed. Grouped view only (a record-grain
|
|
2104
|
+
* request is a 400); pairs with `sort: 'family_updated_at'` for incremental
|
|
2105
|
+
* sync, which pages past 10,000 results on filter-only requests.
|
|
2106
|
+
*/
|
|
2107
|
+
family_updated_at_gte?: string;
|
|
2108
|
+
family_updated_at_gt?: string;
|
|
2109
|
+
family_updated_at_lte?: string;
|
|
2110
|
+
family_updated_at_lt?: string;
|
|
1657
2111
|
owner_name?: string;
|
|
1658
2112
|
owner_publicly_traded?: boolean;
|
|
1659
2113
|
owner_has_lei?: boolean;
|
|
@@ -1734,10 +2188,17 @@ export interface AttorneyTrademarksParams {
|
|
|
1734
2188
|
vienna_codes?: string | string[];
|
|
1735
2189
|
us_design_codes?: string | string[];
|
|
1736
2190
|
filing_basis?: string | string[];
|
|
1737
|
-
|
|
2191
|
+
/**
|
|
2192
|
+
* The office register (`register.type`), case-insensitive: `principal` or
|
|
2193
|
+
* `supplemental` (US), the CIPO register category (CA), ... Replaces
|
|
2194
|
+
* `us_register_type` (0.14.0).
|
|
2195
|
+
*/
|
|
2196
|
+
register_type?: string;
|
|
1738
2197
|
opposition_status?: OppositionStatus;
|
|
1739
|
-
|
|
1740
|
-
|
|
2198
|
+
/** Opposition window closes on or after this date (YYYY-MM-DD). Replaces `opposition_closes_after`. */
|
|
2199
|
+
opposition_closes_gte?: string;
|
|
2200
|
+
/** Opposition window closes on or before this date (YYYY-MM-DD). Replaces `opposition_closes_before`. */
|
|
2201
|
+
opposition_closes_lte?: string;
|
|
1741
2202
|
seniority_claims?: SeniorityClaims;
|
|
1742
2203
|
filing_date_gte?: string;
|
|
1743
2204
|
filing_date_gt?: string;
|
|
@@ -1783,6 +2244,15 @@ export interface AttorneyTrademarksParams {
|
|
|
1783
2244
|
updated_at_gt?: string;
|
|
1784
2245
|
updated_at_lte?: string;
|
|
1785
2246
|
updated_at_lt?: string;
|
|
2247
|
+
/**
|
|
2248
|
+
* When the mark family last changed. Grouped view only (a record-grain
|
|
2249
|
+
* request is a 400); pairs with `sort: 'family_updated_at'` for incremental
|
|
2250
|
+
* sync, which pages past 10,000 results on filter-only requests.
|
|
2251
|
+
*/
|
|
2252
|
+
family_updated_at_gte?: string;
|
|
2253
|
+
family_updated_at_gt?: string;
|
|
2254
|
+
family_updated_at_lte?: string;
|
|
2255
|
+
family_updated_at_lt?: string;
|
|
1786
2256
|
owner_name?: string;
|
|
1787
2257
|
owner_id?: string;
|
|
1788
2258
|
owner_publicly_traded?: boolean;
|
|
@@ -1869,10 +2339,17 @@ export interface FirmTrademarksParams {
|
|
|
1869
2339
|
vienna_codes?: string | string[];
|
|
1870
2340
|
us_design_codes?: string | string[];
|
|
1871
2341
|
filing_basis?: string | string[];
|
|
1872
|
-
|
|
2342
|
+
/**
|
|
2343
|
+
* The office register (`register.type`), case-insensitive: `principal` or
|
|
2344
|
+
* `supplemental` (US), the CIPO register category (CA), ... Replaces
|
|
2345
|
+
* `us_register_type` (0.14.0).
|
|
2346
|
+
*/
|
|
2347
|
+
register_type?: string;
|
|
1873
2348
|
opposition_status?: OppositionStatus;
|
|
1874
|
-
|
|
1875
|
-
|
|
2349
|
+
/** Opposition window closes on or after this date (YYYY-MM-DD). Replaces `opposition_closes_after`. */
|
|
2350
|
+
opposition_closes_gte?: string;
|
|
2351
|
+
/** Opposition window closes on or before this date (YYYY-MM-DD). Replaces `opposition_closes_before`. */
|
|
2352
|
+
opposition_closes_lte?: string;
|
|
1876
2353
|
seniority_claims?: SeniorityClaims;
|
|
1877
2354
|
filing_date_gte?: string;
|
|
1878
2355
|
filing_date_gt?: string;
|
|
@@ -1918,6 +2395,15 @@ export interface FirmTrademarksParams {
|
|
|
1918
2395
|
updated_at_gt?: string;
|
|
1919
2396
|
updated_at_lte?: string;
|
|
1920
2397
|
updated_at_lt?: string;
|
|
2398
|
+
/**
|
|
2399
|
+
* When the mark family last changed. Grouped view only (a record-grain
|
|
2400
|
+
* request is a 400); pairs with `sort: 'family_updated_at'` for incremental
|
|
2401
|
+
* sync, which pages past 10,000 results on filter-only requests.
|
|
2402
|
+
*/
|
|
2403
|
+
family_updated_at_gte?: string;
|
|
2404
|
+
family_updated_at_gt?: string;
|
|
2405
|
+
family_updated_at_lte?: string;
|
|
2406
|
+
family_updated_at_lt?: string;
|
|
1921
2407
|
owner_name?: string;
|
|
1922
2408
|
owner_id?: string;
|
|
1923
2409
|
owner_publicly_traded?: boolean;
|
|
@@ -1947,9 +2433,11 @@ export interface FirmTrademarksParams {
|
|
|
1947
2433
|
limit?: number;
|
|
1948
2434
|
cursor?: string;
|
|
1949
2435
|
}
|
|
1950
|
-
export type ProceedingAggregation = 'outcome' | 'party_role' | 'nice_class' | 'office_code' | 'filed_year';
|
|
2436
|
+
export type ProceedingAggregation = 'outcome' | 'party_role' | 'nice_class' | 'office_code' | 'filed_year' | 'trademark_role';
|
|
1951
2437
|
export interface ProceedingListParams {
|
|
1952
2438
|
trademark_id?: string;
|
|
2439
|
+
/** Which side the linked mark is on: `contested` (opposed / appealed) or `asserted` (pleaded by the opposer). */
|
|
2440
|
+
trademark_role?: 'contested' | 'asserted';
|
|
1953
2441
|
proceeding_type?: string;
|
|
1954
2442
|
status?: string;
|
|
1955
2443
|
q?: string;
|
|
@@ -1969,6 +2457,34 @@ export interface ProceedingListParams {
|
|
|
1969
2457
|
limit?: number;
|
|
1970
2458
|
cursor?: string;
|
|
1971
2459
|
}
|
|
2460
|
+
/** Query params for the cross-mark `GET /v1/citations`. */
|
|
2461
|
+
export interface CitationListParams {
|
|
2462
|
+
/**
|
|
2463
|
+
* Issuing office, one value or a list (`'US'` or `['US', 'EM']`, serialized
|
|
2464
|
+
* as `?offices=US,EM`). WIPO ST.3 uppercase (`US`); legacy acronym slugs
|
|
2465
|
+
* (`uspto`) and `EU` are also accepted. Unknown codes return an empty list.
|
|
2466
|
+
*/
|
|
2467
|
+
offices?: string | string[];
|
|
2468
|
+
disposition?: CitationDisposition | CitationDisposition[];
|
|
2469
|
+
action_stage?: CitationActionStage | CitationActionStage[];
|
|
2470
|
+
refusal_type?: CitationRefusalType | CitationRefusalType[];
|
|
2471
|
+
/** Filter by citing application (`tm_...`). */
|
|
2472
|
+
trademark_id?: string;
|
|
2473
|
+
/** Filter by cited mark (`tm_...`). */
|
|
2474
|
+
cited_trademark_id?: string;
|
|
2475
|
+
/**
|
|
2476
|
+
* Exact cited reference (digits; punctuation is ignored). Requires
|
|
2477
|
+
* `offices` — an office-less reference lookup is unindexable and 400s.
|
|
2478
|
+
*/
|
|
2479
|
+
cited_ref?: string;
|
|
2480
|
+
/** Office action date >= (YYYY-MM-DD). */
|
|
2481
|
+
action_date_gte?: string;
|
|
2482
|
+
/** Office action date <= (YYYY-MM-DD). */
|
|
2483
|
+
action_date_lte?: string;
|
|
2484
|
+
sort?: '-action_date' | 'action_date';
|
|
2485
|
+
limit?: number;
|
|
2486
|
+
cursor?: string;
|
|
2487
|
+
}
|
|
1972
2488
|
export type ConveyanceType = 'assignment' | 'security_interest' | 'release' | 'merger' | 'name_change' | 'license' | 'partial_assignment' | 'correction' | 'entity_conversion' | 'other';
|
|
1973
2489
|
export interface AssignmentListParams {
|
|
1974
2490
|
owner_id?: string;
|
|
@@ -2130,6 +2646,14 @@ export interface TrademarkSearchBody {
|
|
|
2130
2646
|
match?: MatchMode;
|
|
2131
2647
|
/** ENG-106 — exclude marks whose text contains this substring (case/accent-insensitive). Composable with any match mode. */
|
|
2132
2648
|
mark_text_not_contains?: string;
|
|
2649
|
+
/**
|
|
2650
|
+
* Several exact terms in ONE request: every mark that is an exact match
|
|
2651
|
+
* under `match: 'exact'` rules (case, accents, punctuation and spacing) for
|
|
2652
|
+
* ANY of the terms. 1-200 terms. Implies
|
|
2653
|
+
* `match: 'exact'` and replaces `query`; each hit carries `matched_terms[]`.
|
|
2654
|
+
* One page costs the same as any search page regardless of term count.
|
|
2655
|
+
*/
|
|
2656
|
+
q_any?: string[];
|
|
2133
2657
|
filters?: {
|
|
2134
2658
|
/**
|
|
2135
2659
|
* Coarse status bucket. Accepts a single value or an array to match any
|
|
@@ -2152,10 +2676,13 @@ export interface TrademarkSearchBody {
|
|
|
2152
2676
|
vienna_codes?: string[];
|
|
2153
2677
|
us_design_codes?: string[];
|
|
2154
2678
|
filing_basis?: string[];
|
|
2155
|
-
|
|
2679
|
+
/** The office register (`register.type`), case-insensitive. Replaces `us_register_type`. */
|
|
2680
|
+
register_type?: string;
|
|
2156
2681
|
opposition_status?: OppositionStatus;
|
|
2157
|
-
|
|
2158
|
-
|
|
2682
|
+
/** Replaces `opposition_closes_after`. */
|
|
2683
|
+
opposition_closes_gte?: string;
|
|
2684
|
+
/** Replaces `opposition_closes_before`. */
|
|
2685
|
+
opposition_closes_lte?: string;
|
|
2159
2686
|
seniority_claims?: SeniorityClaims;
|
|
2160
2687
|
goods_services_text?: string;
|
|
2161
2688
|
filing_date?: DateRangeFilter;
|
|
@@ -2169,6 +2696,8 @@ export interface TrademarkSearchBody {
|
|
|
2169
2696
|
first_use_in_commerce_date?: DateRangeFilter;
|
|
2170
2697
|
termination_date?: DateRangeFilter;
|
|
2171
2698
|
updated_at?: DateRangeFilter;
|
|
2699
|
+
/** When the mark family last changed (grouped view only). */
|
|
2700
|
+
family_updated_at?: DateRangeFilter;
|
|
2172
2701
|
owner_id?: string;
|
|
2173
2702
|
owner_name?: string;
|
|
2174
2703
|
owner_publicly_traded?: boolean;
|
|
@@ -2177,6 +2706,13 @@ export interface TrademarkSearchBody {
|
|
|
2177
2706
|
owner_lei?: string;
|
|
2178
2707
|
attorney_id?: string;
|
|
2179
2708
|
firm_id?: string;
|
|
2709
|
+
attorney_firm_name?: string;
|
|
2710
|
+
/** Resolved entity (`ent_*`); see {@link TrademarkListParams.entity_id}. */
|
|
2711
|
+
entity_id?: string;
|
|
2712
|
+
/** GLEIF family group (`ent_*`); see {@link TrademarkListParams.entity_group}. */
|
|
2713
|
+
entity_group?: string;
|
|
2714
|
+
/** Restrict to these trademark ids (`tm_*`). */
|
|
2715
|
+
trademark_ids?: string[];
|
|
2180
2716
|
application_number?: string;
|
|
2181
2717
|
registration_number?: string;
|
|
2182
2718
|
ir_number?: string;
|
|
@@ -2190,6 +2726,7 @@ export interface TrademarkSearchBody {
|
|
|
2190
2726
|
};
|
|
2191
2727
|
options?: {
|
|
2192
2728
|
aggregations?: TrademarkAggregationName[];
|
|
2729
|
+
aggregation_mode?: TrademarkAggregationMode;
|
|
2193
2730
|
aggregations_only?: boolean;
|
|
2194
2731
|
include_total?: boolean;
|
|
2195
2732
|
highlights?: boolean;
|
|
@@ -2218,10 +2755,6 @@ export interface TrademarkSearchBody {
|
|
|
2218
2755
|
* endpoint has been consolidated into `POST /v1/trademarks`.
|
|
2219
2756
|
*/
|
|
2220
2757
|
export type SearchV2Body = TrademarkSearchBody;
|
|
2221
|
-
export interface CrossEntitySuggestParams {
|
|
2222
|
-
q: string;
|
|
2223
|
-
type?: 'trademark' | 'owner' | 'attorney' | 'firm';
|
|
2224
|
-
}
|
|
2225
2758
|
/**
|
|
2226
2759
|
* Query parameters for `GET /v1/goods-services` (browse/search the accepted
|
|
2227
2760
|
* terms catalog). At least one of `q` or `class` must be provided.
|
|
@@ -2274,42 +2807,99 @@ export interface PortfolioListParams {
|
|
|
2274
2807
|
export interface PortfolioRetrieveParams {
|
|
2275
2808
|
limit?: number;
|
|
2276
2809
|
cursor?: string;
|
|
2810
|
+
/**
|
|
2811
|
+
* Restrict the embedded trademarks list to the membership carrying this
|
|
2812
|
+
* external reference (ENG-342). References are unique within a portfolio,
|
|
2813
|
+
* so this returns at most one row. Compared with case-sensitive byte
|
|
2814
|
+
* equality after trimming.
|
|
2815
|
+
*/
|
|
2816
|
+
external_ref?: string;
|
|
2277
2817
|
}
|
|
2278
|
-
|
|
2279
|
-
|
|
2818
|
+
/** One entry of the `items` form of {@link PortfolioAddTrademarksBody}. */
|
|
2819
|
+
export interface PortfolioAddTrademarkItem {
|
|
2820
|
+
/** Prefixed trademark id (`tm_*`). */
|
|
2821
|
+
trademark_id: string;
|
|
2822
|
+
/**
|
|
2823
|
+
* Your own docketing reference for this membership (1-255 chars). Unique
|
|
2824
|
+
* within the portfolio, compared with case-sensitive byte equality after
|
|
2825
|
+
* trimming.
|
|
2826
|
+
*
|
|
2827
|
+
* **Immutable once set**: binding a different reference to a trademark that
|
|
2828
|
+
* already carries one is a `409 external_ref_conflict` — remove the mark and
|
|
2829
|
+
* add it again to rebind. Attaching a reference to a membership that has
|
|
2830
|
+
* none is allowed. Reusing a reference already bound to a DIFFERENT mark in
|
|
2831
|
+
* the same portfolio is the same 409.
|
|
2832
|
+
*/
|
|
2833
|
+
external_ref?: string;
|
|
2280
2834
|
}
|
|
2281
|
-
|
|
2835
|
+
/**
|
|
2836
|
+
* Body of `portfolios.addTrademarks()`. Supply EXACTLY ONE of `trademark_ids`
|
|
2837
|
+
* or `items` — the `?: never` members make a body carrying both a compile-time
|
|
2838
|
+
* error, and the API rejects it with a `400 validation_error`.
|
|
2839
|
+
*
|
|
2840
|
+
* The two forms differ in how they treat duplicates, deliberately: see the
|
|
2841
|
+
* per-field docs below.
|
|
2842
|
+
*
|
|
2843
|
+
* Both forms are capped at 100 entries per request. That ceiling is physical,
|
|
2844
|
+
* not a policy dial — the edge WAF caps request bodies at 8 KB.
|
|
2845
|
+
*
|
|
2846
|
+
* Any 409 (`external_ref_conflict`, or the `resource_quota_exceeded`
|
|
2847
|
+
* managed-marks cap) rolls the WHOLE batch back. Unknown ids stay lenient and
|
|
2848
|
+
* are counted under `not_found`.
|
|
2849
|
+
*/
|
|
2850
|
+
export type PortfolioAddTrademarksBody = {
|
|
2851
|
+
/**
|
|
2852
|
+
* Trademark ids to add (1-100). **LENIENT on duplicates**: a repeated id
|
|
2853
|
+
* is silently deduplicated, and every membership is created with
|
|
2854
|
+
* `external_ref: null`.
|
|
2855
|
+
*/
|
|
2282
2856
|
trademark_ids: string[];
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2857
|
+
items?: never;
|
|
2858
|
+
} | {
|
|
2859
|
+
/**
|
|
2860
|
+
* Trademarks to add, each optionally carrying an `external_ref` (1-100).
|
|
2861
|
+
* **STRICT on duplicates**: a repeated `trademark_id`, or a repeated
|
|
2862
|
+
* `external_ref`, is a `400 validation_error` raised BEFORE any write —
|
|
2863
|
+
* an explicit request that binds one mark to two references has no
|
|
2864
|
+
* defensible resolution.
|
|
2865
|
+
*/
|
|
2866
|
+
items: PortfolioAddTrademarkItem[];
|
|
2867
|
+
trademark_ids?: never;
|
|
2868
|
+
};
|
|
2869
|
+
/**
|
|
2870
|
+
* Body of `portfolios.removeTrademarks()`. Supply EXACTLY ONE of
|
|
2871
|
+
* `trademark_ids` or `external_refs` — a body carrying both is a compile-time
|
|
2872
|
+
* error here and a `400 validation_error` at the API.
|
|
2873
|
+
*/
|
|
2874
|
+
export type PortfolioRemoveTrademarksBody = {
|
|
2875
|
+
/**
|
|
2876
|
+
* Trademark ids to remove (1-100). Duplicates are silently deduplicated;
|
|
2877
|
+
* ids that are not in the portfolio simply match nothing.
|
|
2878
|
+
*/
|
|
2879
|
+
trademark_ids: string[];
|
|
2880
|
+
external_refs?: never;
|
|
2881
|
+
} | {
|
|
2882
|
+
/**
|
|
2883
|
+
* External references to remove (1-100), for callers that only know
|
|
2884
|
+
* their own docketing key (ENG-342). Duplicates are silently
|
|
2885
|
+
* deduplicated; references that match no membership match nothing.
|
|
2886
|
+
*/
|
|
2887
|
+
external_refs: string[];
|
|
2888
|
+
trademark_ids?: never;
|
|
2889
|
+
};
|
|
2890
|
+
/**
|
|
2891
|
+
* Query parameters for `GET /v1/portfolios/{id}/deadlines`.
|
|
2892
|
+
*
|
|
2893
|
+
* Derived from the spec, like the sibling {@link DeadlineListParams}: this used
|
|
2894
|
+
* to be hand-written with `type?: string`, which stopped mirroring the contract
|
|
2895
|
+
* once the route closed `type` to the deadline-type enum. `due_before` is an
|
|
2896
|
+
* inclusive ISO 8601 `YYYY-MM-DD` cutoff; omitting it lets the API apply its
|
|
2897
|
+
* own horizon (720 days after the computation date).
|
|
2898
|
+
*/
|
|
2899
|
+
export type PortfolioDeadlineParams = NonNullable<operations['listPortfolioDeadlines']['parameters']['query']>;
|
|
2290
2900
|
export interface PortfolioDeadlinesIcalParams {
|
|
2291
2901
|
reminder_days?: string;
|
|
2292
2902
|
}
|
|
2293
|
-
export interface SavedSearchCreateParams {
|
|
2294
|
-
name: string;
|
|
2295
|
-
description?: string;
|
|
2296
|
-
query: Record<string, unknown>;
|
|
2297
|
-
metadata?: Record<string, string>;
|
|
2298
|
-
}
|
|
2299
|
-
export interface SavedSearchUpdateParams {
|
|
2300
|
-
name?: string;
|
|
2301
|
-
description?: string | null;
|
|
2302
|
-
query?: Record<string, unknown>;
|
|
2303
|
-
metadata?: Record<string, string | null>;
|
|
2304
|
-
}
|
|
2305
|
-
export interface SavedSearchListParams {
|
|
2306
|
-
limit?: number;
|
|
2307
|
-
cursor?: string;
|
|
2308
|
-
}
|
|
2309
|
-
export interface SavedSearchExecuteParams {
|
|
2310
|
-
limit?: number;
|
|
2311
|
-
cursor?: string;
|
|
2312
|
-
}
|
|
2313
2903
|
/** Feedback type discriminator. */
|
|
2314
2904
|
export type FeedbackType = 'data_issue' | 'bug' | 'feature_request' | 'other';
|
|
2315
2905
|
/** Feedback lifecycle status. */
|
|
@@ -2365,14 +2955,11 @@ export interface FeedbackListParams {
|
|
|
2365
2955
|
}
|
|
2366
2956
|
/**
|
|
2367
2957
|
* Body for `watches.create(...)`.
|
|
2368
|
-
*
|
|
2369
|
-
* Either `query` or `from_saved_search` (passed via the second-arg
|
|
2370
|
-
* `RequestOptions`-style query — see `WatchCreateOptions`) must be set.
|
|
2371
2958
|
*/
|
|
2372
2959
|
export interface WatchCreateParams {
|
|
2373
2960
|
name: string;
|
|
2374
2961
|
watch_type: WatchType;
|
|
2375
|
-
/** v1 watch query DSL.
|
|
2962
|
+
/** v1 watch query DSL. */
|
|
2376
2963
|
query?: WatchQuery | Record<string, unknown>;
|
|
2377
2964
|
/**
|
|
2378
2965
|
* v1 accepts only `'always_per_alert'` — the API rejects the digest modes
|
|
@@ -2388,18 +2975,6 @@ export interface WatchCreateParams {
|
|
|
2388
2975
|
customer_reference?: string | null;
|
|
2389
2976
|
metadata?: Record<string, unknown>;
|
|
2390
2977
|
}
|
|
2391
|
-
/**
|
|
2392
|
-
* Optional query string params for `watches.create(...)`. Pass via the
|
|
2393
|
-
* SDK's `?from_saved_search=ssr_...` query string.
|
|
2394
|
-
*
|
|
2395
|
-
* Note: `backfill_days` was removed — the server rejects it with 400
|
|
2396
|
-
* (`unsupported_in_v1`). Historical replay-from-date arrives in v1.1; in
|
|
2397
|
-
* v1 only future sync_runs trigger evaluation.
|
|
2398
|
-
*/
|
|
2399
|
-
export interface WatchCreateQueryParams {
|
|
2400
|
-
/** Hydrate `query` from a saved search id (`ssr_...`). */
|
|
2401
|
-
from_saved_search?: string;
|
|
2402
|
-
}
|
|
2403
2978
|
export interface WatchUpdateParams {
|
|
2404
2979
|
name?: string;
|
|
2405
2980
|
query?: WatchQuery | Record<string, unknown>;
|
|
@@ -2467,13 +3042,20 @@ export interface AlertLookupParams {
|
|
|
2467
3042
|
export interface WebhookCreateParams {
|
|
2468
3043
|
url: string;
|
|
2469
3044
|
description?: string;
|
|
3045
|
+
/**
|
|
3046
|
+
* Subscribable types only: `alert.created`, `trademark.status_changed`,
|
|
3047
|
+
* `office_action.issued`. The last two are accepted now but not yet emitted.
|
|
3048
|
+
*/
|
|
2470
3049
|
enabled_events: Array<WebhookEventType | string>;
|
|
3050
|
+
/** Portfolio scope, applied to every event type. See {@link Webhook.portfolio_id}. */
|
|
3051
|
+
portfolio_id?: string | null;
|
|
2471
3052
|
metadata?: Record<string, unknown>;
|
|
2472
3053
|
}
|
|
2473
3054
|
export interface WebhookUpdateParams {
|
|
2474
3055
|
url?: string;
|
|
2475
3056
|
description?: string | null;
|
|
2476
3057
|
enabled_events?: Array<WebhookEventType | string>;
|
|
3058
|
+
portfolio_id?: string | null;
|
|
2477
3059
|
status?: WebhookStatus;
|
|
2478
3060
|
metadata?: Record<string, unknown>;
|
|
2479
3061
|
}
|
|
@@ -2498,6 +3080,15 @@ export interface OrgEventListParams {
|
|
|
2498
3080
|
office_code?: string | string[];
|
|
2499
3081
|
trademark_id?: string;
|
|
2500
3082
|
since?: string;
|
|
3083
|
+
sort?: '-id' | 'id';
|
|
3084
|
+
after?: string;
|
|
3085
|
+
/**
|
|
3086
|
+
* `ptf_*` portfolio filter. Strict across EVERY family, `alert.created`
|
|
3087
|
+
* included: an event matches only when its mark was a member of the
|
|
3088
|
+
* portfolio at the time the event was recorded. Requires the
|
|
3089
|
+
* `portfolios:manage` scope in addition to `events:read`.
|
|
3090
|
+
*/
|
|
3091
|
+
portfolio_id?: string;
|
|
2501
3092
|
cursor?: string;
|
|
2502
3093
|
limit?: number;
|
|
2503
3094
|
}
|
|
@@ -2539,7 +3130,7 @@ export interface LogListParams {
|
|
|
2539
3130
|
method?: string;
|
|
2540
3131
|
/** Filter by API key ID (key_...). */
|
|
2541
3132
|
api_key_id?: string;
|
|
2542
|
-
/** Filter by endpoint type (
|
|
3133
|
+
/** Filter by endpoint type (analytics, class_lookup, class_suggest, compare, compute, fees_estimate, gs_draft, gs_validate, image_search, listing_screening, market_analytics, mcp, monitoring, read, reconcile, reference, rules_lookup, screening, search, utility, write). Historical rows may carry a type the API no longer writes. */
|
|
2543
3134
|
endpoint_type?: string;
|
|
2544
3135
|
/** Case-insensitive substring match against path or request ID. */
|
|
2545
3136
|
search?: string;
|
|
@@ -2557,6 +3148,16 @@ export interface UsageSummaryParams {
|
|
|
2557
3148
|
/** Restrict summary to a specific endpoint type. */
|
|
2558
3149
|
endpoint_type?: string;
|
|
2559
3150
|
}
|
|
3151
|
+
/**
|
|
3152
|
+
* Query params for `GET /v1/organization/usage/estimate`. Omit both for the
|
|
3153
|
+
* last 30 days; give both to price a specific window.
|
|
3154
|
+
*/
|
|
3155
|
+
export interface UsageEstimateParams {
|
|
3156
|
+
/** Start of the window (YYYY-MM-DD). Required with `to`. */
|
|
3157
|
+
from?: string;
|
|
3158
|
+
/** End of the window (YYYY-MM-DD), inclusive. Required with `from`. */
|
|
3159
|
+
to?: string;
|
|
3160
|
+
}
|
|
2560
3161
|
/** Shared `GET /v1/screening` options (everything except the candidate). */
|
|
2561
3162
|
export interface ScreenOptions {
|
|
2562
3163
|
/** Intended Nice class numbers (1-45). */
|
|
@@ -2836,7 +3437,52 @@ export type CompareConflict = {
|
|
|
2836
3437
|
status?: 'active' | 'pending' | 'inactive' | 'unknown';
|
|
2837
3438
|
};
|
|
2838
3439
|
/** A compare batch contains at least one and at most ten conflicts. */
|
|
2839
|
-
export type CompareConflicts = [CompareConflict] | [CompareConflict, CompareConflict] | [CompareConflict, CompareConflict, CompareConflict] | [CompareConflict, CompareConflict, CompareConflict, CompareConflict] | [CompareConflict, CompareConflict, CompareConflict, CompareConflict, CompareConflict] | [
|
|
3440
|
+
export type CompareConflicts = [CompareConflict] | [CompareConflict, CompareConflict] | [CompareConflict, CompareConflict, CompareConflict] | [CompareConflict, CompareConflict, CompareConflict, CompareConflict] | [CompareConflict, CompareConflict, CompareConflict, CompareConflict, CompareConflict] | [
|
|
3441
|
+
CompareConflict,
|
|
3442
|
+
CompareConflict,
|
|
3443
|
+
CompareConflict,
|
|
3444
|
+
CompareConflict,
|
|
3445
|
+
CompareConflict,
|
|
3446
|
+
CompareConflict
|
|
3447
|
+
] | [
|
|
3448
|
+
CompareConflict,
|
|
3449
|
+
CompareConflict,
|
|
3450
|
+
CompareConflict,
|
|
3451
|
+
CompareConflict,
|
|
3452
|
+
CompareConflict,
|
|
3453
|
+
CompareConflict,
|
|
3454
|
+
CompareConflict
|
|
3455
|
+
] | [
|
|
3456
|
+
CompareConflict,
|
|
3457
|
+
CompareConflict,
|
|
3458
|
+
CompareConflict,
|
|
3459
|
+
CompareConflict,
|
|
3460
|
+
CompareConflict,
|
|
3461
|
+
CompareConflict,
|
|
3462
|
+
CompareConflict,
|
|
3463
|
+
CompareConflict
|
|
3464
|
+
] | [
|
|
3465
|
+
CompareConflict,
|
|
3466
|
+
CompareConflict,
|
|
3467
|
+
CompareConflict,
|
|
3468
|
+
CompareConflict,
|
|
3469
|
+
CompareConflict,
|
|
3470
|
+
CompareConflict,
|
|
3471
|
+
CompareConflict,
|
|
3472
|
+
CompareConflict,
|
|
3473
|
+
CompareConflict
|
|
3474
|
+
] | [
|
|
3475
|
+
CompareConflict,
|
|
3476
|
+
CompareConflict,
|
|
3477
|
+
CompareConflict,
|
|
3478
|
+
CompareConflict,
|
|
3479
|
+
CompareConflict,
|
|
3480
|
+
CompareConflict,
|
|
3481
|
+
CompareConflict,
|
|
3482
|
+
CompareConflict,
|
|
3483
|
+
CompareConflict,
|
|
3484
|
+
CompareConflict
|
|
3485
|
+
];
|
|
2840
3486
|
/** `POST /v1/compare` request body. `conflicts` accepts 1-10 items. */
|
|
2841
3487
|
export interface CompareParams {
|
|
2842
3488
|
candidate: CompareCandidate;
|
|
@@ -3170,7 +3816,7 @@ export interface ListResponseBody<T> {
|
|
|
3170
3816
|
request_id: string;
|
|
3171
3817
|
search_meta?: SearchMeta;
|
|
3172
3818
|
source_sync?: TrademarkDocumentSourceSync;
|
|
3173
|
-
/** Faceted aggregation buckets (V2 search
|
|
3819
|
+
/** Faceted aggregation buckets (V2 search results). */
|
|
3174
3820
|
aggregations?: Record<string, Record<string, number>>;
|
|
3175
3821
|
/**
|
|
3176
3822
|
* TSK-127 — display-name labels for aggregation bucket keys, shaped
|
|
@@ -3179,35 +3825,15 @@ export interface ListResponseBody<T> {
|
|
|
3179
3825
|
* human-readable bucket labels without a follow-up lookup.
|
|
3180
3826
|
*/
|
|
3181
3827
|
aggregation_metadata?: Record<string, Record<string, string>>;
|
|
3828
|
+
/**
|
|
3829
|
+
* Deadline lists only (`GET /v1/deadlines`, `GET /v1/portfolios/{id}/deadlines`):
|
|
3830
|
+
* marks in scope that could not be fully computed. An array on the first page,
|
|
3831
|
+
* `null` on continuation pages.
|
|
3832
|
+
*/
|
|
3833
|
+
unsupported_marks?: DeadlineUnsupportedMark[] | null;
|
|
3182
3834
|
}
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
code: string;
|
|
3186
|
-
total_marks: number;
|
|
3187
|
-
registered_count: number;
|
|
3188
|
-
pending_count: number;
|
|
3189
|
-
expired_count: number;
|
|
3190
|
-
cancelled_count: number;
|
|
3191
|
-
abandoned_count: number;
|
|
3192
|
-
registration_rate: number | null;
|
|
3193
|
-
jurisdiction_count: number;
|
|
3194
|
-
earliest_filing: string | null;
|
|
3195
|
-
latest_filing: string | null;
|
|
3196
|
-
top_classes: Array<{
|
|
3197
|
-
class: number;
|
|
3198
|
-
count: number;
|
|
3199
|
-
pct: number;
|
|
3200
|
-
}> | null;
|
|
3201
|
-
yearly_trend: Array<{
|
|
3202
|
-
year: number;
|
|
3203
|
-
filed: number;
|
|
3204
|
-
registered: number;
|
|
3205
|
-
abandoned: number;
|
|
3206
|
-
}> | null;
|
|
3207
|
-
stats_computed_at: string;
|
|
3208
|
-
/** Per-request id echoed at the top level of the response body (`*Response` in the OpenAPI spec). */
|
|
3209
|
-
request_id: string;
|
|
3210
|
-
}
|
|
3835
|
+
/** `GET /v1/analytics/offices/{code}`. */
|
|
3836
|
+
export type OfficeAnalytics = components['schemas']['OfficeAnalyticsResponse'];
|
|
3211
3837
|
export interface MarketAnalytics {
|
|
3212
3838
|
object: 'market_analytics';
|
|
3213
3839
|
total_marks: number;
|
|
@@ -3236,4 +3862,7 @@ export interface ClassificationAnalytics {
|
|
|
3236
3862
|
/** Per-request id echoed at the top level of the response body (`*Response` in the OpenAPI spec). */
|
|
3237
3863
|
request_id: string;
|
|
3238
3864
|
}
|
|
3865
|
+
/** Published credit prices, including the schedule version. */
|
|
3866
|
+
export type CreditPrice = components['schemas']['CreditPrice'];
|
|
3867
|
+
export type CreditPricingResponse = components['schemas']['CreditPricingResponse'];
|
|
3239
3868
|
//# sourceMappingURL=types.d.ts.map
|