@stormwateriq/api-client 1.0.0 → 1.0.2
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 +47 -0
- package/dist/client.d.ts +9 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -1
- package/dist/generated/index.d.ts +1 -1
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/types.gen.d.ts +68 -6
- package/dist/generated/types.gen.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/oauth.d.ts +48 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +96 -0
- package/dist/webhook-events.d.ts +129 -0
- package/dist/webhook-events.d.ts.map +1 -0
- package/dist/webhook-events.js +70 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,6 +29,30 @@ const { data: site } = await getSite({ client, path: { site_id: "site_123" } });
|
|
|
29
29
|
const { data: page } = await listSites({ client, query: { limit: 50 } });
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
### Authentication (`createTokenSource`)
|
|
33
|
+
|
|
34
|
+
`createClient({ token })` accepts a ready access token, an async getter, or a
|
|
35
|
+
**token source** that mints + caches client-credentials tokens and refreshes them
|
|
36
|
+
ahead of expiry (single-flighting concurrent requests):
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { createClient, createTokenSource } from "@stormwateriq/api-client";
|
|
40
|
+
|
|
41
|
+
const tokens = createTokenSource({
|
|
42
|
+
clientId: process.env.SWIQ_CLIENT_ID!,
|
|
43
|
+
clientSecret: process.env.SWIQ_CLIENT_SECRET!,
|
|
44
|
+
scopes: ["site:read:owned", "site:write:owned"],
|
|
45
|
+
// tokenUrl defaults to DEFAULT_TOKEN_URL (https://api.stormwateriq.com/oauth/token)
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const client = createClient({ token: tokens });
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Scope catalog: `bmp:read:dumpster_enclosure`, `site:read`, `site:read:owned`,
|
|
52
|
+
`site:write:owned`, `inspection:read`, `inspection:read:owned`, `compliance:read`,
|
|
53
|
+
`certificate:generate`, `sponsor:read`, `sponsor:write:owned`,
|
|
54
|
+
`outcome:read:attributed`, `pollutant_loading:read`, `tmdl:read`, `ejscreen:read`.
|
|
55
|
+
|
|
32
56
|
Generated operations follow the gateway's OpenAPI `operationId`s — e.g.
|
|
33
57
|
`listSites`, `getSite`, `createSite`, `updateSite`, `listInspections`,
|
|
34
58
|
`getInspection`, `listInspectionPhotos`, `createWebhook`, `getSponsorOutcomes`.
|
|
@@ -51,6 +75,29 @@ const ok = webhooks.verify(
|
|
|
51
75
|
`webhooks.verify(payload, signature, secret)` is byte-identical to the server and
|
|
52
76
|
the Python SDK, pinned to `fixtures/webhook-signature-vectors.json`.
|
|
53
77
|
|
|
78
|
+
After verifying, parse the body into a typed, discriminated event:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
import { verifyWebhook, parseWebhookEvent } from "@stormwateriq/api-client";
|
|
82
|
+
|
|
83
|
+
if (!verifyWebhook(rawBody, signatureHeader, signingSecret)) return res.status(400).end();
|
|
84
|
+
|
|
85
|
+
const event = parseWebhookEvent(rawBody); // { id, type, created_at, data }
|
|
86
|
+
switch (event.type) {
|
|
87
|
+
case "site.registered":
|
|
88
|
+
// event.data is fully typed here
|
|
89
|
+
link(event.data.site_id, event.data.client_reference);
|
|
90
|
+
break;
|
|
91
|
+
case "inspection.completed":
|
|
92
|
+
refreshCard(event.data.site_id, event.data.deficiency_count);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The delivered body is the signed envelope `{ id, type, created_at, data }` — `id`
|
|
98
|
+
is the stable per-event dedup key; `type` mirrors the `X-StormwaterIQ-Event`
|
|
99
|
+
header. Payload shapes (`WebhookPayloadMap`) mirror the server contract.
|
|
100
|
+
|
|
54
101
|
## Behavior
|
|
55
102
|
|
|
56
103
|
- **Retries** — calls retry `429` (honoring `Retry-After`) and `5xx` with
|
package/dist/client.d.ts
CHANGED
|
@@ -13,9 +13,16 @@ import { type Client } from "./generated/client/index.js";
|
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
15
|
export declare const DEFAULT_BASE_URL = "https://api.stormwateriq.com";
|
|
16
|
+
/** Anything that can yield a bearer token: a literal, a getter, or a {@link createTokenSource}. */
|
|
17
|
+
export type TokenInput = string | (() => string | Promise<string>) | {
|
|
18
|
+
getToken: () => string | Promise<string>;
|
|
19
|
+
};
|
|
16
20
|
export type StormwaterIQClientOptions = {
|
|
17
|
-
/**
|
|
18
|
-
|
|
21
|
+
/**
|
|
22
|
+
* OAuth2 access token. Accepts a literal string, an async getter, or a
|
|
23
|
+
* {@link createTokenSource} (which mints + caches client-credentials tokens).
|
|
24
|
+
*/
|
|
25
|
+
token: TokenInput;
|
|
19
26
|
/** API base URL (defaults to {@link DEFAULT_BASE_URL}). */
|
|
20
27
|
baseUrl?: string;
|
|
21
28
|
/** Injectable fetch (defaults to global fetch); handy for tests. */
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,6BAA6B,CAAC;AAGrC;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAE/D,MAAM,MAAM,yBAAyB,GAAG;IACtC
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,6BAA6B,CAAC;AAGrC;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAE/D,mGAAmG;AACnG,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAChC;IAAE,QAAQ,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEjD,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,KAAK,EAAE,UAAU,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AASF,kEAAkE;AAClE,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM;CAKlB;AA6BD,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAoBpE"}
|
package/dist/client.js
CHANGED
|
@@ -14,6 +14,14 @@ import { createRetryingFetch } from "./retry.js";
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
export const DEFAULT_BASE_URL = "https://api.stormwateriq.com";
|
|
17
|
+
/** Normalize any {@link TokenInput} to the async getter hey-api's `auth` expects. */
|
|
18
|
+
function toAuthFn(token) {
|
|
19
|
+
if (typeof token === "string")
|
|
20
|
+
return () => token;
|
|
21
|
+
if (typeof token === "function")
|
|
22
|
+
return token;
|
|
23
|
+
return () => token.getToken();
|
|
24
|
+
}
|
|
17
25
|
/** Error thrown by SDK calls for any non-2xx gateway response. */
|
|
18
26
|
export class ApiError extends Error {
|
|
19
27
|
status;
|
|
@@ -54,7 +62,7 @@ export function createClient(opts) {
|
|
|
54
62
|
const client = createGeneratedClient(createConfig({
|
|
55
63
|
baseUrl: opts.baseUrl ?? DEFAULT_BASE_URL,
|
|
56
64
|
// SDK operations declare the `bearer` security scheme; this supplies the token.
|
|
57
|
-
auth: (
|
|
65
|
+
auth: toAuthFn(opts.token),
|
|
58
66
|
// Surface non-2xx as a thrown ApiError (see the error interceptor below).
|
|
59
67
|
throwOnError: true,
|
|
60
68
|
fetch: createRetryingFetch({
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { createSite, createWebhook, deleteWebhook, getHealth, getInspection, getInspectionReport, getSite, getSponsorOutcomes, listInspectionPhotos, listInspections, listSites, listWebhooks, type Options, updateSite } from './sdk.gen.js';
|
|
2
|
-
export type { ClientOptions, CreateSite, CreateSiteData, CreateSiteError, CreateSiteErrors, CreateSiteResponse, CreateSiteResponses, CreateWebhookData, CreateWebhookError, CreateWebhookErrors, CreateWebhookResponse, CreateWebhookResponses, DeleteWebhookData, DeleteWebhookError, DeleteWebhookErrors, DeleteWebhookResponse, DeleteWebhookResponses, Error, GetHealthData, GetHealthResponse, GetHealthResponses, GetInspectionData, GetInspectionError, GetInspectionErrors, GetInspectionReportData, GetInspectionReportError, GetInspectionReportErrors, GetInspectionReportResponse, GetInspectionReportResponses, GetInspectionResponse, GetInspectionResponses, GetSiteData, GetSiteError, GetSiteErrors, GetSiteResponse, GetSiteResponses, GetSponsorOutcomesData, GetSponsorOutcomesError, GetSponsorOutcomesErrors, GetSponsorOutcomesResponse, GetSponsorOutcomesResponses, Health, Inspection, InspectionPhoto, InspectionPhotos, InspectionsPage, ListInspectionPhotosData, ListInspectionPhotosError, ListInspectionPhotosErrors, ListInspectionPhotosResponse, ListInspectionPhotosResponses, ListInspectionsData, ListInspectionsError, ListInspectionsErrors, ListInspectionsResponse, ListInspectionsResponses, ListSitesData, ListSitesError, ListSitesErrors, ListSitesResponse, ListSitesResponses, ListWebhooksData, ListWebhooksError, ListWebhooksErrors, ListWebhooksResponse, ListWebhooksResponses, PatchSite, RegisteredWebhook, RegisterWebhook, ReportUrl, Site, SitesPage, SponsorOutcomes, UpdateSiteData, UpdateSiteError, UpdateSiteErrors, UpdateSiteResponse, UpdateSiteResponses, Webhook, WebhookList } from './types.gen.js';
|
|
2
|
+
export type { ClientOptions, CreateSite, CreateSiteData, CreateSiteError, CreateSiteErrors, CreateSiteResponse, CreateSiteResponses, CreateWebhookData, CreateWebhookError, CreateWebhookErrors, CreateWebhookResponse, CreateWebhookResponses, DeleteWebhookData, DeleteWebhookError, DeleteWebhookErrors, DeleteWebhookResponse, DeleteWebhookResponses, Error, GeoJsonPoint, GeoJsonPolygon, GetHealthData, GetHealthResponse, GetHealthResponses, GetInspectionData, GetInspectionError, GetInspectionErrors, GetInspectionReportData, GetInspectionReportError, GetInspectionReportErrors, GetInspectionReportResponse, GetInspectionReportResponses, GetInspectionResponse, GetInspectionResponses, GetSiteData, GetSiteError, GetSiteErrors, GetSiteResponse, GetSiteResponses, GetSponsorOutcomesData, GetSponsorOutcomesError, GetSponsorOutcomesErrors, GetSponsorOutcomesResponse, GetSponsorOutcomesResponses, Health, Inspection, InspectionPhoto, InspectionPhotos, InspectionsPage, InspectionStatus, ListInspectionPhotosData, ListInspectionPhotosError, ListInspectionPhotosErrors, ListInspectionPhotosResponse, ListInspectionPhotosResponses, ListInspectionsData, ListInspectionsError, ListInspectionsErrors, ListInspectionsResponse, ListInspectionsResponses, ListSitesData, ListSitesError, ListSitesErrors, ListSitesResponse, ListSitesResponses, ListWebhooksData, ListWebhooksError, ListWebhooksErrors, ListWebhooksResponse, ListWebhooksResponses, PatchSite, RegisteredWebhook, RegisterWebhook, ReportUrl, Site, SitesPage, SponsorOutcomes, UpdateSiteData, UpdateSiteError, UpdateSiteErrors, UpdateSiteResponse, UpdateSiteResponses, WeatherSnapshot, Webhook, WebhookList } from './types.gen.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9O,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9O,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -20,11 +20,51 @@ export type Site = {
|
|
|
20
20
|
id: string;
|
|
21
21
|
organization_id: string | null;
|
|
22
22
|
name: string | null;
|
|
23
|
+
/**
|
|
24
|
+
* BMP classification recorded at registration (e.g. dumpster_enclosure).
|
|
25
|
+
*/
|
|
26
|
+
bmp_type: string | null;
|
|
27
|
+
address_line_1: string | null;
|
|
28
|
+
city: string | null;
|
|
29
|
+
state_region: string | null;
|
|
30
|
+
centroid: GeoJsonPoint;
|
|
31
|
+
geometry: GeoJsonPolygon;
|
|
32
|
+
/**
|
|
33
|
+
* Caller-supplied idempotency_key / correlation key persisted at registration.
|
|
34
|
+
*/
|
|
35
|
+
client_reference: string | null;
|
|
36
|
+
created_at: string | null;
|
|
23
37
|
updated_at: string | null;
|
|
24
38
|
vertical_extension: {
|
|
25
39
|
[key: string]: unknown;
|
|
26
40
|
};
|
|
27
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Resolved point centroid. Echoed on create; null on reads until ST_AsGeoJSON serialization lands.
|
|
44
|
+
*/
|
|
45
|
+
export type GeoJsonPoint = {
|
|
46
|
+
type: 'Point';
|
|
47
|
+
/**
|
|
48
|
+
* [longitude, latitude].
|
|
49
|
+
*/
|
|
50
|
+
coordinates: [
|
|
51
|
+
number,
|
|
52
|
+
number
|
|
53
|
+
];
|
|
54
|
+
} | null;
|
|
55
|
+
/**
|
|
56
|
+
* Footprint polygon. Echoed on create; null on reads until ST_AsGeoJSON serialization lands.
|
|
57
|
+
*/
|
|
58
|
+
export type GeoJsonPolygon = {
|
|
59
|
+
type: 'Polygon';
|
|
60
|
+
/**
|
|
61
|
+
* Array of linear rings; each ring is [longitude, latitude] pairs.
|
|
62
|
+
*/
|
|
63
|
+
coordinates: Array<Array<[
|
|
64
|
+
number,
|
|
65
|
+
number
|
|
66
|
+
]>>;
|
|
67
|
+
} | null;
|
|
28
68
|
export type Error = {
|
|
29
69
|
error: string;
|
|
30
70
|
error_description?: string;
|
|
@@ -37,6 +77,15 @@ export type CreateSite = {
|
|
|
37
77
|
city?: string | null;
|
|
38
78
|
state_region?: string | null;
|
|
39
79
|
notes?: string | null;
|
|
80
|
+
/**
|
|
81
|
+
* BMP classification for the install (e.g. dumpster_enclosure). Recorded and echoed back; a typed BMP record awaits a bmp_type enum migration.
|
|
82
|
+
*/
|
|
83
|
+
bmp_type?: string;
|
|
84
|
+
geometry?: GeoJsonPolygon & unknown;
|
|
85
|
+
/**
|
|
86
|
+
* Caller-supplied correlation/dedup key. Persisted and echoed as `client_reference`, and included in the `site.registered` webhook. Complements the `Idempotency-Key` header.
|
|
87
|
+
*/
|
|
88
|
+
idempotency_key?: string;
|
|
40
89
|
vertical_extension?: {
|
|
41
90
|
[key: string]: unknown;
|
|
42
91
|
};
|
|
@@ -62,10 +111,7 @@ export type Inspection = {
|
|
|
62
111
|
id: string;
|
|
63
112
|
organization_id: string | null;
|
|
64
113
|
site_id: string | null;
|
|
65
|
-
|
|
66
|
-
* quality_status: pending|pass|fail|review_required.
|
|
67
|
-
*/
|
|
68
|
-
status: string | null;
|
|
114
|
+
status: InspectionStatus;
|
|
69
115
|
condition_summary: string | null;
|
|
70
116
|
source: string | null;
|
|
71
117
|
started_at: string | null;
|
|
@@ -74,8 +120,24 @@ export type Inspection = {
|
|
|
74
120
|
reviewed_at: string | null;
|
|
75
121
|
inspector_user_id: string | null;
|
|
76
122
|
signature_signed_at: string | null;
|
|
77
|
-
|
|
78
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Count of present findings on the inspection.
|
|
125
|
+
*/
|
|
126
|
+
deficiency_count: number;
|
|
127
|
+
weather_snapshot: WeatherSnapshot;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* quality_status: pending|pass|fail|review_required.
|
|
131
|
+
*/
|
|
132
|
+
export type InspectionStatus = 'pending' | 'pass' | 'fail' | 'review_required' | null;
|
|
133
|
+
export type WeatherSnapshot = {
|
|
134
|
+
observed_at?: string | null;
|
|
135
|
+
temperature_c?: number | null;
|
|
136
|
+
conditions?: string | null;
|
|
137
|
+
recent_precip_in?: number | null;
|
|
138
|
+
design_storm_depth_in?: number | null;
|
|
139
|
+
source?: string | null;
|
|
140
|
+
} | null;
|
|
79
141
|
export type InspectionPhotos = {
|
|
80
142
|
data: Array<InspectionPhoto>;
|
|
81
143
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.gen.d.ts","sourceRoot":"","sources":["../../src/generated/types.gen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.gen.d.ts","sourceRoot":"","sources":["../../src/generated/types.gen.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./generated/index.js";
|
|
2
|
-
export { createClient, ApiError, DEFAULT_BASE_URL, type StormwaterIQClientOptions, } from "./client.js";
|
|
2
|
+
export { createClient, ApiError, DEFAULT_BASE_URL, type StormwaterIQClientOptions, type TokenInput, } from "./client.js";
|
|
3
3
|
export { createRetryingFetch, type RetryingFetchOptions } from "./retry.js";
|
|
4
|
+
export { createTokenSource, DEFAULT_TOKEN_URL, TokenError, type TokenSource, type TokenSourceOptions, } from "./oauth.js";
|
|
4
5
|
export * as webhooks from "./webhooks.js";
|
|
5
6
|
export { verify as verifyWebhook, SIGNATURE_TOLERANCE_SECONDS, } from "./webhooks.js";
|
|
7
|
+
export { parseWebhookEvent, WebhookParseError, type WebhookEvent, type WebhookEnvelope, type WebhookEventType, type WebhookPayloadMap, type WebhookGeoPoint, } from "./webhook-events.js";
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,KAAK,yBAAyB,EAC9B,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG5E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,MAAM,IAAI,aAAa,EACvB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,10 @@ export * from "./generated/index.js";
|
|
|
4
4
|
// Configured-client factory + error envelope layered over the generated core.
|
|
5
5
|
export { createClient, ApiError, DEFAULT_BASE_URL, } from "./client.js";
|
|
6
6
|
export { createRetryingFetch } from "./retry.js";
|
|
7
|
+
// OAuth2 client-credentials token source (mint + cache + refresh-ahead).
|
|
8
|
+
export { createTokenSource, DEFAULT_TOKEN_URL, TokenError, } from "./oauth.js";
|
|
7
9
|
// Reference webhook-signature verifier (byte-identical to the server + Python SDK).
|
|
8
10
|
export * as webhooks from "./webhooks.js";
|
|
9
11
|
export { verify as verifyWebhook, SIGNATURE_TOLERANCE_SECONDS, } from "./webhooks.js";
|
|
12
|
+
// Typed webhook delivery envelope + per-event payloads + parser.
|
|
13
|
+
export { parseWebhookEvent, WebhookParseError, } from "./webhook-events.js";
|
package/dist/oauth.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth2 client-credentials token source for the StormwaterIQ external API
|
|
3
|
+
* (docs/external-api.md §04). The SDK's `createClient` accepts a ready bearer
|
|
4
|
+
* token; this helper mints one from a `client_id`/`client_secret` and keeps it
|
|
5
|
+
* fresh — caching the token, refreshing ahead of expiry, and collapsing
|
|
6
|
+
* concurrent requests into a single in-flight grant. Every tenant would
|
|
7
|
+
* otherwise re-implement exactly this.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createClient, createTokenSource } from "@stormwateriq/api-client";
|
|
11
|
+
* const tokens = createTokenSource({
|
|
12
|
+
* clientId: process.env.SWIQ_CLIENT_ID!,
|
|
13
|
+
* clientSecret: process.env.SWIQ_CLIENT_SECRET!,
|
|
14
|
+
* scopes: ["site:read:owned", "site:write:owned"],
|
|
15
|
+
* });
|
|
16
|
+
* const client = createClient({ token: tokens });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
/** Default token endpoint (client_credentials grant). */
|
|
20
|
+
export declare const DEFAULT_TOKEN_URL = "https://api.stormwateriq.com/oauth/token";
|
|
21
|
+
export type TokenSourceOptions = {
|
|
22
|
+
clientId: string;
|
|
23
|
+
clientSecret: string;
|
|
24
|
+
/** Requested scopes (array or space-delimited string). Omit for the client's full grant. */
|
|
25
|
+
scopes?: string[] | string;
|
|
26
|
+
/** Token endpoint. Defaults to {@link DEFAULT_TOKEN_URL}, or `${baseUrl}/oauth/token`. */
|
|
27
|
+
tokenUrl?: string;
|
|
28
|
+
/** API base URL; used to derive the token URL when `tokenUrl` is omitted. */
|
|
29
|
+
baseUrl?: string;
|
|
30
|
+
/** Injectable fetch (defaults to global fetch); handy for tests. */
|
|
31
|
+
fetch?: typeof fetch;
|
|
32
|
+
/** Refresh this many seconds before the token actually expires (default 60). */
|
|
33
|
+
refreshSkewSeconds?: number;
|
|
34
|
+
};
|
|
35
|
+
export type TokenSource = {
|
|
36
|
+
/** Return a valid access token, minting or refreshing as needed. */
|
|
37
|
+
getToken(): Promise<string>;
|
|
38
|
+
/** Drop the cached token so the next {@link getToken} re-mints. */
|
|
39
|
+
reset(): void;
|
|
40
|
+
};
|
|
41
|
+
/** Thrown when the token endpoint returns a non-2xx or malformed response. */
|
|
42
|
+
export declare class TokenError extends Error {
|
|
43
|
+
status: number;
|
|
44
|
+
code: string;
|
|
45
|
+
constructor(status: number, code: string, message: string);
|
|
46
|
+
}
|
|
47
|
+
export declare function createTokenSource(opts: TokenSourceOptions): TokenSource;
|
|
48
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,6CAAoC,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oEAAoE;IACpE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,mEAAmE;IACnE,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AASF,8EAA8E;AAC9E,qBAAa,UAAW,SAAQ,KAAK;IAE1B,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CA0EvE"}
|
package/dist/oauth.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { DEFAULT_BASE_URL } from "./client.js";
|
|
2
|
+
/**
|
|
3
|
+
* OAuth2 client-credentials token source for the StormwaterIQ external API
|
|
4
|
+
* (docs/external-api.md §04). The SDK's `createClient` accepts a ready bearer
|
|
5
|
+
* token; this helper mints one from a `client_id`/`client_secret` and keeps it
|
|
6
|
+
* fresh — caching the token, refreshing ahead of expiry, and collapsing
|
|
7
|
+
* concurrent requests into a single in-flight grant. Every tenant would
|
|
8
|
+
* otherwise re-implement exactly this.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { createClient, createTokenSource } from "@stormwateriq/api-client";
|
|
12
|
+
* const tokens = createTokenSource({
|
|
13
|
+
* clientId: process.env.SWIQ_CLIENT_ID!,
|
|
14
|
+
* clientSecret: process.env.SWIQ_CLIENT_SECRET!,
|
|
15
|
+
* scopes: ["site:read:owned", "site:write:owned"],
|
|
16
|
+
* });
|
|
17
|
+
* const client = createClient({ token: tokens });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
/** Default token endpoint (client_credentials grant). */
|
|
21
|
+
export const DEFAULT_TOKEN_URL = `${DEFAULT_BASE_URL}/oauth/token`;
|
|
22
|
+
/** Thrown when the token endpoint returns a non-2xx or malformed response. */
|
|
23
|
+
export class TokenError extends Error {
|
|
24
|
+
status;
|
|
25
|
+
code;
|
|
26
|
+
constructor(status, code, message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.status = status;
|
|
29
|
+
this.code = code;
|
|
30
|
+
this.name = "TokenError";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function createTokenSource(opts) {
|
|
34
|
+
const fetchImpl = opts.fetch ?? fetch;
|
|
35
|
+
const tokenUrl = opts.tokenUrl ?? (opts.baseUrl ? `${opts.baseUrl}/oauth/token` : DEFAULT_TOKEN_URL);
|
|
36
|
+
const skewMs = (opts.refreshSkewSeconds ?? 60) * 1000;
|
|
37
|
+
const scope = Array.isArray(opts.scopes) ? opts.scopes.join(" ") : opts.scopes;
|
|
38
|
+
let cached = null;
|
|
39
|
+
let inFlight = null;
|
|
40
|
+
async function mint() {
|
|
41
|
+
const body = new URLSearchParams({ grant_type: "client_credentials" });
|
|
42
|
+
if (scope)
|
|
43
|
+
body.set("scope", scope);
|
|
44
|
+
// client_secret_basic (RFC 6749 §2.3.1) — both basic and post are supported.
|
|
45
|
+
const basic = typeof btoa === "function"
|
|
46
|
+
? btoa(`${opts.clientId}:${opts.clientSecret}`)
|
|
47
|
+
: Buffer.from(`${opts.clientId}:${opts.clientSecret}`).toString("base64");
|
|
48
|
+
let res;
|
|
49
|
+
try {
|
|
50
|
+
res = await fetchImpl(tokenUrl, {
|
|
51
|
+
method: "POST",
|
|
52
|
+
headers: {
|
|
53
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
54
|
+
Accept: "application/json",
|
|
55
|
+
Authorization: `Basic ${basic}`,
|
|
56
|
+
},
|
|
57
|
+
body: body.toString(),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
throw new TokenError(0, "network_error", err instanceof Error ? err.message : String(err));
|
|
62
|
+
}
|
|
63
|
+
const text = await res.text();
|
|
64
|
+
let json;
|
|
65
|
+
try {
|
|
66
|
+
json = text ? JSON.parse(text) : {};
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
throw new TokenError(res.status, "invalid_response", `Token endpoint returned non-JSON: ${text.slice(0, 200)}`);
|
|
70
|
+
}
|
|
71
|
+
if (!res.ok || typeof json.access_token !== "string") {
|
|
72
|
+
throw new TokenError(res.status, json.error ?? "token_request_failed", json.error_description ?? `Token request failed with status ${res.status}`);
|
|
73
|
+
}
|
|
74
|
+
const expiresInMs = (json.expires_in ?? 3600) * 1000;
|
|
75
|
+
cached = { token: json.access_token, expiresAtMs: Date.now() + expiresInMs };
|
|
76
|
+
return json.access_token;
|
|
77
|
+
}
|
|
78
|
+
async function getToken() {
|
|
79
|
+
if (cached && cached.expiresAtMs - skewMs > Date.now()) {
|
|
80
|
+
return cached.token;
|
|
81
|
+
}
|
|
82
|
+
// Single-flight: concurrent callers share one in-flight grant.
|
|
83
|
+
if (!inFlight) {
|
|
84
|
+
inFlight = mint().finally(() => {
|
|
85
|
+
inFlight = null;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return inFlight;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
getToken,
|
|
92
|
+
reset() {
|
|
93
|
+
cached = null;
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed webhook delivery contracts for the StormwaterIQ external API
|
|
3
|
+
* (docs/external-api.md §06). The gateway POSTs a signed JSON envelope to each
|
|
4
|
+
* registered endpoint; verify it with {@link verifyWebhook}, then parse it with
|
|
5
|
+
* {@link parseWebhookEvent} to get a discriminated union you can `switch` on.
|
|
6
|
+
*
|
|
7
|
+
* These shapes mirror the server's canonical `WebhookPayloadMap` (packages/api
|
|
8
|
+
* `lib/webhook-emit.ts`) field-for-field — change them together.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { verifyWebhook, parseWebhookEvent } from "@stormwateriq/api-client";
|
|
12
|
+
* if (!verifyWebhook(rawBody, req.headers["x-stormwateriq-signature"], secret)) return res.status(400);
|
|
13
|
+
* const event = parseWebhookEvent(rawBody);
|
|
14
|
+
* switch (event.type) {
|
|
15
|
+
* case "site.registered":
|
|
16
|
+
* link(event.data.site_id, event.data.client_reference);
|
|
17
|
+
* break;
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/** GeoJSON point used in `site.*` payloads. */
|
|
22
|
+
export type WebhookGeoPoint = {
|
|
23
|
+
type: "Point";
|
|
24
|
+
coordinates: [number, number];
|
|
25
|
+
};
|
|
26
|
+
/** Per-event `data` contracts, keyed by event type. */
|
|
27
|
+
export type WebhookPayloadMap = {
|
|
28
|
+
"site.registered": {
|
|
29
|
+
site_id: string;
|
|
30
|
+
tenant_slug: string | null;
|
|
31
|
+
bmp_type: string | null;
|
|
32
|
+
/** Caller's idempotency_key / correlation key from createSite (null if none). */
|
|
33
|
+
client_reference: string | null;
|
|
34
|
+
created_at: string | null;
|
|
35
|
+
centroid: WebhookGeoPoint;
|
|
36
|
+
};
|
|
37
|
+
"inspection.completed": {
|
|
38
|
+
inspection_id: string;
|
|
39
|
+
site_id: string;
|
|
40
|
+
completed_at: string;
|
|
41
|
+
/** Count of present findings on the submitted inspection. */
|
|
42
|
+
deficiency_count: number;
|
|
43
|
+
condition_summary?: string | null;
|
|
44
|
+
};
|
|
45
|
+
"inspection.deficiency_opened": {
|
|
46
|
+
inspection_id: string;
|
|
47
|
+
site_id: string;
|
|
48
|
+
deficiency_id: string | null;
|
|
49
|
+
/** Finding-code vocabulary (`finding_type`). */
|
|
50
|
+
deficiency_type: string;
|
|
51
|
+
/** 0–5 severity. */
|
|
52
|
+
severity: number;
|
|
53
|
+
opened_at: string;
|
|
54
|
+
};
|
|
55
|
+
"site.storm_impacted": {
|
|
56
|
+
site_id: string;
|
|
57
|
+
organization_id: string;
|
|
58
|
+
weather_event_id: string;
|
|
59
|
+
reasons: string[];
|
|
60
|
+
impacted_at: string;
|
|
61
|
+
inspection_task_id: string | null;
|
|
62
|
+
inspector_assigned: boolean;
|
|
63
|
+
};
|
|
64
|
+
"inspection.assigned": {
|
|
65
|
+
inspection_task_id: string;
|
|
66
|
+
site_id: string;
|
|
67
|
+
organization_id: string;
|
|
68
|
+
assignee_user_id: string;
|
|
69
|
+
scheduled_for: string;
|
|
70
|
+
/** Null when the task has no due date (manual assignments); storm/recurring always set one. */
|
|
71
|
+
due_at: string | null;
|
|
72
|
+
source: string;
|
|
73
|
+
};
|
|
74
|
+
"inspection.deficiency_closed": {
|
|
75
|
+
deficiency_id: string;
|
|
76
|
+
inspection_id: string;
|
|
77
|
+
site_id: string;
|
|
78
|
+
resolved_at: string;
|
|
79
|
+
};
|
|
80
|
+
"site.compliance_status_changed": {
|
|
81
|
+
site_id: string;
|
|
82
|
+
compliance_status: string;
|
|
83
|
+
changed_at: string;
|
|
84
|
+
};
|
|
85
|
+
"certificate.ready": {
|
|
86
|
+
site_id: string;
|
|
87
|
+
certificate_url: string;
|
|
88
|
+
generated_at: string;
|
|
89
|
+
};
|
|
90
|
+
"sponsor.outcome_accrued": {
|
|
91
|
+
sponsor_id: string;
|
|
92
|
+
site_id: string;
|
|
93
|
+
period: string;
|
|
94
|
+
};
|
|
95
|
+
"permit.expiring_soon": {
|
|
96
|
+
site_id: string;
|
|
97
|
+
permit_id: string;
|
|
98
|
+
expires_on: string;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
/** The full set of delivered event types. */
|
|
102
|
+
export type WebhookEventType = keyof WebhookPayloadMap;
|
|
103
|
+
/** Signed delivery envelope: `id` is the stable per-event dedup key. */
|
|
104
|
+
export type WebhookEnvelope<T extends WebhookEventType = WebhookEventType> = {
|
|
105
|
+
id: string;
|
|
106
|
+
type: T;
|
|
107
|
+
created_at: string;
|
|
108
|
+
data: WebhookPayloadMap[T];
|
|
109
|
+
};
|
|
110
|
+
/** Discriminated union over `type` — `switch (event.type)` narrows `event.data`. */
|
|
111
|
+
export type WebhookEvent = {
|
|
112
|
+
[T in WebhookEventType]: WebhookEnvelope<T>;
|
|
113
|
+
}[WebhookEventType];
|
|
114
|
+
/** Thrown by {@link parseWebhookEvent} when the body isn't a valid envelope. */
|
|
115
|
+
export declare class WebhookParseError extends Error {
|
|
116
|
+
constructor(message: string);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Parse a verified webhook body into a typed {@link WebhookEvent}. Validates the
|
|
120
|
+
* envelope shape (`id`, `type`, `created_at`, `data`); does NOT verify the
|
|
121
|
+
* signature — call {@link verifyWebhook} on the raw body first.
|
|
122
|
+
*
|
|
123
|
+
* Pass `{ allowUnknownType: true }` to accept event types not in this SDK's
|
|
124
|
+
* catalog (forward-compat) instead of throwing.
|
|
125
|
+
*/
|
|
126
|
+
export declare function parseWebhookEvent(rawBody: string, opts?: {
|
|
127
|
+
allowUnknownType?: boolean;
|
|
128
|
+
}): WebhookEvent;
|
|
129
|
+
//# sourceMappingURL=webhook-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-events.d.ts","sourceRoot":"","sources":["../src/webhook-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed webhook delivery contracts for the StormwaterIQ external API
|
|
3
|
+
* (docs/external-api.md §06). The gateway POSTs a signed JSON envelope to each
|
|
4
|
+
* registered endpoint; verify it with {@link verifyWebhook}, then parse it with
|
|
5
|
+
* {@link parseWebhookEvent} to get a discriminated union you can `switch` on.
|
|
6
|
+
*
|
|
7
|
+
* These shapes mirror the server's canonical `WebhookPayloadMap` (packages/api
|
|
8
|
+
* `lib/webhook-emit.ts`) field-for-field — change them together.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { verifyWebhook, parseWebhookEvent } from "@stormwateriq/api-client";
|
|
12
|
+
* if (!verifyWebhook(rawBody, req.headers["x-stormwateriq-signature"], secret)) return res.status(400);
|
|
13
|
+
* const event = parseWebhookEvent(rawBody);
|
|
14
|
+
* switch (event.type) {
|
|
15
|
+
* case "site.registered":
|
|
16
|
+
* link(event.data.site_id, event.data.client_reference);
|
|
17
|
+
* break;
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/** Thrown by {@link parseWebhookEvent} when the body isn't a valid envelope. */
|
|
22
|
+
export class WebhookParseError extends Error {
|
|
23
|
+
constructor(message) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "WebhookParseError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const KNOWN_EVENT_TYPES = new Set([
|
|
29
|
+
"site.registered",
|
|
30
|
+
"inspection.completed",
|
|
31
|
+
"inspection.deficiency_opened",
|
|
32
|
+
"site.storm_impacted",
|
|
33
|
+
"inspection.assigned",
|
|
34
|
+
"inspection.deficiency_closed",
|
|
35
|
+
"site.compliance_status_changed",
|
|
36
|
+
"certificate.ready",
|
|
37
|
+
"sponsor.outcome_accrued",
|
|
38
|
+
"permit.expiring_soon",
|
|
39
|
+
]);
|
|
40
|
+
/**
|
|
41
|
+
* Parse a verified webhook body into a typed {@link WebhookEvent}. Validates the
|
|
42
|
+
* envelope shape (`id`, `type`, `created_at`, `data`); does NOT verify the
|
|
43
|
+
* signature — call {@link verifyWebhook} on the raw body first.
|
|
44
|
+
*
|
|
45
|
+
* Pass `{ allowUnknownType: true }` to accept event types not in this SDK's
|
|
46
|
+
* catalog (forward-compat) instead of throwing.
|
|
47
|
+
*/
|
|
48
|
+
export function parseWebhookEvent(rawBody, opts) {
|
|
49
|
+
let parsed;
|
|
50
|
+
try {
|
|
51
|
+
parsed = JSON.parse(rawBody);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
throw new WebhookParseError(`Body is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
55
|
+
}
|
|
56
|
+
if (!parsed || typeof parsed !== "object") {
|
|
57
|
+
throw new WebhookParseError("Body is not a JSON object.");
|
|
58
|
+
}
|
|
59
|
+
const env = parsed;
|
|
60
|
+
if (typeof env.id !== "string" || typeof env.type !== "string" || typeof env.created_at !== "string") {
|
|
61
|
+
throw new WebhookParseError("Missing envelope fields (expected id, type, created_at, data).");
|
|
62
|
+
}
|
|
63
|
+
if (!env.data || typeof env.data !== "object") {
|
|
64
|
+
throw new WebhookParseError("Envelope `data` is missing or not an object.");
|
|
65
|
+
}
|
|
66
|
+
if (!opts?.allowUnknownType && !KNOWN_EVENT_TYPES.has(env.type)) {
|
|
67
|
+
throw new WebhookParseError(`Unknown event type: ${env.type}`);
|
|
68
|
+
}
|
|
69
|
+
return env;
|
|
70
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stormwateriq/api-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Official TypeScript client for the StormwaterIQ external API: generated typed SDK over the gateway's OpenAPI contract, plus the reference webhook-signature verifier and automatic retries.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|