@signa-so/sdk 0.2.1 → 0.4.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 +21 -13
- package/dist/_internals/fetch-with-retry.js +1 -1
- 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/client.d.ts +54 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +76 -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 +3608 -2393
- package/dist/generated/api-types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +1 -1
- package/dist/pagination.js +1 -1
- package/dist/resources/alerts.d.ts +18 -13
- package/dist/resources/alerts.d.ts.map +1 -1
- package/dist/resources/alerts.js +29 -19
- package/dist/resources/alerts.js.map +1 -1
- package/dist/resources/attorneys.d.ts +5 -2
- package/dist/resources/attorneys.d.ts.map +1 -1
- package/dist/resources/attorneys.js +6 -5
- package/dist/resources/attorneys.js.map +1 -1
- package/dist/resources/entities.d.ts +52 -0
- package/dist/resources/entities.d.ts.map +1 -0
- package/dist/resources/entities.js +70 -0
- package/dist/resources/entities.js.map +1 -0
- package/dist/resources/firms.d.ts +5 -5
- package/dist/resources/firms.js +5 -5
- 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/{platform.d.ts → organization.d.ts} +24 -3
- package/dist/resources/organization.d.ts.map +1 -0
- package/dist/resources/organization.js +81 -0
- package/dist/resources/organization.js.map +1 -0
- package/dist/resources/owners.d.ts +5 -2
- package/dist/resources/owners.d.ts.map +1 -1
- package/dist/resources/owners.js +6 -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/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/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 +47 -5
- package/dist/resources/trademarks.d.ts.map +1 -1
- package/dist/resources/trademarks.js +53 -5
- package/dist/resources/trademarks.js.map +1 -1
- package/dist/resources/watches.d.ts +56 -9
- package/dist/resources/watches.d.ts.map +1 -1
- package/dist/resources/watches.js +91 -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 +1163 -213
- 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 +7 -2
- 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
|
@@ -4,26 +4,41 @@ export class Trademarks extends BaseResource {
|
|
|
4
4
|
/**
|
|
5
5
|
* Retrieve a single trademark by ID.
|
|
6
6
|
*
|
|
7
|
+
* The full detail tier (owners, classifications, attorneys, media,
|
|
8
|
+
* priorities, proceedings, Madrid coverage) is always returned inline.
|
|
9
|
+
* Pass `include: ['history']` to embed the 50 most recent prosecution
|
|
10
|
+
* events alongside the detail object.
|
|
11
|
+
*
|
|
7
12
|
* ```typescript
|
|
8
13
|
* const tm = await signa.trademarks.retrieve('tm_abc123');
|
|
9
|
-
* const tm = await signa.trademarks.retrieve('tm_abc123', { include: ['
|
|
14
|
+
* const tm = await signa.trademarks.retrieve('tm_abc123', { include: ['history'] });
|
|
10
15
|
* ```
|
|
11
16
|
*/
|
|
12
17
|
async retrieve(id, params, options) {
|
|
13
18
|
this._validateId(id);
|
|
14
19
|
return this._get(`/v1/trademarks/${encodeURIComponent(id)}`, {
|
|
15
20
|
include: params?.include,
|
|
16
|
-
fields: params?.fields,
|
|
17
21
|
}, options);
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
|
-
* List trademarks with filters. At least one filter is required.
|
|
24
|
+
* List trademarks with filters via GET. At least one filter or `q` query is required.
|
|
21
25
|
* Returns a SignaList supporting auto-pagination.
|
|
22
26
|
*
|
|
27
|
+
* Now supports text search via `q`, sorting via `sort`, and search options
|
|
28
|
+
* like `strategies`, `include_total`, `highlights`, and `include_timing`.
|
|
29
|
+
*
|
|
23
30
|
* ```typescript
|
|
24
|
-
*
|
|
31
|
+
* // Filter-only (sorted by -filing_date by default)
|
|
32
|
+
* const page = await signa.trademarks.list({ jurisdictions: ['US'], status_primary: 'active' });
|
|
33
|
+
*
|
|
34
|
+
* // Text search with filters
|
|
35
|
+
* const results = await signa.trademarks.list({ q: 'SIGNA', jurisdictions: ['US'] });
|
|
36
|
+
*
|
|
37
|
+
* // Explicit sort
|
|
38
|
+
* const sorted = await signa.trademarks.list({ offices: ['uspto'], sort: '-registration_date' });
|
|
25
39
|
*
|
|
26
|
-
*
|
|
40
|
+
* // Auto-pagination
|
|
41
|
+
* for await (const tm of signa.trademarks.list({ jurisdictions: ['US'] })) {
|
|
27
42
|
* console.log(tm.mark_text);
|
|
28
43
|
* }
|
|
29
44
|
* ```
|
|
@@ -35,6 +50,39 @@ export class Trademarks extends BaseResource {
|
|
|
35
50
|
const firstPage = await fetchPage(params?.cursor);
|
|
36
51
|
return createList(firstPage, fetchPage);
|
|
37
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Search trademarks via POST with a JSON body. Use this for complex queries
|
|
55
|
+
* with structured filters, aggregations, strategies, or ranking profiles.
|
|
56
|
+
*
|
|
57
|
+
* This replaces the old `signa.search.query()` method. The endpoint is
|
|
58
|
+
* `POST /v1/trademarks` (the old `/v1/trademarks/search` is deprecated).
|
|
59
|
+
*
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const results = await signa.trademarks.search({
|
|
62
|
+
* query: 'SIGNA',
|
|
63
|
+
* strategies: ['exact', 'phonetic'],
|
|
64
|
+
* filters: { jurisdictions: ['US'], nice_classes: [9, 42] },
|
|
65
|
+
* options: { aggregations: ['status_stage', 'office_code'] },
|
|
66
|
+
* });
|
|
67
|
+
* console.log(results.aggregations);
|
|
68
|
+
* console.log(results.search_meta);
|
|
69
|
+
*
|
|
70
|
+
* // Filter-only POST (no text query)
|
|
71
|
+
* const filtered = await signa.trademarks.search({
|
|
72
|
+
* filters: { offices: ['uspto'], status_primary: 'active' },
|
|
73
|
+
* sort: '-filing_date',
|
|
74
|
+
* options: { include_total: true },
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
async search(params, options) {
|
|
79
|
+
const body = { ...params };
|
|
80
|
+
const response = await this._post('/v1/trademarks', body, options);
|
|
81
|
+
return createList(response, async (cursor) => {
|
|
82
|
+
const nextBody = { ...params, cursor };
|
|
83
|
+
return this._post('/v1/trademarks', nextBody, options);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
38
86
|
/**
|
|
39
87
|
* List event history for a trademark.
|
|
40
88
|
*
|
|
@@ -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":"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"}
|
|
@@ -1,18 +1,65 @@
|
|
|
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, 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
|
+
* `score_threshold` 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
|
+
/** List alerts scoped to a single watch (cursor pagination). */
|
|
61
|
+
listAlerts(watchId: string, params?: AlertListParams, options?: RequestOptions): Promise<SignaList<Alert>>;
|
|
62
|
+
/** @internal Build a query string from a flat params object. */
|
|
63
|
+
private _buildQS;
|
|
17
64
|
}
|
|
18
65
|
//# 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,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,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"}
|
|
@@ -1,35 +1,114 @@
|
|
|
1
1
|
import { BaseResource } from '../resource.js';
|
|
2
2
|
import { createList } from '../pagination.js';
|
|
3
|
+
/**
|
|
4
|
+
* Watch management — monitoring v1 (TSK-111).
|
|
5
|
+
*
|
|
6
|
+
* Five watch types compile to one query shape (VAL-PRODUCT-001):
|
|
7
|
+
* `'mark' | 'portfolio' | 'owner' | 'class' | 'similarity'`. `query.match`
|
|
8
|
+
* is rejected in ANY form (object or string) — use `filters.ownerId`,
|
|
9
|
+
* `filters.trademarkIds`, `filters.niceClasses` for scoping and
|
|
10
|
+
* `score_threshold` for similarity precision. See {@link WatchQuery} and
|
|
11
|
+
* the watches guide for worked examples.
|
|
12
|
+
*/
|
|
3
13
|
export class Watches extends BaseResource {
|
|
4
|
-
/** Create a watch. */
|
|
14
|
+
/** Create a watch (or hydrate from a saved search via `?from_saved_search=`). */
|
|
5
15
|
async create(body, options) {
|
|
6
|
-
|
|
16
|
+
const { query, ...restOpts } = options ?? {};
|
|
17
|
+
const path = query?.from_saved_search
|
|
18
|
+
? `/v1/watches${this._buildQS({ from_saved_search: query.from_saved_search })}`
|
|
19
|
+
: '/v1/watches';
|
|
20
|
+
return this._post(path, body, restOpts);
|
|
7
21
|
}
|
|
8
|
-
/** List
|
|
22
|
+
/** List watches for the calling org (cursor pagination, max 100/page). */
|
|
9
23
|
async list(params, options) {
|
|
10
|
-
const
|
|
11
|
-
|
|
24
|
+
const fetchPage = async (cursor) => this._getListResponse('/v1/watches', { ...params, cursor }, options);
|
|
25
|
+
const firstPage = await fetchPage(params?.cursor);
|
|
26
|
+
return createList(firstPage, fetchPage);
|
|
12
27
|
}
|
|
13
|
-
/** Retrieve a watch. */
|
|
28
|
+
/** Retrieve a watch (`alert_count_24h` populated). */
|
|
14
29
|
async retrieve(id, options) {
|
|
15
30
|
this._validateId(id);
|
|
16
31
|
return this._get(`/v1/watches/${encodeURIComponent(id)}`, undefined, options);
|
|
17
32
|
}
|
|
18
|
-
/** Update a watch. */
|
|
33
|
+
/** Update a watch (PATCH — partial body). */
|
|
19
34
|
async update(id, body, options) {
|
|
20
35
|
this._validateId(id);
|
|
21
36
|
return this._patch(`/v1/watches/${encodeURIComponent(id)}`, body, options);
|
|
22
37
|
}
|
|
23
|
-
/** Soft-delete a watch. */
|
|
38
|
+
/** Soft-delete a watch (sets `deleted_at`). */
|
|
24
39
|
async delete(id, options) {
|
|
25
40
|
this._validateId(id);
|
|
26
41
|
return this._delete(`/v1/watches/${encodeURIComponent(id)}`, options);
|
|
27
42
|
}
|
|
28
|
-
/**
|
|
29
|
-
async
|
|
43
|
+
/** Pause evaluation. The watch is preserved; no alerts fire until resumed. */
|
|
44
|
+
async pause(id, options) {
|
|
30
45
|
this._validateId(id);
|
|
31
|
-
|
|
32
|
-
|
|
46
|
+
return this._post(`/v1/watches/${encodeURIComponent(id)}/pause`, {}, options);
|
|
47
|
+
}
|
|
48
|
+
/** Resume a paused watch. */
|
|
49
|
+
async resume(id, options) {
|
|
50
|
+
this._validateId(id);
|
|
51
|
+
return this._post(`/v1/watches/${encodeURIComponent(id)}/resume`, {}, options);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Bump `evaluation_epoch` to trigger a full re-evaluation across watched
|
|
55
|
+
* offices. Requires the `watches:admin` scope. Returns 409 if the
|
|
56
|
+
* evaluator currently holds the per-(watch, office) lease (15-min stale
|
|
57
|
+
* takeover).
|
|
58
|
+
*
|
|
59
|
+
* v1 accepts an empty body only — `from_date` (historical replay) is
|
|
60
|
+
* reserved for v1.1 and the server rejects it with 400.
|
|
61
|
+
*/
|
|
62
|
+
async replay(id, body, options) {
|
|
63
|
+
this._validateId(id);
|
|
64
|
+
return this._post(`/v1/watches/${encodeURIComponent(id)}/replay`, body ?? {}, options);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Dry-run a watch query — returns the count of trademarks that would have
|
|
68
|
+
* alerted if this query had been a live watch over the last
|
|
69
|
+
* `trial_window_days` (default 7). Does not write to the DB
|
|
70
|
+
* (VAL-API-011).
|
|
71
|
+
*/
|
|
72
|
+
async preview(body, options) {
|
|
73
|
+
return this._post('/v1/watches/preview', body, options);
|
|
74
|
+
}
|
|
75
|
+
/** Bulk-create up to 100 watches. Counts against the per-plan resource quota. */
|
|
76
|
+
async bulk(body, options) {
|
|
77
|
+
const res = await this._post('/v1/watches/bulk', body, options);
|
|
78
|
+
return res.data;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Self-service diagnostics for a single (watch, trademark) pair.
|
|
82
|
+
* Returns an 11-field explainable trace — see the
|
|
83
|
+
* [diagnostics docs](https://docs.signa.so/api-reference/monitoring/watches/diagnostics)
|
|
84
|
+
* for the full schema and `reason` enum walk-order.
|
|
85
|
+
*
|
|
86
|
+
* Required scope: `portfolios:manage`. Cross-org or missing references
|
|
87
|
+
* return 404.
|
|
88
|
+
*/
|
|
89
|
+
async diagnostics(watchId, params, options) {
|
|
90
|
+
this._validateId(watchId);
|
|
91
|
+
if (!params || typeof params.trademarkId !== 'string' || !params.trademarkId) {
|
|
92
|
+
throw new Error('diagnostics requires { trademarkId } (a tm_* ID).');
|
|
93
|
+
}
|
|
94
|
+
return this._get(`/v1/watches/${encodeURIComponent(watchId)}/diagnostics`, { trademark_id: params.trademarkId }, options);
|
|
95
|
+
}
|
|
96
|
+
/** List alerts scoped to a single watch (cursor pagination). */
|
|
97
|
+
async listAlerts(watchId, params, options) {
|
|
98
|
+
this._validateId(watchId);
|
|
99
|
+
const fetchPage = async (cursor) => this._getListResponse(`/v1/watches/${encodeURIComponent(watchId)}/alerts`, { ...params, cursor }, options);
|
|
100
|
+
const firstPage = await fetchPage(params?.cursor);
|
|
101
|
+
return createList(firstPage, fetchPage);
|
|
102
|
+
}
|
|
103
|
+
/** @internal Build a query string from a flat params object. */
|
|
104
|
+
_buildQS(params) {
|
|
105
|
+
const entries = [];
|
|
106
|
+
for (const [k, v] of Object.entries(params)) {
|
|
107
|
+
if (v === undefined || v === null)
|
|
108
|
+
continue;
|
|
109
|
+
entries.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
|
|
110
|
+
}
|
|
111
|
+
return entries.length ? `?${entries.join('&')}` : '';
|
|
33
112
|
}
|
|
34
113
|
}
|
|
35
114
|
//# sourceMappingURL=watches.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watches.js","sourceRoot":"","sources":["../../src/resources/watches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"watches.js","sourceRoot":"","sources":["../../src/resources/watches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { BaseResource } from '../resource.js';
|
|
2
|
+
import { type SignaList } from '../pagination.js';
|
|
3
|
+
import type { Webhook, WebhookDelivery, DeletedResponse, WebhookCreateParams, WebhookUpdateParams, WebhookListParams, WebhookDeliveryListParams, WebhookTestResponse, WebhookRedeliveryResponse, RequestOptions } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Webhook endpoint management — monitoring v1 (TSK-111).
|
|
6
|
+
*
|
|
7
|
+
* Endpoints receive Standard Webhooks signed POSTs for `alert.created`
|
|
8
|
+
* and `webhook.test` events. The signing secret is
|
|
9
|
+
* returned ONCE on `create()` and `rotateSecret()` — store it before the
|
|
10
|
+
* promise resolves to nothing else, since list/retrieve responses redact it
|
|
11
|
+
* (VAL-API-009).
|
|
12
|
+
*
|
|
13
|
+
* Use `verifyWebhookSignature(headers, body, secret)` exported from the
|
|
14
|
+
* SDK root to verify deliveries on your side.
|
|
15
|
+
*/
|
|
16
|
+
export declare class Webhooks extends BaseResource {
|
|
17
|
+
/**
|
|
18
|
+
* Create a webhook endpoint. The response includes the plaintext
|
|
19
|
+
* signing `secret` exactly once.
|
|
20
|
+
*/
|
|
21
|
+
create(body: WebhookCreateParams, options?: RequestOptions): Promise<Webhook & {
|
|
22
|
+
secret: string;
|
|
23
|
+
}>;
|
|
24
|
+
/** List webhook endpoints (secret redacted). */
|
|
25
|
+
list(params?: WebhookListParams, options?: RequestOptions): Promise<SignaList<Webhook>>;
|
|
26
|
+
/** Retrieve a webhook endpoint (secret redacted). */
|
|
27
|
+
retrieve(id: string, options?: RequestOptions): Promise<Webhook>;
|
|
28
|
+
/** Update a webhook endpoint. */
|
|
29
|
+
update(id: string, body: WebhookUpdateParams, options?: RequestOptions): Promise<Webhook>;
|
|
30
|
+
/** Soft-delete a webhook endpoint. */
|
|
31
|
+
delete(id: string, options?: RequestOptions): Promise<DeletedResponse>;
|
|
32
|
+
/**
|
|
33
|
+
* Rotate the signing secret. The new secret is returned ONCE; the previous
|
|
34
|
+
* secret remains valid for 24h so you can update your verifier without
|
|
35
|
+
* dropping deliveries (rotation overlap, VAL-WEBHOOK-005).
|
|
36
|
+
*/
|
|
37
|
+
rotateSecret(id: string, options?: RequestOptions): Promise<Webhook & {
|
|
38
|
+
secret: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Send a synthetic `webhook.test` ping to the endpoint. This does NOT
|
|
42
|
+
* increment `consecutive_failures` even if the URL is unreachable
|
|
43
|
+
* (VAL-WEBHOOK-007), so admins can probe dead endpoints without
|
|
44
|
+
* triggering auto-disable.
|
|
45
|
+
*/
|
|
46
|
+
test(id: string, options?: RequestOptions): Promise<WebhookTestResponse>;
|
|
47
|
+
/** List delivery audit rows for an endpoint. */
|
|
48
|
+
listDeliveries(id: string, params?: WebhookDeliveryListParams, options?: RequestOptions): Promise<SignaList<WebhookDelivery>>;
|
|
49
|
+
/** Retrieve a single delivery audit row. */
|
|
50
|
+
retrieveDelivery(id: string, deliveryId: string, options?: RequestOptions): Promise<WebhookDelivery>;
|
|
51
|
+
/**
|
|
52
|
+
* Manually redeliver a webhook event. Inserts a new attempt row referencing
|
|
53
|
+
* the same `event_id`. The dispatcher picks it up via SQS. Billable.
|
|
54
|
+
*/
|
|
55
|
+
redeliver(id: string, deliveryId: string, options?: RequestOptions): Promise<WebhookRedeliveryResponse>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACf,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;GAWG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC;;;OAGG;IACG,MAAM,CACV,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAIxC,gDAAgD;IAC1C,IAAI,CACR,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAO9B,qDAAqD;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE,iCAAiC;IAC3B,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC;IAKnB,sCAAsC;IAChC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAK5E;;;;OAIG;IACG,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IASxC;;;;;OAKG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS9E,gDAAgD;IAC1C,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,yBAAyB,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAYtC,4CAA4C;IACtC,gBAAgB,CACpB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAU3B;;;OAGG;IACG,SAAS,CACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,yBAAyB,CAAC;CAStC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BaseResource } from '../resource.js';
|
|
2
|
+
import { createList } from '../pagination.js';
|
|
3
|
+
/**
|
|
4
|
+
* Webhook endpoint management — monitoring v1 (TSK-111).
|
|
5
|
+
*
|
|
6
|
+
* Endpoints receive Standard Webhooks signed POSTs for `alert.created`
|
|
7
|
+
* and `webhook.test` events. The signing secret is
|
|
8
|
+
* returned ONCE on `create()` and `rotateSecret()` — store it before the
|
|
9
|
+
* promise resolves to nothing else, since list/retrieve responses redact it
|
|
10
|
+
* (VAL-API-009).
|
|
11
|
+
*
|
|
12
|
+
* Use `verifyWebhookSignature(headers, body, secret)` exported from the
|
|
13
|
+
* SDK root to verify deliveries on your side.
|
|
14
|
+
*/
|
|
15
|
+
export class Webhooks extends BaseResource {
|
|
16
|
+
/**
|
|
17
|
+
* Create a webhook endpoint. The response includes the plaintext
|
|
18
|
+
* signing `secret` exactly once.
|
|
19
|
+
*/
|
|
20
|
+
async create(body, options) {
|
|
21
|
+
return this._post('/v1/webhooks', body, options);
|
|
22
|
+
}
|
|
23
|
+
/** List webhook endpoints (secret redacted). */
|
|
24
|
+
async list(params, options) {
|
|
25
|
+
const fetchPage = async (cursor) => this._getListResponse('/v1/webhooks', { ...params, cursor }, options);
|
|
26
|
+
const firstPage = await fetchPage(params?.cursor);
|
|
27
|
+
return createList(firstPage, fetchPage);
|
|
28
|
+
}
|
|
29
|
+
/** Retrieve a webhook endpoint (secret redacted). */
|
|
30
|
+
async retrieve(id, options) {
|
|
31
|
+
this._validateId(id);
|
|
32
|
+
return this._get(`/v1/webhooks/${encodeURIComponent(id)}`, undefined, options);
|
|
33
|
+
}
|
|
34
|
+
/** Update a webhook endpoint. */
|
|
35
|
+
async update(id, body, options) {
|
|
36
|
+
this._validateId(id);
|
|
37
|
+
return this._patch(`/v1/webhooks/${encodeURIComponent(id)}`, body, options);
|
|
38
|
+
}
|
|
39
|
+
/** Soft-delete a webhook endpoint. */
|
|
40
|
+
async delete(id, options) {
|
|
41
|
+
this._validateId(id);
|
|
42
|
+
return this._delete(`/v1/webhooks/${encodeURIComponent(id)}`, options);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Rotate the signing secret. The new secret is returned ONCE; the previous
|
|
46
|
+
* secret remains valid for 24h so you can update your verifier without
|
|
47
|
+
* dropping deliveries (rotation overlap, VAL-WEBHOOK-005).
|
|
48
|
+
*/
|
|
49
|
+
async rotateSecret(id, options) {
|
|
50
|
+
this._validateId(id);
|
|
51
|
+
return this._post(`/v1/webhooks/${encodeURIComponent(id)}/rotate-secret`, {}, options);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Send a synthetic `webhook.test` ping to the endpoint. This does NOT
|
|
55
|
+
* increment `consecutive_failures` even if the URL is unreachable
|
|
56
|
+
* (VAL-WEBHOOK-007), so admins can probe dead endpoints without
|
|
57
|
+
* triggering auto-disable.
|
|
58
|
+
*/
|
|
59
|
+
async test(id, options) {
|
|
60
|
+
this._validateId(id);
|
|
61
|
+
return this._post(`/v1/webhooks/${encodeURIComponent(id)}/test`, {}, options);
|
|
62
|
+
}
|
|
63
|
+
/** List delivery audit rows for an endpoint. */
|
|
64
|
+
async listDeliveries(id, params, options) {
|
|
65
|
+
this._validateId(id);
|
|
66
|
+
const fetchPage = async (cursor) => this._getListResponse(`/v1/webhooks/${encodeURIComponent(id)}/deliveries`, { ...params, cursor }, options);
|
|
67
|
+
const firstPage = await fetchPage(params?.cursor);
|
|
68
|
+
return createList(firstPage, fetchPage);
|
|
69
|
+
}
|
|
70
|
+
/** Retrieve a single delivery audit row. */
|
|
71
|
+
async retrieveDelivery(id, deliveryId, options) {
|
|
72
|
+
this._validateId(id);
|
|
73
|
+
this._validateId(deliveryId, 'deliveryId');
|
|
74
|
+
return this._get(`/v1/webhooks/${encodeURIComponent(id)}/deliveries/${encodeURIComponent(deliveryId)}`, undefined, options);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Manually redeliver a webhook event. Inserts a new attempt row referencing
|
|
78
|
+
* the same `event_id`. The dispatcher picks it up via SQS. Billable.
|
|
79
|
+
*/
|
|
80
|
+
async redeliver(id, deliveryId, options) {
|
|
81
|
+
this._validateId(id);
|
|
82
|
+
this._validateId(deliveryId, 'deliveryId');
|
|
83
|
+
return this._post(`/v1/webhooks/${encodeURIComponent(id)}/deliveries/${encodeURIComponent(deliveryId)}/redeliver`, {}, options);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"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"}
|