@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
|
@@ -1,35 +1,134 @@
|
|
|
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
|
+
* `min_match_tier` 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
|
+
/**
|
|
97
|
+
* Fetch the monthly proof-of-monitoring attestation (JSON) for a closed UTC
|
|
98
|
+
* calendar month. Defaults to the previous month. The current (open) month
|
|
99
|
+
* returns 422 unless `{ partial: true }`. Deterministic: re-fetch a closed
|
|
100
|
+
* period later and compare `content_hash` to verify integrity.
|
|
101
|
+
*
|
|
102
|
+
* The PDF business record is available at the HTTP layer via
|
|
103
|
+
* `GET /v1/watches/{id}/attestation?format=pdf` (or `Accept: application/pdf`).
|
|
104
|
+
*
|
|
105
|
+
* Required scope: `portfolios:manage`. Cross-org / unknown watch returns 404.
|
|
106
|
+
*/
|
|
107
|
+
async attestation(watchId, params, options) {
|
|
108
|
+
this._validateId(watchId);
|
|
109
|
+
const query = {};
|
|
110
|
+
if (params?.period)
|
|
111
|
+
query.period = params.period;
|
|
112
|
+
if (params?.partial)
|
|
113
|
+
query.partial = 'true';
|
|
114
|
+
return this._get(`/v1/watches/${encodeURIComponent(watchId)}/attestation`, query, options);
|
|
115
|
+
}
|
|
116
|
+
/** List alerts scoped to a single watch (cursor pagination). */
|
|
117
|
+
async listAlerts(watchId, params, options) {
|
|
118
|
+
this._validateId(watchId);
|
|
119
|
+
const fetchPage = async (cursor) => this._getListResponse(`/v1/watches/${encodeURIComponent(watchId)}/alerts`, { ...params, cursor }, options);
|
|
120
|
+
const firstPage = await fetchPage(params?.cursor);
|
|
121
|
+
return createList(firstPage, fetchPage);
|
|
122
|
+
}
|
|
123
|
+
/** @internal Build a query string from a flat params object. */
|
|
124
|
+
_buildQS(params) {
|
|
125
|
+
const entries = [];
|
|
126
|
+
for (const [k, v] of Object.entries(params)) {
|
|
127
|
+
if (v === undefined || v === null)
|
|
128
|
+
continue;
|
|
129
|
+
entries.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
|
|
130
|
+
}
|
|
131
|
+
return entries.length ? `?${entries.join('&')}` : '';
|
|
33
132
|
}
|
|
34
133
|
}
|
|
35
134
|
//# 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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"}
|