@signa-so/sdk 0.2.2 → 0.7.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 +22 -14
- package/dist/_internals/fetch-with-retry.d.ts.map +1 -1
- package/dist/_internals/fetch-with-retry.js +11 -3
- package/dist/_internals/fetch-with-retry.js.map +1 -1
- package/dist/_internals/query-string.d.ts +5 -4
- package/dist/_internals/query-string.d.ts.map +1 -1
- package/dist/_internals/query-string.js +6 -14
- package/dist/_internals/query-string.js.map +1 -1
- package/dist/category-nice.d.ts +22 -0
- package/dist/category-nice.d.ts.map +1 -0
- package/dist/category-nice.js +109 -0
- package/dist/category-nice.js.map +1 -0
- package/dist/client.d.ts +80 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +110 -13
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +10 -1
- package/dist/errors.js.map +1 -1
- package/dist/generated/api-types.d.ts +9700 -2920
- package/dist/generated/api-types.d.ts.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +24 -2
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +28 -1
- package/dist/pagination.js.map +1 -1
- package/dist/resources/alerts.d.ts +18 -13
- package/dist/resources/alerts.d.ts.map +1 -1
- package/dist/resources/alerts.js +28 -20
- package/dist/resources/alerts.js.map +1 -1
- package/dist/resources/analytics.d.ts +8 -0
- package/dist/resources/analytics.d.ts.map +1 -0
- package/dist/resources/analytics.js +13 -0
- package/dist/resources/analytics.js.map +1 -0
- package/dist/resources/assignments.d.ts +25 -0
- package/dist/resources/assignments.d.ts.map +1 -0
- package/dist/resources/assignments.js +33 -0
- package/dist/resources/assignments.js.map +1 -0
- package/dist/resources/attorneys.d.ts +7 -3
- package/dist/resources/attorneys.d.ts.map +1 -1
- package/dist/resources/attorneys.js +10 -5
- package/dist/resources/attorneys.js.map +1 -1
- package/dist/resources/compare.d.ts +29 -0
- package/dist/resources/compare.d.ts.map +1 -0
- package/dist/resources/compare.js +30 -0
- package/dist/resources/compare.js.map +1 -0
- package/dist/resources/deadlines.d.ts +24 -0
- package/dist/resources/deadlines.d.ts.map +1 -0
- package/dist/resources/deadlines.js +26 -0
- package/dist/resources/deadlines.js.map +1 -0
- package/dist/resources/entities.d.ts +53 -0
- package/dist/resources/entities.d.ts.map +1 -0
- package/dist/resources/entities.js +74 -0
- package/dist/resources/entities.js.map +1 -0
- package/dist/resources/events.d.ts +2 -2
- package/dist/resources/events.d.ts.map +1 -1
- package/dist/resources/events.js +2 -2
- package/dist/resources/events.js.map +1 -1
- package/dist/resources/feedback.d.ts +19 -0
- package/dist/resources/feedback.d.ts.map +1 -0
- package/dist/resources/feedback.js +29 -0
- package/dist/resources/feedback.js.map +1 -0
- package/dist/resources/firms.d.ts +7 -6
- package/dist/resources/firms.d.ts.map +1 -1
- package/dist/resources/firms.js +9 -5
- package/dist/resources/firms.js.map +1 -1
- package/dist/resources/goods-services.d.ts +56 -0
- package/dist/resources/goods-services.d.ts.map +1 -0
- package/dist/resources/goods-services.js +60 -0
- package/dist/resources/goods-services.js.map +1 -0
- package/dist/resources/oppositions.d.ts +18 -0
- package/dist/resources/oppositions.d.ts.map +1 -0
- package/dist/resources/oppositions.js +20 -0
- package/dist/resources/oppositions.js.map +1 -0
- package/dist/resources/organization.d.ts +56 -0
- package/dist/resources/organization.d.ts.map +1 -0
- package/dist/resources/organization.js +89 -0
- package/dist/resources/organization.js.map +1 -0
- package/dist/resources/owners.d.ts +7 -3
- package/dist/resources/owners.d.ts.map +1 -1
- package/dist/resources/owners.js +10 -5
- package/dist/resources/owners.js.map +1 -1
- package/dist/resources/portfolios.d.ts +3 -3
- package/dist/resources/portfolios.d.ts.map +1 -1
- package/dist/resources/portfolios.js +4 -4
- package/dist/resources/portfolios.js.map +1 -1
- package/dist/resources/proceedings.d.ts +1 -1
- package/dist/resources/proceedings.js +1 -1
- package/dist/resources/reconcile.d.ts +22 -0
- package/dist/resources/reconcile.d.ts.map +1 -0
- package/dist/resources/reconcile.js +24 -0
- package/dist/resources/reconcile.js.map +1 -0
- package/dist/resources/references.d.ts +51 -12
- package/dist/resources/references.d.ts.map +1 -1
- package/dist/resources/references.js +33 -15
- package/dist/resources/references.js.map +1 -1
- package/dist/resources/screening.d.ts +63 -0
- package/dist/resources/screening.d.ts.map +1 -0
- package/dist/resources/screening.js +66 -0
- package/dist/resources/screening.js.map +1 -0
- package/dist/resources/suggest.d.ts +16 -0
- package/dist/resources/suggest.d.ts.map +1 -0
- package/dist/resources/suggest.js +18 -0
- package/dist/resources/suggest.js.map +1 -0
- package/dist/resources/trademarks.d.ts +82 -6
- package/dist/resources/trademarks.d.ts.map +1 -1
- package/dist/resources/trademarks.js +132 -5
- package/dist/resources/trademarks.js.map +1 -1
- package/dist/resources/watches.d.ts +68 -9
- package/dist/resources/watches.d.ts.map +1 -1
- package/dist/resources/watches.js +111 -12
- package/dist/resources/watches.js.map +1 -1
- package/dist/resources/webhooks.d.ts +57 -0
- package/dist/resources/webhooks.d.ts.map +1 -0
- package/dist/resources/webhooks.js +86 -0
- package/dist/resources/webhooks.js.map +1 -0
- package/dist/types.d.ts +2781 -239
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webhooks.d.ts +57 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +76 -0
- package/dist/webhooks.js.map +1 -0
- package/package.json +9 -3
- package/dist/resources/platform.d.ts +0 -29
- package/dist/resources/platform.d.ts.map +0 -1
- package/dist/resources/platform.js +0 -50
- package/dist/resources/platform.js.map +0 -1
- package/dist/resources/search.d.ts +0 -27
- package/dist/resources/search.d.ts.map +0 -1
- package/dist/resources/search.js +0 -36
- package/dist/resources/search.js.map +0 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { BaseResource } from '../resource.js';
|
|
2
|
+
/**
|
|
3
|
+
* Screening operations — PUBLIC beta (requires the `screening:read` scope,
|
|
4
|
+
* granted to design partners during beta).
|
|
5
|
+
*
|
|
6
|
+
* Public exposure of the single-name screening surface was authorized by the
|
|
7
|
+
* founder's 2026-07-10 public-beta decision. `checkListing` is the listing-check
|
|
8
|
+
* surface (ENG-30): extract candidate marks from commerce text and fan them out
|
|
9
|
+
* through the screening core.
|
|
10
|
+
*/
|
|
11
|
+
export class Screening extends BaseResource {
|
|
12
|
+
/**
|
|
13
|
+
* Screen a single candidate name — `GET /v1/screening`.
|
|
14
|
+
*
|
|
15
|
+
* PUBLIC beta. Requires the `screening:read` scope, granted to design partners
|
|
16
|
+
* during beta. Returns coarse risk bands and a verdict, never a numeric score.
|
|
17
|
+
* Billed at 10 units per request. Not legal advice.
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const result = await signa.screening.screen({
|
|
21
|
+
* q: 'KOFEE',
|
|
22
|
+
* nice_classes: [30, 43],
|
|
23
|
+
* jurisdictions: ['US', 'EU'],
|
|
24
|
+
* });
|
|
25
|
+
* // result.screening.verdict → 'clear' | 'caution' | 'needs_review' | 'high_risk'
|
|
26
|
+
* ```
|
|
27
|
+
* `needs_review` is a would-be `clear` the screen could not complete to `clear`
|
|
28
|
+
* standard, most often incomplete register coverage for a requested territory
|
|
29
|
+
* but also a stale corpus, capped horizon, failed lane, unsupported language,
|
|
30
|
+
* or low-confidence class inference. Inspect `result.screening.coverage` for the
|
|
31
|
+
* details when present (it can be absent if the coverage assessment failed).
|
|
32
|
+
* Pass `trademark_id` instead of `q` to screen an existing register record;
|
|
33
|
+
* its own collapsed family is excluded from the returned conflicts.
|
|
34
|
+
*/
|
|
35
|
+
async screen(params, options) {
|
|
36
|
+
return this._get('/v1/screening', { ...params }, options);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Screen a whole LISTING — `POST /v1/screening/listings`.
|
|
40
|
+
*
|
|
41
|
+
* Deterministic + synchronous. Extracts candidate marks from `title` / `brand`
|
|
42
|
+
* / `description` / `keywords`, fans them out through the screening core, and
|
|
43
|
+
* returns a listing-level verdict with per-candidate conflicts. Billed flat at
|
|
44
|
+
* 25 units per listing regardless of internal fan-out. Not legal advice.
|
|
45
|
+
* Beta limitation: common-word listings are over-flagged, so treat `caution`
|
|
46
|
+
* as no-signal pending the ENG-199 verdict-separation redesign.
|
|
47
|
+
* Supply `nice_classes` whenever possible: caller-provided classes are the only
|
|
48
|
+
* high-quality class signal that may corroborate a conflict upward. If your
|
|
49
|
+
* platform has only a category label, derive them explicitly with
|
|
50
|
+
* `categoryToNiceClasses(category)` from `@signa-so/sdk`.
|
|
51
|
+
*
|
|
52
|
+
* ```typescript
|
|
53
|
+
* import { categoryToNiceClasses } from '@signa-so/sdk';
|
|
54
|
+
*
|
|
55
|
+
* const result = await signa.screening.checkListing({
|
|
56
|
+
* title: 'Vintage AirPods Case — Handmade Leather',
|
|
57
|
+
* nice_classes: categoryToNiceClasses('handbags'),
|
|
58
|
+
* });
|
|
59
|
+
* // result.listing.verdict → 'clear' | 'caution' | 'high_risk'
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
async checkListing(params, options) {
|
|
63
|
+
return this._post('/v1/screening/listings', params, options);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=screening.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screening.js","sourceRoot":"","sources":["../../src/resources/screening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IACzC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,MAAM,CAAC,MAAoB,EAAE,OAAwB;QACzD,OAAO,IAAI,CAAC,IAAI,CAAe,eAAe,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,YAAY,CAChB,MAA0B,EAC1B,OAAwB;QAExB,OAAO,IAAI,CAAC,KAAK,CAAqB,wBAAwB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseResource } from '../resource.js';
|
|
2
|
+
import { type SignaList } from '../pagination.js';
|
|
3
|
+
import type { CrossEntitySuggestion, CrossEntitySuggestParams, RequestOptions } from '../types.js';
|
|
4
|
+
export declare class Suggest extends BaseResource {
|
|
5
|
+
/**
|
|
6
|
+
* Cross-entity typeahead across trademarks, owners, attorneys, and firms.
|
|
7
|
+
*
|
|
8
|
+
* Scope: `trademarks:read`.
|
|
9
|
+
*
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const suggestions = await signa.suggest.crossEntity({ q: 'apple' });
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
crossEntity(params: CrossEntitySuggestParams, options?: RequestOptions): Promise<SignaList<CrossEntitySuggestion>>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/resources/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,qBAAa,OAAQ,SAAQ,YAAY;IACvC;;;;;;;;OAQG;IACG,WAAW,CACf,MAAM,EAAE,wBAAwB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;CAU7C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseResource } from '../resource.js';
|
|
2
|
+
import { createList } from '../pagination.js';
|
|
3
|
+
export class Suggest extends BaseResource {
|
|
4
|
+
/**
|
|
5
|
+
* Cross-entity typeahead across trademarks, owners, attorneys, and firms.
|
|
6
|
+
*
|
|
7
|
+
* Scope: `trademarks:read`.
|
|
8
|
+
*
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const suggestions = await signa.suggest.crossEntity({ q: 'apple' });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
async crossEntity(params, options) {
|
|
14
|
+
const response = await this._getListResponse('/v1/suggest', params, options);
|
|
15
|
+
return createList({ ...response, has_more: false }, () => Promise.resolve({ ...response, data: [], has_more: false }));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=suggest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/resources/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAO9D,MAAM,OAAO,OAAQ,SAAQ,YAAY;IACvC;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CACf,MAAgC,EAChC,OAAwB;QAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,aAAa,EACb,MAA4C,EAC5C,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CACvD,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,29 +1,100 @@
|
|
|
1
1
|
import { BaseResource } from '../resource.js';
|
|
2
2
|
import { type SignaList } from '../pagination.js';
|
|
3
|
-
import type { Trademark, TrademarkSummary, Event, TrademarkRetrieveParams, TrademarkListParams, TrademarkHistoryParams, TrademarkBatchBody, TrademarkBatchResponse, TrademarkChangesParams, TrademarkChange, TrademarkRelatedParams, TrademarkRelationship, TrademarkCoverageParams, TrademarkCoverage, TrademarkProceedingsParams, TrademarkProceeding, TrademarkSource, TrademarkSuggestParams, TrademarkSuggestion, RequestOptions } from '../types.js';
|
|
3
|
+
import type { Trademark, TrademarkSummary, TrademarkSearchResult, Event, TrademarkRetrieveParams, TrademarkListParams, TrademarkSearchBody, TrademarkHistoryParams, TrademarkBatchBody, TrademarkBatchResponse, TrademarkChangesParams, TrademarkChange, TrademarkRelatedParams, TrademarkRelationship, TrademarkCoverageParams, TrademarkCoverage, TrademarkProceedingsParams, TrademarkProceeding, TrademarkAssignmentsParams, TrademarkAssignment, TrademarkDocumentParams, TrademarkDocument, TrademarkSource, TrademarkSuggestParams, TrademarkSuggestion, TrademarkImageSearchParams, ImageSearchResults, RequestOptions } from '../types.js';
|
|
4
|
+
type TrademarkWithOwners = {
|
|
5
|
+
owners?: Array<{
|
|
6
|
+
name?: string | null;
|
|
7
|
+
}> | null;
|
|
8
|
+
};
|
|
9
|
+
export declare function primaryOwnerName(trademark: TrademarkWithOwners): string | null;
|
|
4
10
|
export declare class Trademarks extends BaseResource {
|
|
5
11
|
/**
|
|
6
12
|
* Retrieve a single trademark by ID.
|
|
7
13
|
*
|
|
14
|
+
* The full detail tier (owners, classifications, attorneys, media,
|
|
15
|
+
* priorities, proceedings, Madrid coverage) is always returned inline.
|
|
16
|
+
* Pass `include: ['office_extensions']` to add the raw office-specific
|
|
17
|
+
* extension blob (omitted by default). Pass `language` to prefer matching
|
|
18
|
+
* goods/services classification variants without filtering unmatched groups.
|
|
19
|
+
*
|
|
8
20
|
* ```typescript
|
|
9
21
|
* const tm = await signa.trademarks.retrieve('tm_abc123');
|
|
10
|
-
* const tm = await signa.trademarks.retrieve('tm_abc123', { include: ['
|
|
22
|
+
* const tm = await signa.trademarks.retrieve('tm_abc123', { include: ['office_extensions'] });
|
|
23
|
+
* const tm = await signa.trademarks.retrieve('tm_abc123', { language: 'en' });
|
|
11
24
|
* ```
|
|
12
25
|
*/
|
|
13
26
|
retrieve(id: string, params?: TrademarkRetrieveParams, options?: RequestOptions): Promise<Trademark>;
|
|
14
27
|
/**
|
|
15
|
-
* List trademarks with filters. At least one filter is required.
|
|
28
|
+
* List trademarks with filters via GET. At least one filter or `q` query is required.
|
|
16
29
|
* Returns a SignaList supporting auto-pagination.
|
|
17
30
|
*
|
|
31
|
+
* Now supports text search via `q`, sorting via `sort`, and search options
|
|
32
|
+
* like `strategies`, `include_total`, `highlights`, and `include_timing`.
|
|
33
|
+
*
|
|
18
34
|
* ```typescript
|
|
19
|
-
*
|
|
35
|
+
* // Filter-only (sorted by -filing_date by default)
|
|
36
|
+
* const page = await signa.trademarks.list({ jurisdictions: ['US'], status_primary: 'active' });
|
|
37
|
+
*
|
|
38
|
+
* // Text search with filters
|
|
39
|
+
* const results = await signa.trademarks.list({ q: 'SIGNA', jurisdictions: ['US'] });
|
|
20
40
|
*
|
|
21
|
-
*
|
|
41
|
+
* // Explicit sort
|
|
42
|
+
* const sorted = await signa.trademarks.list({ offices: ['US'], sort: '-registration_date' });
|
|
43
|
+
*
|
|
44
|
+
* // Auto-pagination
|
|
45
|
+
* for await (const tm of signa.trademarks.list({ jurisdictions: ['US'] })) {
|
|
22
46
|
* console.log(tm.mark_text);
|
|
23
47
|
* }
|
|
24
48
|
* ```
|
|
25
49
|
*/
|
|
26
50
|
list(params?: TrademarkListParams, options?: RequestOptions): Promise<SignaList<TrademarkSummary>>;
|
|
51
|
+
/**
|
|
52
|
+
* Search trademarks via POST with a JSON body. Use this for complex queries
|
|
53
|
+
* with structured filters, aggregations, strategies, or ranking profiles.
|
|
54
|
+
*
|
|
55
|
+
* This replaces the old `signa.search.query()` method. The endpoint is
|
|
56
|
+
* `POST /v1/trademarks` (the old `/v1/trademarks/search` is deprecated).
|
|
57
|
+
*
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const results = await signa.trademarks.search({
|
|
60
|
+
* query: 'SIGNA',
|
|
61
|
+
* strategies: ['exact', 'phonetic'],
|
|
62
|
+
* filters: { jurisdictions: ['US'], nice_classes: [9, 42] },
|
|
63
|
+
* options: { aggregations: ['status_stage', 'office_code'] },
|
|
64
|
+
* });
|
|
65
|
+
* console.log(results.aggregations);
|
|
66
|
+
* console.log(results.search_meta);
|
|
67
|
+
*
|
|
68
|
+
* // Filter-only POST (no text query)
|
|
69
|
+
* const filtered = await signa.trademarks.search({
|
|
70
|
+
* filters: { offices: ['US'], status_primary: 'active' },
|
|
71
|
+
* sort: '-filing_date',
|
|
72
|
+
* options: { include_total: true },
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
search(params: TrademarkSearchBody, options?: RequestOptions): Promise<SignaList<TrademarkSearchResult>>;
|
|
77
|
+
/**
|
|
78
|
+
* Search trademarks by logo/image similarity (beta, internal). Requires the
|
|
79
|
+
* `image-search:read` scope. Provide EXACTLY ONE image source:
|
|
80
|
+
* - `image`: raw bytes (multipart upload — Blob / ArrayBuffer / Uint8Array)
|
|
81
|
+
* - `image_url`: an https URL (fetched + SSRF-guarded server-side)
|
|
82
|
+
* - `media_id`: an existing mark's media id (reuses its stored vector)
|
|
83
|
+
*
|
|
84
|
+
* Returns mark-level hits, each with the §3.5 signal channels + a
|
|
85
|
+
* `thumbnail_url`. Results are a bounded top-K (limit ≤ 100, not paginable).
|
|
86
|
+
*
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const bytes = await fs.readFile('logo.png');
|
|
89
|
+
* const res = await signa.trademarks.searchByImage({
|
|
90
|
+
* image: bytes,
|
|
91
|
+
* filters: { offices: ['US'], nice_classes: [9] },
|
|
92
|
+
* channels: ['visual', 'exact_dup'],
|
|
93
|
+
* });
|
|
94
|
+
* for (const hit of res.data) console.log(hit.trademark.mark_text, hit.band);
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
searchByImage(params: TrademarkImageSearchParams, options?: RequestOptions): Promise<ImageSearchResults>;
|
|
27
98
|
/**
|
|
28
99
|
* List event history for a trademark.
|
|
29
100
|
*
|
|
@@ -39,7 +110,7 @@ export declare class Trademarks extends BaseResource {
|
|
|
39
110
|
* ```typescript
|
|
40
111
|
* const result = await signa.trademarks.batch({ ids: ['tm_abc', 'tm_def'] });
|
|
41
112
|
* const result = await signa.trademarks.batch({
|
|
42
|
-
* identifiers: [{ application_number: '97123456', office: '
|
|
113
|
+
* identifiers: [{ application_number: '97123456', office: 'US' }],
|
|
43
114
|
* });
|
|
44
115
|
* ```
|
|
45
116
|
*/
|
|
@@ -74,7 +145,12 @@ export declare class Trademarks extends BaseResource {
|
|
|
74
145
|
coverage(id: string, params?: TrademarkCoverageParams, options?: RequestOptions): Promise<SignaList<TrademarkCoverage>>;
|
|
75
146
|
/** Proceedings (oppositions, cancellations) linked to a trademark. */
|
|
76
147
|
proceedings(id: string, params?: TrademarkProceedingsParams, options?: RequestOptions): Promise<SignaList<TrademarkProceeding>>;
|
|
148
|
+
/** Recorded assignment chain of title linked to a trademark. */
|
|
149
|
+
assignments(id: string, params?: TrademarkAssignmentsParams, options?: RequestOptions): Promise<SignaList<TrademarkAssignment>>;
|
|
150
|
+
/** Office documents linked to a trademark. */
|
|
151
|
+
documents(id: string, params?: TrademarkDocumentParams, options?: RequestOptions): Promise<SignaList<TrademarkDocument>>;
|
|
77
152
|
/** Get the redirect URL for a trademark media asset (image, sound, etc). */
|
|
78
153
|
media(id: string, mediaId: string, options?: RequestOptions): Promise<string>;
|
|
79
154
|
}
|
|
155
|
+
export {};
|
|
80
156
|
//# sourceMappingURL=trademarks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trademarks.d.ts","sourceRoot":"","sources":["../../src/resources/trademarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"trademarks.d.ts","sourceRoot":"","sources":["../../src/resources/trademarks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { BaseResource } from '../resource.js';
|
|
2
2
|
import { createList } from '../pagination.js';
|
|
3
|
+
export function primaryOwnerName(trademark) {
|
|
4
|
+
return trademark.owners?.[0]?.name ?? null;
|
|
5
|
+
}
|
|
3
6
|
export class Trademarks extends BaseResource {
|
|
4
7
|
/**
|
|
5
8
|
* Retrieve a single trademark by ID.
|
|
6
9
|
*
|
|
10
|
+
* The full detail tier (owners, classifications, attorneys, media,
|
|
11
|
+
* priorities, proceedings, Madrid coverage) is always returned inline.
|
|
12
|
+
* Pass `include: ['office_extensions']` to add the raw office-specific
|
|
13
|
+
* extension blob (omitted by default). Pass `language` to prefer matching
|
|
14
|
+
* goods/services classification variants without filtering unmatched groups.
|
|
15
|
+
*
|
|
7
16
|
* ```typescript
|
|
8
17
|
* const tm = await signa.trademarks.retrieve('tm_abc123');
|
|
9
|
-
* const tm = await signa.trademarks.retrieve('tm_abc123', { include: ['
|
|
18
|
+
* const tm = await signa.trademarks.retrieve('tm_abc123', { include: ['office_extensions'] });
|
|
19
|
+
* const tm = await signa.trademarks.retrieve('tm_abc123', { language: 'en' });
|
|
10
20
|
* ```
|
|
11
21
|
*/
|
|
12
22
|
async retrieve(id, params, options) {
|
|
@@ -14,16 +24,28 @@ export class Trademarks extends BaseResource {
|
|
|
14
24
|
return this._get(`/v1/trademarks/${encodeURIComponent(id)}`, {
|
|
15
25
|
include: params?.include,
|
|
16
26
|
fields: params?.fields,
|
|
27
|
+
language: params?.language,
|
|
17
28
|
}, options);
|
|
18
29
|
}
|
|
19
30
|
/**
|
|
20
|
-
* List trademarks with filters. At least one filter is required.
|
|
31
|
+
* List trademarks with filters via GET. At least one filter or `q` query is required.
|
|
21
32
|
* Returns a SignaList supporting auto-pagination.
|
|
22
33
|
*
|
|
34
|
+
* Now supports text search via `q`, sorting via `sort`, and search options
|
|
35
|
+
* like `strategies`, `include_total`, `highlights`, and `include_timing`.
|
|
36
|
+
*
|
|
23
37
|
* ```typescript
|
|
24
|
-
*
|
|
38
|
+
* // Filter-only (sorted by -filing_date by default)
|
|
39
|
+
* const page = await signa.trademarks.list({ jurisdictions: ['US'], status_primary: 'active' });
|
|
40
|
+
*
|
|
41
|
+
* // Text search with filters
|
|
42
|
+
* const results = await signa.trademarks.list({ q: 'SIGNA', jurisdictions: ['US'] });
|
|
25
43
|
*
|
|
26
|
-
*
|
|
44
|
+
* // Explicit sort
|
|
45
|
+
* const sorted = await signa.trademarks.list({ offices: ['US'], sort: '-registration_date' });
|
|
46
|
+
*
|
|
47
|
+
* // Auto-pagination
|
|
48
|
+
* for await (const tm of signa.trademarks.list({ jurisdictions: ['US'] })) {
|
|
27
49
|
* console.log(tm.mark_text);
|
|
28
50
|
* }
|
|
29
51
|
* ```
|
|
@@ -35,6 +57,99 @@ export class Trademarks extends BaseResource {
|
|
|
35
57
|
const firstPage = await fetchPage(params?.cursor);
|
|
36
58
|
return createList(firstPage, fetchPage);
|
|
37
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Search trademarks via POST with a JSON body. Use this for complex queries
|
|
62
|
+
* with structured filters, aggregations, strategies, or ranking profiles.
|
|
63
|
+
*
|
|
64
|
+
* This replaces the old `signa.search.query()` method. The endpoint is
|
|
65
|
+
* `POST /v1/trademarks` (the old `/v1/trademarks/search` is deprecated).
|
|
66
|
+
*
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const results = await signa.trademarks.search({
|
|
69
|
+
* query: 'SIGNA',
|
|
70
|
+
* strategies: ['exact', 'phonetic'],
|
|
71
|
+
* filters: { jurisdictions: ['US'], nice_classes: [9, 42] },
|
|
72
|
+
* options: { aggregations: ['status_stage', 'office_code'] },
|
|
73
|
+
* });
|
|
74
|
+
* console.log(results.aggregations);
|
|
75
|
+
* console.log(results.search_meta);
|
|
76
|
+
*
|
|
77
|
+
* // Filter-only POST (no text query)
|
|
78
|
+
* const filtered = await signa.trademarks.search({
|
|
79
|
+
* filters: { offices: ['US'], status_primary: 'active' },
|
|
80
|
+
* sort: '-filing_date',
|
|
81
|
+
* options: { include_total: true },
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
async search(params, options) {
|
|
86
|
+
const body = { ...params };
|
|
87
|
+
const response = await this._post('/v1/trademarks', body, options);
|
|
88
|
+
return createList(response, async (cursor) => {
|
|
89
|
+
const nextBody = { ...params, cursor };
|
|
90
|
+
return this._post('/v1/trademarks', nextBody, options);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Search trademarks by logo/image similarity (beta, internal). Requires the
|
|
95
|
+
* `image-search:read` scope. Provide EXACTLY ONE image source:
|
|
96
|
+
* - `image`: raw bytes (multipart upload — Blob / ArrayBuffer / Uint8Array)
|
|
97
|
+
* - `image_url`: an https URL (fetched + SSRF-guarded server-side)
|
|
98
|
+
* - `media_id`: an existing mark's media id (reuses its stored vector)
|
|
99
|
+
*
|
|
100
|
+
* Returns mark-level hits, each with the §3.5 signal channels + a
|
|
101
|
+
* `thumbnail_url`. Results are a bounded top-K (limit ≤ 100, not paginable).
|
|
102
|
+
*
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const bytes = await fs.readFile('logo.png');
|
|
105
|
+
* const res = await signa.trademarks.searchByImage({
|
|
106
|
+
* image: bytes,
|
|
107
|
+
* filters: { offices: ['US'], nice_classes: [9] },
|
|
108
|
+
* channels: ['visual', 'exact_dup'],
|
|
109
|
+
* });
|
|
110
|
+
* for (const hit of res.data) console.log(hit.trademark.mark_text, hit.band);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
async searchByImage(params, options) {
|
|
114
|
+
const { image, image_filename, image_url, media_id, filters, territory_match, crop, limit, channels } = params;
|
|
115
|
+
if (image !== undefined) {
|
|
116
|
+
// Multipart upload — the file part plus JSON-encoded scalars/objects.
|
|
117
|
+
const form = new FormData();
|
|
118
|
+
const blob = image instanceof Blob
|
|
119
|
+
? image
|
|
120
|
+
: new Blob([(image instanceof Uint8Array ? image : new Uint8Array(image)).slice()]);
|
|
121
|
+
form.append('image', blob, image_filename ?? 'image');
|
|
122
|
+
if (filters !== undefined)
|
|
123
|
+
form.append('filters', JSON.stringify(filters));
|
|
124
|
+
// territory_match is a plain enum string on the multipart transport (not JSON-encoded).
|
|
125
|
+
if (territory_match !== undefined)
|
|
126
|
+
form.append('territory_match', territory_match);
|
|
127
|
+
if (crop !== undefined)
|
|
128
|
+
form.append('crop', JSON.stringify(crop));
|
|
129
|
+
if (channels !== undefined)
|
|
130
|
+
form.append('channels', JSON.stringify(channels));
|
|
131
|
+
if (limit !== undefined)
|
|
132
|
+
form.append('limit', String(limit));
|
|
133
|
+
return this._post('/v1/trademarks/search/image', form, options);
|
|
134
|
+
}
|
|
135
|
+
// JSON body — image_url or media_id.
|
|
136
|
+
const body = {};
|
|
137
|
+
if (image_url !== undefined)
|
|
138
|
+
body.image_url = image_url;
|
|
139
|
+
if (media_id !== undefined)
|
|
140
|
+
body.media_id = media_id;
|
|
141
|
+
if (filters !== undefined)
|
|
142
|
+
body.filters = filters;
|
|
143
|
+
if (territory_match !== undefined)
|
|
144
|
+
body.territory_match = territory_match;
|
|
145
|
+
if (crop !== undefined)
|
|
146
|
+
body.crop = crop;
|
|
147
|
+
if (channels !== undefined)
|
|
148
|
+
body.channels = channels;
|
|
149
|
+
if (limit !== undefined)
|
|
150
|
+
body.limit = limit;
|
|
151
|
+
return this._post('/v1/trademarks/search/image', body, options);
|
|
152
|
+
}
|
|
38
153
|
/**
|
|
39
154
|
* List event history for a trademark.
|
|
40
155
|
*
|
|
@@ -57,7 +172,7 @@ export class Trademarks extends BaseResource {
|
|
|
57
172
|
* ```typescript
|
|
58
173
|
* const result = await signa.trademarks.batch({ ids: ['tm_abc', 'tm_def'] });
|
|
59
174
|
* const result = await signa.trademarks.batch({
|
|
60
|
-
* identifiers: [{ application_number: '97123456', office: '
|
|
175
|
+
* identifiers: [{ application_number: '97123456', office: 'US' }],
|
|
61
176
|
* });
|
|
62
177
|
* ```
|
|
63
178
|
*/
|
|
@@ -116,6 +231,18 @@ export class Trademarks extends BaseResource {
|
|
|
116
231
|
const response = await this._getListResponse(`/v1/trademarks/${encodeURIComponent(id)}/proceedings`, params, options);
|
|
117
232
|
return createList(response, (cursor) => this._getListResponse(`/v1/trademarks/${encodeURIComponent(id)}/proceedings`, { ...params, cursor }, options));
|
|
118
233
|
}
|
|
234
|
+
/** Recorded assignment chain of title linked to a trademark. */
|
|
235
|
+
async assignments(id, params, options) {
|
|
236
|
+
this._validateId(id);
|
|
237
|
+
const response = await this._getListResponse(`/v1/trademarks/${encodeURIComponent(id)}/assignments`, params, options);
|
|
238
|
+
return createList(response, (cursor) => this._getListResponse(`/v1/trademarks/${encodeURIComponent(id)}/assignments`, { ...params, cursor }, options));
|
|
239
|
+
}
|
|
240
|
+
/** Office documents linked to a trademark. */
|
|
241
|
+
async documents(id, params, options) {
|
|
242
|
+
this._validateId(id);
|
|
243
|
+
const response = await this._getListResponse(`/v1/trademarks/${encodeURIComponent(id)}/documents`, params, options);
|
|
244
|
+
return createList(response, (cursor) => this._getListResponse(`/v1/trademarks/${encodeURIComponent(id)}/documents`, { ...params, cursor }, options));
|
|
245
|
+
}
|
|
119
246
|
/** Get the redirect URL for a trademark media asset (image, sound, etc). */
|
|
120
247
|
async media(id, mediaId, options) {
|
|
121
248
|
this._validateId(id, 'id');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trademarks.js","sourceRoot":"","sources":["../../src/resources/trademarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"trademarks.js","sourceRoot":"","sources":["../../src/resources/trademarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAqC9D,MAAM,UAAU,gBAAgB,CAAC,SAA8B;IAC7D,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,YAAY;IAC1C;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,QAAQ,CACZ,EAAU,EACV,MAAgC,EAChC,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,IAAI,CAAY,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;YACtE,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,EAAE,QAAQ;SAC3B,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,IAAI,CACR,MAA4B,EAC5B,OAAwB;QAExB,MAAM,SAAS,GAAG,KAAK,EAAE,MAAe,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,gBAAgB,CAAmB,gBAAgB,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACnG,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,MAAM,CACV,MAA2B,EAC3B,OAAwB;QAExB,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B,gBAAgB,EAChB,IAAI,EACJ,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,KAAK,CACf,gBAAgB,EAChB,QAAQ,EACR,OAAO,CACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,aAAa,CACjB,MAAkC,EAClC,OAAwB;QAExB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GACnG,MAAM,CAAC;QACT,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,sEAAsE;YACtE,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GACR,KAAK,YAAY,IAAI;gBACnB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,IAAI,OAAO,CAAC,CAAC;YACtD,IAAI,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3E,wFAAwF;YACxF,IAAI,eAAe,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;YACnF,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,IAAI,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9E,IAAI,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,KAAK,CAAqB,6BAA6B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC;QACD,qCAAqC;QACrC,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QACxD,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACrD,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,IAAI,eAAe,KAAK,SAAS;YAAE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAC1E,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAqB,6BAA6B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACX,EAAU,EACV,MAA+B,EAC/B,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,KAAK,EAAE,MAAe,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,gBAAgB,CAC1B,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAClD,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EACrB,OAAO,CACR,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,CACT,IAAwB,EACxB,OAAwB;QAExB,OAAO,IAAI,CAAC,KAAK,CAAyB,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CACX,EAAU,EACV,MAA+B,EAC/B,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAClD,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAClD,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CACX,EAAU,EACV,MAA+B,EAC/B,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAClD,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAClD,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CACX,MAA8B,EAC9B,OAAwB;QAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,wBAAwB,EACxB,MAA4C,EAC5C,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CACvD,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,MAAM,CACV,EAAU,EACV,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,IAAI,CACd,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EACjD,SAAS,EACT,OAAO,CACR,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,QAAQ,CACZ,EAAU,EACV,MAAgC,EAChC,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,WAAW,EACnD,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,WAAW,EACnD,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,WAAW,CACf,EAAU,EACV,MAAmC,EACnC,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,cAAc,EACtD,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,cAAc,EACtD,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,WAAW,CACf,EAAU,EACV,MAAmC,EACnC,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,cAAc,EACtD,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,cAAc,EACtD,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,SAAS,CACb,EAAU,EACV,MAAgC,EAChC,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,YAAY,EACpD,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,YAAY,EACpD,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,KAAK,CACT,EAAU,EACV,OAAe,EACf,OAAwB;QAExB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,eAAe,CACzB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC/E,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,18 +1,77 @@
|
|
|
1
1
|
import { BaseResource } from '../resource.js';
|
|
2
2
|
import { type SignaList } from '../pagination.js';
|
|
3
|
-
import type { Watch, Alert, DeletedResponse, WatchCreateParams, WatchUpdateParams, WatchListParams, AlertListParams, RequestOptions } from '../types.js';
|
|
3
|
+
import type { Watch, Alert, DeletedResponse, WatchCreateParams, WatchCreateQueryParams, WatchUpdateParams, WatchListParams, WatchReplayParams, WatchPreviewParams, WatchPreviewResponse, WatchBulkParams, WatchDiagnostics, WatchDiagnosticsParams, WatchAttestation, WatchAttestationParams, AlertListParams, RequestOptions } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Watch management — monitoring v1 (TSK-111).
|
|
6
|
+
*
|
|
7
|
+
* Five watch types compile to one query shape (VAL-PRODUCT-001):
|
|
8
|
+
* `'mark' | 'portfolio' | 'owner' | 'class' | 'similarity'`. `query.match`
|
|
9
|
+
* is rejected in ANY form (object or string) — use `filters.ownerId`,
|
|
10
|
+
* `filters.trademarkIds`, `filters.niceClasses` for scoping and
|
|
11
|
+
* `min_match_tier` for similarity precision. See {@link WatchQuery} and
|
|
12
|
+
* the watches guide for worked examples.
|
|
13
|
+
*/
|
|
4
14
|
export declare class Watches extends BaseResource {
|
|
5
|
-
/** Create a watch. */
|
|
6
|
-
create(body: WatchCreateParams, options?: RequestOptions
|
|
7
|
-
|
|
15
|
+
/** Create a watch (or hydrate from a saved search via `?from_saved_search=`). */
|
|
16
|
+
create(body: WatchCreateParams, options?: RequestOptions & {
|
|
17
|
+
query?: WatchCreateQueryParams;
|
|
18
|
+
}): Promise<Watch>;
|
|
19
|
+
/** List watches for the calling org (cursor pagination, max 100/page). */
|
|
8
20
|
list(params?: WatchListParams, options?: RequestOptions): Promise<SignaList<Watch>>;
|
|
9
|
-
/** Retrieve a watch. */
|
|
21
|
+
/** Retrieve a watch (`alert_count_24h` populated). */
|
|
10
22
|
retrieve(id: string, options?: RequestOptions): Promise<Watch>;
|
|
11
|
-
/** Update a watch. */
|
|
23
|
+
/** Update a watch (PATCH — partial body). */
|
|
12
24
|
update(id: string, body: WatchUpdateParams, options?: RequestOptions): Promise<Watch>;
|
|
13
|
-
/** Soft-delete a watch. */
|
|
25
|
+
/** Soft-delete a watch (sets `deleted_at`). */
|
|
14
26
|
delete(id: string, options?: RequestOptions): Promise<DeletedResponse>;
|
|
15
|
-
/**
|
|
16
|
-
|
|
27
|
+
/** Pause evaluation. The watch is preserved; no alerts fire until resumed. */
|
|
28
|
+
pause(id: string, options?: RequestOptions): Promise<Watch>;
|
|
29
|
+
/** Resume a paused watch. */
|
|
30
|
+
resume(id: string, options?: RequestOptions): Promise<Watch>;
|
|
31
|
+
/**
|
|
32
|
+
* Bump `evaluation_epoch` to trigger a full re-evaluation across watched
|
|
33
|
+
* offices. Requires the `watches:admin` scope. Returns 409 if the
|
|
34
|
+
* evaluator currently holds the per-(watch, office) lease (15-min stale
|
|
35
|
+
* takeover).
|
|
36
|
+
*
|
|
37
|
+
* v1 accepts an empty body only — `from_date` (historical replay) is
|
|
38
|
+
* reserved for v1.1 and the server rejects it with 400.
|
|
39
|
+
*/
|
|
40
|
+
replay(id: string, body?: WatchReplayParams, options?: RequestOptions): Promise<Watch>;
|
|
41
|
+
/**
|
|
42
|
+
* Dry-run a watch query — returns the count of trademarks that would have
|
|
43
|
+
* alerted if this query had been a live watch over the last
|
|
44
|
+
* `trial_window_days` (default 7). Does not write to the DB
|
|
45
|
+
* (VAL-API-011).
|
|
46
|
+
*/
|
|
47
|
+
preview(body: WatchPreviewParams, options?: RequestOptions): Promise<WatchPreviewResponse>;
|
|
48
|
+
/** Bulk-create up to 100 watches. Counts against the per-plan resource quota. */
|
|
49
|
+
bulk(body: WatchBulkParams, options?: RequestOptions): Promise<Watch[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Self-service diagnostics for a single (watch, trademark) pair.
|
|
52
|
+
* Returns an 11-field explainable trace — see the
|
|
53
|
+
* [diagnostics docs](https://docs.signa.so/api-reference/monitoring/watches/diagnostics)
|
|
54
|
+
* for the full schema and `reason` enum walk-order.
|
|
55
|
+
*
|
|
56
|
+
* Required scope: `portfolios:manage`. Cross-org or missing references
|
|
57
|
+
* return 404.
|
|
58
|
+
*/
|
|
59
|
+
diagnostics(watchId: string, params: WatchDiagnosticsParams, options?: RequestOptions): Promise<WatchDiagnostics>;
|
|
60
|
+
/**
|
|
61
|
+
* Fetch the monthly proof-of-monitoring attestation (JSON) for a closed UTC
|
|
62
|
+
* calendar month. Defaults to the previous month. The current (open) month
|
|
63
|
+
* returns 422 unless `{ partial: true }`. Deterministic: re-fetch a closed
|
|
64
|
+
* period later and compare `content_hash` to verify integrity.
|
|
65
|
+
*
|
|
66
|
+
* The PDF business record is available at the HTTP layer via
|
|
67
|
+
* `GET /v1/watches/{id}/attestation?format=pdf` (or `Accept: application/pdf`).
|
|
68
|
+
*
|
|
69
|
+
* Required scope: `portfolios:manage`. Cross-org / unknown watch returns 404.
|
|
70
|
+
*/
|
|
71
|
+
attestation(watchId: string, params?: WatchAttestationParams, options?: RequestOptions): Promise<WatchAttestation>;
|
|
72
|
+
/** List alerts scoped to a single watch (cursor pagination). */
|
|
73
|
+
listAlerts(watchId: string, params?: AlertListParams, options?: RequestOptions): Promise<SignaList<Alert>>;
|
|
74
|
+
/** @internal Build a query string from a flat params object. */
|
|
75
|
+
private _buildQS;
|
|
17
76
|
}
|
|
18
77
|
//# sourceMappingURL=watches.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watches.d.ts","sourceRoot":"","sources":["../../src/resources/watches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACV,KAAK,EACL,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,qBAAa,OAAQ,SAAQ,YAAY;IACvC,
|
|
1
|
+
{"version":3,"file":"watches.d.ts","sourceRoot":"","sources":["../../src/resources/watches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACV,KAAK,EACL,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACf,MAAM,aAAa,CAAC;AAErB;;;;;;;;;GASG;AACH,qBAAa,OAAQ,SAAQ,YAAY;IACvC,iFAAiF;IAC3E,MAAM,CACV,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,sBAAsB,CAAA;KAAE,GAC5D,OAAO,CAAC,KAAK,CAAC;IAQjB,0EAA0E;IACpE,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAOzF,sDAAsD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpE,6CAA6C;IACvC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAK3F,+CAA+C;IACzC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAK5E,8EAA8E;IACxE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAKjE,6BAA6B;IACvB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAKlE;;;;;;;;OAQG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC;IAKjB;;;;;OAKG;IACG,OAAO,CACX,IAAI,EAAE,kBAAkB,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC;IAIhC,iFAAiF;IAC3E,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAS7E;;;;;;;;OAQG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAY5B;;;;;;;;;;OAUG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAY5B,gEAAgE;IAC1D,UAAU,CACd,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAY5B,gEAAgE;IAChE,OAAO,CAAC,QAAQ;CAQjB"}
|