@signa-so/sdk 0.2.2 → 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.
Files changed (91) hide show
  1. package/README.md +21 -13
  2. package/dist/_internals/fetch-with-retry.js +1 -1
  3. package/dist/_internals/fetch-with-retry.js.map +1 -1
  4. package/dist/_internals/query-string.d.ts +5 -4
  5. package/dist/_internals/query-string.d.ts.map +1 -1
  6. package/dist/_internals/query-string.js +6 -14
  7. package/dist/_internals/query-string.js.map +1 -1
  8. package/dist/client.d.ts +54 -10
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +76 -13
  11. package/dist/client.js.map +1 -1
  12. package/dist/errors.d.ts +7 -0
  13. package/dist/errors.d.ts.map +1 -1
  14. package/dist/errors.js +10 -1
  15. package/dist/errors.js.map +1 -1
  16. package/dist/generated/api-types.d.ts +3608 -2393
  17. package/dist/generated/api-types.d.ts.map +1 -1
  18. package/dist/index.d.ts +3 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/pagination.d.ts +1 -1
  23. package/dist/pagination.js +1 -1
  24. package/dist/resources/alerts.d.ts +18 -13
  25. package/dist/resources/alerts.d.ts.map +1 -1
  26. package/dist/resources/alerts.js +28 -20
  27. package/dist/resources/alerts.js.map +1 -1
  28. package/dist/resources/attorneys.d.ts +5 -2
  29. package/dist/resources/attorneys.d.ts.map +1 -1
  30. package/dist/resources/attorneys.js +6 -5
  31. package/dist/resources/attorneys.js.map +1 -1
  32. package/dist/resources/entities.d.ts +52 -0
  33. package/dist/resources/entities.d.ts.map +1 -0
  34. package/dist/resources/entities.js +70 -0
  35. package/dist/resources/entities.js.map +1 -0
  36. package/dist/resources/firms.d.ts +5 -5
  37. package/dist/resources/firms.js +5 -5
  38. package/dist/resources/goods-services.d.ts +56 -0
  39. package/dist/resources/goods-services.d.ts.map +1 -0
  40. package/dist/resources/goods-services.js +60 -0
  41. package/dist/resources/goods-services.js.map +1 -0
  42. package/dist/resources/{platform.d.ts → organization.d.ts} +24 -3
  43. package/dist/resources/organization.d.ts.map +1 -0
  44. package/dist/resources/organization.js +81 -0
  45. package/dist/resources/organization.js.map +1 -0
  46. package/dist/resources/owners.d.ts +5 -2
  47. package/dist/resources/owners.d.ts.map +1 -1
  48. package/dist/resources/owners.js +6 -5
  49. package/dist/resources/owners.js.map +1 -1
  50. package/dist/resources/portfolios.d.ts +3 -3
  51. package/dist/resources/portfolios.d.ts.map +1 -1
  52. package/dist/resources/portfolios.js +4 -4
  53. package/dist/resources/portfolios.js.map +1 -1
  54. package/dist/resources/proceedings.d.ts +1 -1
  55. package/dist/resources/proceedings.js +1 -1
  56. package/dist/resources/references.d.ts +51 -12
  57. package/dist/resources/references.d.ts.map +1 -1
  58. package/dist/resources/references.js +33 -15
  59. package/dist/resources/references.js.map +1 -1
  60. package/dist/resources/suggest.d.ts +16 -0
  61. package/dist/resources/suggest.d.ts.map +1 -0
  62. package/dist/resources/suggest.js +18 -0
  63. package/dist/resources/suggest.js.map +1 -0
  64. package/dist/resources/trademarks.d.ts +47 -5
  65. package/dist/resources/trademarks.d.ts.map +1 -1
  66. package/dist/resources/trademarks.js +53 -5
  67. package/dist/resources/trademarks.js.map +1 -1
  68. package/dist/resources/watches.d.ts +56 -9
  69. package/dist/resources/watches.d.ts.map +1 -1
  70. package/dist/resources/watches.js +91 -12
  71. package/dist/resources/watches.js.map +1 -1
  72. package/dist/resources/webhooks.d.ts +57 -0
  73. package/dist/resources/webhooks.d.ts.map +1 -0
  74. package/dist/resources/webhooks.js +86 -0
  75. package/dist/resources/webhooks.js.map +1 -0
  76. package/dist/types.d.ts +1163 -213
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/version.d.ts +1 -1
  79. package/dist/version.js +1 -1
  80. package/dist/webhooks.d.ts +57 -0
  81. package/dist/webhooks.d.ts.map +1 -0
  82. package/dist/webhooks.js +76 -0
  83. package/dist/webhooks.js.map +1 -0
  84. package/package.json +7 -2
  85. package/dist/resources/platform.d.ts.map +0 -1
  86. package/dist/resources/platform.js +0 -50
  87. package/dist/resources/platform.js.map +0 -1
  88. package/dist/resources/search.d.ts +0 -27
  89. package/dist/resources/search.d.ts.map +0 -1
  90. package/dist/resources/search.js +0 -36
  91. 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: ['owners', 'history'] });
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
- * const page = await signa.trademarks.list({ jurisdiction_code: 'US', status: 'registered' });
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
- * for await (const tm of signa.trademarks.list({ jurisdiction_code: 'US' })) {
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":"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"}
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): Promise<Watch>;
7
- /** List organization's watches. */
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
- /** List alerts for a specific watch. */
16
- alerts(id: string, params?: Omit<AlertListParams, 'watch_id'>, options?: RequestOptions): Promise<SignaList<Alert>>;
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,sBAAsB;IAChB,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAI/E,mCAAmC;IAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAezF,wBAAwB;IAClB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpE,sBAAsB;IAChB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAK3F,2BAA2B;IACrB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAK5E,wCAAwC;IAClC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAe1H"}
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
- return this._post('/v1/watches', body, options);
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 organization's watches. */
22
+ /** List watches for the calling org (cursor pagination, max 100/page). */
9
23
  async list(params, options) {
10
- const response = await this._getListResponse('/v1/watches', params, options);
11
- return createList(response, (cursor) => this._getListResponse('/v1/watches', { ...params, cursor }, options));
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
- /** List alerts for a specific watch. */
29
- async alerts(id, params, options) {
43
+ /** Pause evaluation. The watch is preserved; no alerts fire until resumed. */
44
+ async pause(id, options) {
30
45
  this._validateId(id);
31
- const response = await this._getListResponse(`/v1/watches/${encodeURIComponent(id)}/alerts`, params, options);
32
- return createList(response, (cursor) => this._getListResponse(`/v1/watches/${encodeURIComponent(id)}/alerts`, { ...params, cursor }, options));
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;AAY9D,MAAM,OAAO,OAAQ,SAAQ,YAAY;IACvC,sBAAsB;IACtB,KAAK,CAAC,MAAM,CAAC,IAAuB,EAAE,OAAwB;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAQ,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,IAAI,CAAC,MAAwB,EAAE,OAAwB;QAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,aAAa,EACb,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,aAAa,EACb,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,OAAwB;QACjD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,IAAI,CAAQ,eAAe,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAuB,EAAE,OAAwB;QACxE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAQ,eAAe,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAAwB;QAC/C,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAkB,eAAe,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAA0C,EAAE,OAAwB;QAC3F,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,eAAe,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAC9C,MAAiC,EACjC,OAAO,CACR,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACrC,IAAI,CAAC,gBAAgB,CACnB,eAAe,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAC9C,EAAE,GAAG,MAAM,EAAE,MAAM,EAA6B,EAChD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;CACF"}
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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"}