@goable-io/sdk 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +61 -39
- package/dist/client.d.ts +60 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +137 -0
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +18 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -1
- package/dist/generated/api.d.ts +1423 -372
- package/dist/generated/api.d.ts.map +1 -1
- package/dist/generated/api.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +76 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +21 -18
- package/src/client.ts +214 -0
- package/src/errors.ts +32 -1
- package/src/generated/api.ts +1423 -372
- package/src/index.ts +1 -0
- package/src/types.ts +104 -6
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Fabio Carucci
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
# @goable-io/sdk
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@goable-io/sdk)
|
|
4
|
+
[](https://github.com/goable-io/sdk/actions/workflows/ci.yml)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
|
|
3
7
|
TypeScript client for the [Goable](https://goable.io) API — 0-100 suitability
|
|
4
8
|
scoring for outdoor activities (water, snow, air, land) from real-time weather
|
|
5
9
|
and multi-domain physics.
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
Thin, typed transport over the public tenant-facing REST surface. **Zero runtime
|
|
12
|
+
dependencies.** Works in Node ≥18 and modern browser/edge runtimes (uses the
|
|
13
|
+
global `fetch`). Published to npm with [provenance](https://docs.npmjs.com/generating-provenance-statements).
|
|
10
14
|
|
|
11
15
|
## Install
|
|
12
16
|
|
|
13
17
|
```bash
|
|
14
|
-
npm install @goable-io/sdk
|
|
18
|
+
npm install @goable-io/sdk
|
|
19
|
+
# or: pnpm add @goable-io/sdk
|
|
15
20
|
```
|
|
16
21
|
|
|
17
22
|
## Quickstart
|
|
@@ -21,6 +26,7 @@ import { GoableClient } from "@goable-io/sdk"
|
|
|
21
26
|
|
|
22
27
|
const goable = new GoableClient({ apiKey: process.env.GOABLE_API_KEY! })
|
|
23
28
|
|
|
29
|
+
// Score a single activity at a location + time window
|
|
24
30
|
const result = await goable.score({
|
|
25
31
|
activity: "kitesurfing",
|
|
26
32
|
location: { lat: 43.7, lng: 7.27 },
|
|
@@ -32,14 +38,44 @@ result.verdict // "unsafe" | "poor" | "marginal" | "fair" | "favorable" | "exce
|
|
|
32
38
|
result.confidence
|
|
33
39
|
```
|
|
34
40
|
|
|
41
|
+
Inverse query — "where should I go?" — ranks sub-spots for an activity within
|
|
42
|
+
a region:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
const spots = await goable.recommendSpot({
|
|
46
|
+
activity: "kitesurfing",
|
|
47
|
+
region: { center: { lat: 43.7, lng: 7.27 }, radiusKm: 50 },
|
|
48
|
+
window: { from: "2026-06-01T06:00:00Z", to: "2026-06-01T18:00:00Z" },
|
|
49
|
+
topK: 5,
|
|
50
|
+
})
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Authentication
|
|
54
|
+
|
|
55
|
+
Every request carries your tenant API key. The canonical production header is
|
|
56
|
+
**`X-Goable-Key`**, which the client sends automatically:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
new GoableClient({ apiKey: "gk_…" }) // → sends "X-Goable-Key: gk_…"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> The API also accepts `Authorization: Bearer <key>` as a legacy fallback for
|
|
63
|
+
> direct testing, but new integrations should use the default `X-Goable-Key`
|
|
64
|
+
> path. (Production traffic sits behind CloudFront, which reserves the
|
|
65
|
+
> `Authorization` header for its own signature — the custom header sidesteps
|
|
66
|
+
> that.)
|
|
67
|
+
|
|
68
|
+
Mint a key from the tenant portal at
|
|
69
|
+
[console.goable.io/portal/keys](https://console.goable.io/portal/keys).
|
|
70
|
+
|
|
35
71
|
## Configuration
|
|
36
72
|
|
|
37
73
|
```ts
|
|
38
74
|
new GoableClient({
|
|
39
|
-
apiKey: "…",
|
|
75
|
+
apiKey: "…", // required — sent as X-Goable-Key
|
|
40
76
|
baseUrl: "https://api.goable.io", // default
|
|
41
|
-
timeoutMs: 30_000,
|
|
42
|
-
fetch: customFetch,
|
|
77
|
+
timeoutMs: 30_000, // default; 0 disables
|
|
78
|
+
fetch: customFetch, // default globalThis.fetch (inject for Node <18 / tests)
|
|
43
79
|
})
|
|
44
80
|
```
|
|
45
81
|
|
|
@@ -53,6 +89,7 @@ new GoableClient({
|
|
|
53
89
|
| `scoreHistorical(input)` | `POST /v1/score/historical` | climatology percentiles (Pro+) |
|
|
54
90
|
| `scorePortfolio(input)` | `POST /v1/score/portfolio` | multi-spot joint variance |
|
|
55
91
|
| `explainCounterfactual(input)` | `POST /v1/score/explain-counterfactual` | binding constraint, sensitivities, best window/spot |
|
|
92
|
+
| `recommendSpot(input)` | `POST /v1/recommend-spot` | inverse query: top-K ranked sub-spots |
|
|
56
93
|
| `decision(input)` | `POST /v1/decision` | personalized go/no-go (Pro+) |
|
|
57
94
|
| `deleteUserData(pseudonym)` | `DELETE /v1/decision/user-data/:p` | GDPR erasure; returns receipt headers |
|
|
58
95
|
| `explain(input)` / `briefing(input)` | `POST /v1/intelligence/*` | LLM narratives (Pro+) |
|
|
@@ -60,6 +97,8 @@ new GoableClient({
|
|
|
60
97
|
| `quote(input)` | `POST /v1/underwriting/quote` | parametric premium (Scale) |
|
|
61
98
|
| `health()` | `GET /v1/health` | liveness |
|
|
62
99
|
|
|
100
|
+
Full endpoint reference: [goable.io/docs](https://goable.io/docs).
|
|
101
|
+
|
|
63
102
|
## Errors
|
|
64
103
|
|
|
65
104
|
```ts
|
|
@@ -69,8 +108,8 @@ try {
|
|
|
69
108
|
await goable.score({ activity: "kitesurfing", location: { lat: 43.7, lng: 7.27 }, ensemble: true })
|
|
70
109
|
} catch (err) {
|
|
71
110
|
if (err instanceof GoableApiError) {
|
|
72
|
-
err.status // 402
|
|
73
|
-
err.code // "PAYMENT_REQUIRED"
|
|
111
|
+
err.status // e.g. 402
|
|
112
|
+
err.code // e.g. "PAYMENT_REQUIRED"
|
|
74
113
|
err.issues // Zod issues on 422 VALIDATION_ERROR
|
|
75
114
|
err.detail // free-form context (e.g. plan info)
|
|
76
115
|
} else if (err instanceof GoableNetworkError) {
|
|
@@ -82,40 +121,23 @@ try {
|
|
|
82
121
|
## Browser use
|
|
83
122
|
|
|
84
123
|
The client runs in the browser, but **API keys are secrets** — prefer
|
|
85
|
-
server-side use. For direct browser calls the API's CORS allowlist must
|
|
86
|
-
|
|
124
|
+
server-side use. For direct browser calls the API's CORS allowlist must include
|
|
125
|
+
your origin (contact Goable to allowlist it).
|
|
87
126
|
|
|
88
127
|
## Types are generated from the API contract
|
|
89
128
|
|
|
90
|
-
The request/response types are **generated** from the API's OpenAPI
|
|
91
|
-
document (`
|
|
92
|
-
[`openapi-typescript`](https://github.com/openapi-ts/openapi-typescript) —
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
pnpm --filter @goable-io/sdk gen
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
which rewrites `src/generated/api.ts` + `openapi.json`. A test
|
|
101
|
-
(`generatedFresh.test.ts`) fails in CI if the committed output is stale, so
|
|
102
|
-
the types are always in lock-step with the contract. Adding a brand-new
|
|
103
|
-
endpoint is the only manual step (a new client method).
|
|
129
|
+
The request/response types are **generated** from the Goable API's OpenAPI
|
|
130
|
+
document (`openapi.json`) via
|
|
131
|
+
[`openapi-typescript`](https://github.com/openapi-ts/openapi-typescript) — they
|
|
132
|
+
are never hand-authored, so they can't drift from the contract. The committed
|
|
133
|
+
`openapi.json` tracks the live public API; see
|
|
134
|
+
[CONTRIBUTING.md](./CONTRIBUTING.md) for how it stays in sync.
|
|
104
135
|
|
|
105
|
-
|
|
106
|
-
bodies are modelled as open objects where the endpoint returns a rich,
|
|
107
|
-
documented payload — the full wire payload is always returned, and these
|
|
108
|
-
tighten automatically as the OpenAPI response schemas are enriched.
|
|
136
|
+
## Contributing & releases
|
|
109
137
|
|
|
110
|
-
|
|
138
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md). Releases are automated: merging to
|
|
139
|
+
`main` publishes to npm with provenance.
|
|
111
140
|
|
|
112
|
-
|
|
113
|
-
to `packages/sdk/**` on `main`): it builds, runs the freshness guard +
|
|
114
|
-
tests, resolves the next version, prints `npm pack --dry-run` as a leak
|
|
115
|
-
check, and `pnpm publish --access public` using the org `NPM_TOKEN`. The
|
|
116
|
-
private engine never leaves the repo — only this package's `files` are
|
|
117
|
-
published. `publishConfig` repoints `main`/`types`/`exports` at `dist/` at
|
|
118
|
-
publish time, so in-repo development keeps using the TS sources.
|
|
141
|
+
## License
|
|
119
142
|
|
|
120
|
-
|
|
121
|
-
> stays in this private monorepo by design.
|
|
143
|
+
MIT © Fabio Carucci
|
package/dist/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* GoableClient — thin typed transport over the public Goable REST API.
|
|
3
3
|
* No caching, no business logic; one `request<T>` powers every method.
|
|
4
4
|
*/
|
|
5
|
-
import type { BriefingRequest, BriefingResponse, CounterfactualRequest, CounterfactualResponse, DecisionRequest, DecisionResponse, DeleteUserDataResult, ExplainRequest, ExplainResponse, HealthResponse, ProjectionsRequest, ProjectionsResponse, QuoteRequest, QuoteResponse, RecommendSpotRequest, RecommendSpotResponse, ScoreHistoricalRequest, ScoreHistoricalResponse, ScoreMultiRequest, ScoreMultiResponse, ScorePortfolioRequest, ScorePortfolioResponse, ScoreRequest, ScoreResponse, ScoreSeriesRequest, ScoreSeriesResponse } from "./types.ts";
|
|
5
|
+
import type { AdaptationReportRequest, AdaptationReportResponse, BindPolicyRequest, BindPolicyResponse, BriefingRequest, BriefingResponse, CatalogStatsResponse, CounterfactualRequest, CounterfactualResponse, CreateStationRequest, CreateStationResponse, DecisionRequest, DecisionResponse, DeleteUserDataResult, EdgeCaseRequest, EdgeCaseResponse, EvaluatePolicyResponse, ExplainRequest, ExplainResponse, HealthResponse, ListPoliciesQuery, ListPoliciesResponse, ListStationsResponse, PolicyResponse, ProjectionsPortfolioRequest, ProjectionsPortfolioResponse, ProjectionsRequest, ProjectionsResponse, PublicSignupRequest, PublicSignupResponse, QuoteByIdResponse, QuoteRequest, QuoteResponse, RecentObservationsQuery, RecentObservationsResponse, RecommendSpotRequest, RecommendSpotResponse, ReportOutcomeRequest, ReportOutcomeResponse, ScoreDifficultyRequest, ScoreDifficultyResponse, ScoreHistoricalRequest, ScoreHistoricalResponse, ScoreMultiRequest, ScoreMultiResponse, ScorePortfolioRequest, ScorePortfolioResponse, ScoreRequest, ScoreResponse, ScoreSeriesRequest, ScoreSeriesResponse, SettlePolicyRequest, SettlePolicyResponse, SubmitObservationsRequest, SubmitObservationsResponse, SustainabilityIndexQuery, SustainabilityIndexResponse, UpdateStationRequest, UpdateStationResponse, VerificationExportQuery } from "./types.ts";
|
|
6
6
|
export type FetchLike = (input: string, init?: {
|
|
7
7
|
method?: string;
|
|
8
8
|
headers?: Record<string, string>;
|
|
@@ -53,9 +53,68 @@ export declare class GoableClient {
|
|
|
53
53
|
* cold-start blend.
|
|
54
54
|
*/
|
|
55
55
|
recommendSpot(input: RecommendSpotRequest): Promise<RecommendSpotResponse>;
|
|
56
|
+
/** L15 — skill-conditioned difficulty grids per scoring dimension (Pro+). */
|
|
57
|
+
scoreDifficulty(input: ScoreDifficultyRequest): Promise<ScoreDifficultyResponse>;
|
|
58
|
+
/** Close the calibration loop: report the observed outcome of a scored
|
|
59
|
+
* session. Requires the `outcomes:write` scope. */
|
|
60
|
+
reportOutcome(sessionId: string, input: ReportOutcomeRequest): Promise<ReportOutcomeResponse>;
|
|
61
|
+
/** LLM edge-case narrative for a marginal score. */
|
|
62
|
+
edgeCase(input: EdgeCaseRequest): Promise<EdgeCaseResponse>;
|
|
63
|
+
/** T3 — multi-spot climate-decadal projections (Scale). */
|
|
64
|
+
projectionsPortfolio(input: ProjectionsPortfolioRequest): Promise<ProjectionsPortfolioResponse>;
|
|
65
|
+
/** T3 — adaptation report across months × scenarios × decades (Scale). */
|
|
66
|
+
adaptationReport(input: AdaptationReportRequest): Promise<AdaptationReportResponse>;
|
|
67
|
+
/** Fetch a stored quote by id. */
|
|
68
|
+
getQuote(id: string): Promise<QuoteByIdResponse>;
|
|
69
|
+
/**
|
|
70
|
+
* Bind a recent quote into a policy. Responds 201. A watch-level drift event
|
|
71
|
+
* on the resolved cell surfaces as `driftAdvisories` on success; a
|
|
72
|
+
* warning/critical event refuses the bind with `422 DRIFT_ACTIVE`, thrown as
|
|
73
|
+
* a {@link DriftActiveError}.
|
|
74
|
+
*/
|
|
75
|
+
bindPolicy(input: BindPolicyRequest): Promise<BindPolicyResponse>;
|
|
76
|
+
/** List the calling tenant's bound policies (paginated, boundAt DESC). */
|
|
77
|
+
listPolicies(query?: ListPoliciesQuery): Promise<ListPoliciesResponse>;
|
|
78
|
+
/** Fetch a single policy + its payout events. */
|
|
79
|
+
getPolicy(policyId: string): Promise<PolicyResponse>;
|
|
80
|
+
/** Re-evaluate a bound policy against the historical archive; inserts any
|
|
81
|
+
* newly detected payout events. No request body. */
|
|
82
|
+
evaluatePolicy(policyId: string): Promise<EvaluatePolicyResponse>;
|
|
83
|
+
/**
|
|
84
|
+
* Settle a bound policy. PLATFORM-OPS ONLY — requires the `platform_admin`
|
|
85
|
+
* scope (a cross-tenant underwriter operation, normally run by the daily
|
|
86
|
+
* settlement cron). Not a policyholder self-service action; tenant
|
|
87
|
+
* integrations should not call this.
|
|
88
|
+
*/
|
|
89
|
+
settlePolicy(policyId: string, input: SettlePolicyRequest): Promise<SettlePolicyResponse>;
|
|
90
|
+
/** Register a tenant observation station. Responds 201. */
|
|
91
|
+
createStation(input: CreateStationRequest): Promise<CreateStationResponse>;
|
|
92
|
+
/** List the calling tenant's observation stations. */
|
|
93
|
+
listStations(): Promise<ListStationsResponse>;
|
|
94
|
+
/** Patch a station (partial update). */
|
|
95
|
+
updateStation(stationId: string, input: UpdateStationRequest): Promise<UpdateStationResponse>;
|
|
96
|
+
/** Push station observations into the 0-6h assimilation window (Pro+).
|
|
97
|
+
* Responds 202. */
|
|
98
|
+
submitObservations(input: SubmitObservationsRequest): Promise<SubmitObservationsResponse>;
|
|
99
|
+
/** Most-recent observations for one of the tenant's stations. */
|
|
100
|
+
recentObservations(stationId: string, query?: RecentObservationsQuery): Promise<RecentObservationsResponse>;
|
|
101
|
+
/** Public Goable Sustainability Index (JSON-LD, CC BY 4.0). */
|
|
102
|
+
sustainabilityIndex(query: SustainabilityIndexQuery): Promise<SustainabilityIndexResponse>;
|
|
103
|
+
/** Public Stream F forecast-verification export. Returns the raw NDJSON
|
|
104
|
+
* stream as a string (one cell per line + a trailing meta line). */
|
|
105
|
+
verificationExport(query?: VerificationExportQuery): Promise<string>;
|
|
106
|
+
/** Public L15 Difficulty Atlas export. Returns the raw NDJSON stream. */
|
|
107
|
+
difficultyAtlasExport(): Promise<string>;
|
|
108
|
+
/** Self-service tenant signup (no auth). Always 202 on success. */
|
|
109
|
+
publicSignup(input: PublicSignupRequest): Promise<PublicSignupResponse>;
|
|
110
|
+
/** Open catalogue coverage stats (no auth). */
|
|
111
|
+
catalogStats(): Promise<CatalogStatsResponse>;
|
|
56
112
|
/** GDPR Art. 17 erasure. Surfaces the receipt headers from a 204. */
|
|
57
113
|
deleteUserData(pseudonym: string): Promise<DeleteUserDataResult>;
|
|
58
114
|
private request;
|
|
115
|
+
/** Like {@link request} but returns the raw response body as text — used for
|
|
116
|
+
* the NDJSON research streams, which are not a single JSON document. */
|
|
117
|
+
private requestText;
|
|
59
118
|
private rawRequest;
|
|
60
119
|
}
|
|
61
120
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -70,6 +70,107 @@ export class GoableClient {
|
|
|
70
70
|
recommendSpot(input) {
|
|
71
71
|
return this.request("POST", "/v1/recommend-spot", input);
|
|
72
72
|
}
|
|
73
|
+
/** L15 — skill-conditioned difficulty grids per scoring dimension (Pro+). */
|
|
74
|
+
scoreDifficulty(input) {
|
|
75
|
+
return this.request("POST", "/v1/score/difficulty", input);
|
|
76
|
+
}
|
|
77
|
+
/** Close the calibration loop: report the observed outcome of a scored
|
|
78
|
+
* session. Requires the `outcomes:write` scope. */
|
|
79
|
+
reportOutcome(sessionId, input) {
|
|
80
|
+
return this.request("POST", `/v1/score/${encodeURIComponent(sessionId)}/outcome`, input);
|
|
81
|
+
}
|
|
82
|
+
/** LLM edge-case narrative for a marginal score. */
|
|
83
|
+
edgeCase(input) {
|
|
84
|
+
return this.request("POST", "/v1/intelligence/edge-case", input);
|
|
85
|
+
}
|
|
86
|
+
/** T3 — multi-spot climate-decadal projections (Scale). */
|
|
87
|
+
projectionsPortfolio(input) {
|
|
88
|
+
return this.request("POST", "/v1/projections/portfolio", input);
|
|
89
|
+
}
|
|
90
|
+
/** T3 — adaptation report across months × scenarios × decades (Scale). */
|
|
91
|
+
adaptationReport(input) {
|
|
92
|
+
return this.request("POST", "/v1/projections/adaptation-report", input);
|
|
93
|
+
}
|
|
94
|
+
// ── underwriting policy lifecycle (Scale) ─────────────────────────────────
|
|
95
|
+
/** Fetch a stored quote by id. */
|
|
96
|
+
getQuote(id) {
|
|
97
|
+
return this.request("GET", `/v1/underwriting/quote/${encodeURIComponent(id)}`);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Bind a recent quote into a policy. Responds 201. A watch-level drift event
|
|
101
|
+
* on the resolved cell surfaces as `driftAdvisories` on success; a
|
|
102
|
+
* warning/critical event refuses the bind with `422 DRIFT_ACTIVE`, thrown as
|
|
103
|
+
* a {@link DriftActiveError}.
|
|
104
|
+
*/
|
|
105
|
+
bindPolicy(input) {
|
|
106
|
+
return this.request("POST", "/v1/underwriting/policy/bind", input);
|
|
107
|
+
}
|
|
108
|
+
/** List the calling tenant's bound policies (paginated, boundAt DESC). */
|
|
109
|
+
listPolicies(query) {
|
|
110
|
+
return this.request("GET", `/v1/underwriting/policy${toQuery(query)}`);
|
|
111
|
+
}
|
|
112
|
+
/** Fetch a single policy + its payout events. */
|
|
113
|
+
getPolicy(policyId) {
|
|
114
|
+
return this.request("GET", `/v1/underwriting/policy/${encodeURIComponent(policyId)}`);
|
|
115
|
+
}
|
|
116
|
+
/** Re-evaluate a bound policy against the historical archive; inserts any
|
|
117
|
+
* newly detected payout events. No request body. */
|
|
118
|
+
evaluatePolicy(policyId) {
|
|
119
|
+
return this.request("POST", `/v1/underwriting/policy/${encodeURIComponent(policyId)}/evaluate`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Settle a bound policy. PLATFORM-OPS ONLY — requires the `platform_admin`
|
|
123
|
+
* scope (a cross-tenant underwriter operation, normally run by the daily
|
|
124
|
+
* settlement cron). Not a policyholder self-service action; tenant
|
|
125
|
+
* integrations should not call this.
|
|
126
|
+
*/
|
|
127
|
+
settlePolicy(policyId, input) {
|
|
128
|
+
return this.request("POST", `/v1/underwriting/policy/${encodeURIComponent(policyId)}/settle`, input);
|
|
129
|
+
}
|
|
130
|
+
// ── observations / nowcasting (L5.3) ──────────────────────────────────────
|
|
131
|
+
/** Register a tenant observation station. Responds 201. */
|
|
132
|
+
createStation(input) {
|
|
133
|
+
return this.request("POST", "/v1/observations/stations", input);
|
|
134
|
+
}
|
|
135
|
+
/** List the calling tenant's observation stations. */
|
|
136
|
+
listStations() {
|
|
137
|
+
return this.request("GET", "/v1/observations/stations");
|
|
138
|
+
}
|
|
139
|
+
/** Patch a station (partial update). */
|
|
140
|
+
updateStation(stationId, input) {
|
|
141
|
+
return this.request("PATCH", `/v1/observations/stations/${encodeURIComponent(stationId)}`, input);
|
|
142
|
+
}
|
|
143
|
+
/** Push station observations into the 0-6h assimilation window (Pro+).
|
|
144
|
+
* Responds 202. */
|
|
145
|
+
submitObservations(input) {
|
|
146
|
+
return this.request("POST", "/v1/observations", input);
|
|
147
|
+
}
|
|
148
|
+
/** Most-recent observations for one of the tenant's stations. */
|
|
149
|
+
recentObservations(stationId, query) {
|
|
150
|
+
return this.request("GET", `/v1/observations/stations/${encodeURIComponent(stationId)}/recent${toQuery(query)}`);
|
|
151
|
+
}
|
|
152
|
+
// ── public / research (no-auth surfaces) ──────────────────────────────────
|
|
153
|
+
/** Public Goable Sustainability Index (JSON-LD, CC BY 4.0). */
|
|
154
|
+
sustainabilityIndex(query) {
|
|
155
|
+
return this.request("GET", `/v1/public/sustainability-index${toQuery(query)}`);
|
|
156
|
+
}
|
|
157
|
+
/** Public Stream F forecast-verification export. Returns the raw NDJSON
|
|
158
|
+
* stream as a string (one cell per line + a trailing meta line). */
|
|
159
|
+
verificationExport(query) {
|
|
160
|
+
return this.requestText("GET", `/v1/research/verification/export${toQuery(query)}`);
|
|
161
|
+
}
|
|
162
|
+
/** Public L15 Difficulty Atlas export. Returns the raw NDJSON stream. */
|
|
163
|
+
difficultyAtlasExport() {
|
|
164
|
+
return this.requestText("GET", "/v1/research/difficulty-atlas/export.jsonl");
|
|
165
|
+
}
|
|
166
|
+
/** Self-service tenant signup (no auth). Always 202 on success. */
|
|
167
|
+
publicSignup(input) {
|
|
168
|
+
return this.request("POST", "/v1/public/signup", input);
|
|
169
|
+
}
|
|
170
|
+
/** Open catalogue coverage stats (no auth). */
|
|
171
|
+
catalogStats() {
|
|
172
|
+
return this.request("GET", "/v1/public/catalog-stats");
|
|
173
|
+
}
|
|
73
174
|
/** GDPR Art. 17 erasure. Surfaces the receipt headers from a 204. */
|
|
74
175
|
async deleteUserData(pseudonym) {
|
|
75
176
|
const res = await this.rawRequest("DELETE", `/v1/decision/user-data/${encodeURIComponent(pseudonym)}`);
|
|
@@ -97,6 +198,29 @@ export class GoableClient {
|
|
|
97
198
|
throw toApiError(res.status, parsed);
|
|
98
199
|
return parsed;
|
|
99
200
|
}
|
|
201
|
+
/** Like {@link request} but returns the raw response body as text — used for
|
|
202
|
+
* the NDJSON research streams, which are not a single JSON document. */
|
|
203
|
+
async requestText(method, path) {
|
|
204
|
+
const res = await this.rawRequest(method, path);
|
|
205
|
+
let text;
|
|
206
|
+
try {
|
|
207
|
+
text = await res.text();
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
throw new GoableNetworkError("Failed to read response body", "parse", err);
|
|
211
|
+
}
|
|
212
|
+
if (!res.ok) {
|
|
213
|
+
let parsed = text;
|
|
214
|
+
try {
|
|
215
|
+
parsed = JSON.parse(text);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// non-JSON error body — pass the raw text through to toApiError
|
|
219
|
+
}
|
|
220
|
+
throw toApiError(res.status, parsed);
|
|
221
|
+
}
|
|
222
|
+
return text;
|
|
223
|
+
}
|
|
100
224
|
async rawRequest(method, path, body) {
|
|
101
225
|
// `X-Goable-Key` rather than `Authorization: Bearer` — the API
|
|
102
226
|
// sits behind CloudFront with OAC, which hijacks the standard
|
|
@@ -130,6 +254,19 @@ export class GoableClient {
|
|
|
130
254
|
}
|
|
131
255
|
}
|
|
132
256
|
}
|
|
257
|
+
/** Serialise a query object into a leading-`?` string (or "" when empty).
|
|
258
|
+
* Skips undefined/null; isomorphic (URLSearchParams is a Node 18+/browser global). */
|
|
259
|
+
function toQuery(params) {
|
|
260
|
+
if (!params)
|
|
261
|
+
return "";
|
|
262
|
+
const usp = new URLSearchParams();
|
|
263
|
+
for (const [k, v] of Object.entries(params)) {
|
|
264
|
+
if (v !== undefined && v !== null)
|
|
265
|
+
usp.append(k, String(v));
|
|
266
|
+
}
|
|
267
|
+
const s = usp.toString();
|
|
268
|
+
return s ? `?${s}` : "";
|
|
269
|
+
}
|
|
133
270
|
async function safeJson(res) {
|
|
134
271
|
let text;
|
|
135
272
|
try {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA0F5D,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AAChD,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEjC,MAAM,OAAO,YAAY;IACN,MAAM,CAAQ;IACd,OAAO,CAAQ;IACf,SAAS,CAAW;IACpB,SAAS,CAAQ;IAElC,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACvE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,IAAK,UAAU,CAAC,KAA0C,CAAA;QACjF,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;QAC7F,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;IAC1D,CAAC;IAED,2EAA2E;IAC3E,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAiB,KAAK,EAAE,YAAY,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,KAAmB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAgB,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAChE,CAAC;IAED,WAAW,CAAC,KAAyB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAsB,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;IAC7E,CAAC;IAED,UAAU,CAAC,KAAwB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAqB,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAC3E,CAAC;IAED,eAAe,CAAC,KAA6B;QAC3C,OAAO,IAAI,CAAC,OAAO,CAA0B,MAAM,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAA;IACrF,CAAC;IAED,cAAc,CAAC,KAA4B;QACzC,OAAO,IAAI,CAAC,OAAO,CAAyB,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAA;IACnF,CAAC;IAED,qBAAqB,CAAC,KAA4B;QAChD,OAAO,IAAI,CAAC,OAAO,CAAyB,MAAM,EAAE,kCAAkC,EAAE,KAAK,CAAC,CAAA;IAChG,CAAC;IAED,QAAQ,CAAC,KAAsB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAmB,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,CAAC,KAAqB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAkB,MAAM,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAA;IACjF,CAAC;IAED,QAAQ,CAAC,KAAsB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAmB,MAAM,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAA;IACnF,CAAC;IAED,WAAW,CAAC,KAAyB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAsB,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,KAAmB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAgB,MAAM,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAA;IAC7E,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAA2B;QACvC,OAAO,IAAI,CAAC,OAAO,CAAwB,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAA;IACjF,CAAC;IAED,6EAA6E;IAC7E,eAAe,CAAC,KAA6B;QAC3C,OAAO,IAAI,CAAC,OAAO,CAA0B,MAAM,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAA;IACrF,CAAC;IAED;wDACoD;IACpD,aAAa,CAAC,SAAiB,EAAE,KAA2B;QAC1D,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,aAAa,kBAAkB,CAAC,SAAS,CAAC,UAAU,EACpD,KAAK,CACN,CAAA;IACH,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,KAAsB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAmB,MAAM,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,2DAA2D;IAC3D,oBAAoB,CAAC,KAAkC;QACrD,OAAO,IAAI,CAAC,OAAO,CAA+B,MAAM,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAA;IAC/F,CAAC;IAED,0EAA0E;IAC1E,gBAAgB,CAAC,KAA8B;QAC7C,OAAO,IAAI,CAAC,OAAO,CAA2B,MAAM,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAA;IACnG,CAAC;IAED,6EAA6E;IAC7E,kCAAkC;IAClC,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAoB,KAAK,EAAE,0BAA0B,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnG,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAwB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAqB,MAAM,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAA;IACxF,CAAC;IAED,0EAA0E;IAC1E,YAAY,CAAC,KAAyB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAuB,KAAK,EAAE,0BAA0B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC9F,CAAC;IAED,iDAAiD;IACjD,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAiB,KAAK,EAAE,2BAA2B,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvG,CAAC;IAED;yDACqD;IACrD,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,2BAA2B,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CACnE,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,QAAgB,EAAE,KAA0B;QACvD,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,2BAA2B,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAChE,KAAK,CACN,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,2DAA2D;IAC3D,aAAa,CAAC,KAA2B;QACvC,OAAO,IAAI,CAAC,OAAO,CAAwB,MAAM,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAA;IACxF,CAAC;IAED,sDAAsD;IACtD,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAuB,KAAK,EAAE,2BAA2B,CAAC,CAAA;IAC/E,CAAC;IAED,wCAAwC;IACxC,aAAa,CAAC,SAAiB,EAAE,KAA2B;QAC1D,OAAO,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,6BAA6B,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAC5D,KAAK,CACN,CAAA;IACH,CAAC;IAED;wBACoB;IACpB,kBAAkB,CAAC,KAAgC;QACjD,OAAO,IAAI,CAAC,OAAO,CAA6B,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,iEAAiE;IACjE,kBAAkB,CAChB,SAAiB,EACjB,KAA+B;QAE/B,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,6BAA6B,kBAAkB,CAAC,SAAS,CAAC,UAAU,OAAO,CAAC,KAAK,CAAC,EAAE,CACrF,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,+DAA+D;IAC/D,mBAAmB,CAAC,KAA+B;QACjD,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,kCAAkC,OAAO,CAAC,KAAK,CAAC,EAAE,CACnD,CAAA;IACH,CAAC;IAED;yEACqE;IACrE,kBAAkB,CAAC,KAA+B;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,mCAAmC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,yEAAyE;IACzE,qBAAqB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAA;IAC9E,CAAC;IAED,mEAAmE;IACnE,YAAY,CAAC,KAA0B;QACrC,OAAO,IAAI,CAAC,OAAO,CAAuB,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAA;IAC/E,CAAC;IAED,+CAA+C;IAC/C,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAuB,KAAK,EAAE,0BAA0B,CAAC,CAAA;IAC9E,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,0BAA0B,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACtG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,IAAY,EAAiB,EAAE;YAChD,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC7C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACtC,CAAC,CAAA;QACD,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,cAAc,EAAE,SAAS,CAAC,mBAAmB,CAAC;YAC9C,sBAAsB,EAAE,SAAS,CAAC,4BAA4B,CAAC;YAC/D,4BAA4B,EAAE,SAAS,CAAC,kCAAkC,CAAC;YAC3E,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;SACtC,CAAA;IACH,CAAC;IAED,6EAA6E;IACrE,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjD,OAAO,MAAW,CAAA;IACpB,CAAC;IAED;6EACyE;IACjE,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY;QACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC/C,IAAI,IAAY,CAAA;QAChB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,8BAA8B,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAC5E,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,MAAM,GAAY,IAAI,CAAA;YAC1B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,gEAAgE;YAClE,CAAC;YACD,MAAM,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,+DAA+D;QAC/D,8DAA8D;QAC9D,kEAAkE;QAClE,yDAAyD;QACzD,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,IAAI,CAAC,MAAM;YAC3B,MAAM,EAAE,kBAAkB;SAC3B,CAAA;QACD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;QAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAEjH,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBACpD,MAAM;gBACN,OAAO;gBACP,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,UAAU,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;aACjD,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAI,GAAyB,EAAE,IAAI,KAAK,YAAY,CAAA;YACjE,MAAM,IAAI,kBAAkB,CAC1B,OAAO,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,2BAA2B,IAAI,EAAE,EAC3F,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAC/B,GAAG,CACJ,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;CACF;AAED;uFACuF;AACvF,SAAS,OAAO,CAAC,MAAgC;IAC/C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IACtB,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IACxB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAgC;IACtD,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,kBAAkB,CAAC,8BAA8B,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export interface ZodIssueLike {
|
|
|
13
13
|
[k: string]: unknown;
|
|
14
14
|
}
|
|
15
15
|
export declare class GoableApiError extends Error {
|
|
16
|
-
readonly name
|
|
16
|
+
readonly name: string;
|
|
17
17
|
/** HTTP status code. */
|
|
18
18
|
readonly status: number;
|
|
19
19
|
/** Machine-readable code from the `error` field (e.g. "PAYMENT_REQUIRED"). */
|
|
@@ -27,6 +27,23 @@ export declare class GoableApiError extends Error {
|
|
|
27
27
|
detail?: Record<string, unknown>;
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Raised on a `422 DRIFT_ACTIVE` from `POST /v1/underwriting/policy/bind`:
|
|
32
|
+
* the resolved cell has an open warning/critical L9 drift event, so the bind
|
|
33
|
+
* is refused (a watch-level event is a soft `driftAdvisories` on success, not
|
|
34
|
+
* an error). Subclasses `GoableApiError`, so existing `instanceof
|
|
35
|
+
* GoableApiError` / `.code === "DRIFT_ACTIVE"` checks keep working.
|
|
36
|
+
*/
|
|
37
|
+
export declare class DriftActiveError extends GoableApiError {
|
|
38
|
+
readonly name = "DriftActiveError";
|
|
39
|
+
/** The blocking cells, from the server's `detail.openDriftEvents`. Shape is
|
|
40
|
+
* per-cell and best-effort (documented, not part of the typed contract). */
|
|
41
|
+
readonly openDriftEvents: Array<Record<string, unknown>>;
|
|
42
|
+
constructor(status: number, code: string, message?: string, extra?: {
|
|
43
|
+
issues?: ZodIssueLike[];
|
|
44
|
+
detail?: Record<string, unknown>;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
30
47
|
export declare class GoableNetworkError extends Error {
|
|
31
48
|
readonly name = "GoableNetworkError";
|
|
32
49
|
/** "timeout" when the request was aborted by the configured timeout. */
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,qBAAa,cAAe,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,qBAAa,cAAe,SAAQ,KAAK;IAGvC,SAAkB,IAAI,EAAE,MAAM,CAAmB;IACjD,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAGvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;CAUxE;AAED;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,SAAkB,IAAI,sBAAqB;IAC3C;iFAC6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;gBAGtD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;CAOxE;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,wBAAuB;IAC7C,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IAC9C,SAAkB,KAAK,CAAC,EAAE,OAAO,CAAA;gBAErB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO;CAMpF;AASD;6EAC6E;AAC7E,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,cAAc,CAWxE"}
|
package/dist/errors.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* (DNS, connection, abort/timeout, JSON parse).
|
|
8
8
|
*/
|
|
9
9
|
export class GoableApiError extends Error {
|
|
10
|
+
// Typed `string` (not the literal) so subclasses like DriftActiveError can
|
|
11
|
+
// override it with their own name.
|
|
10
12
|
name = "GoableApiError";
|
|
11
13
|
/** HTTP status code. */
|
|
12
14
|
status;
|
|
@@ -28,6 +30,25 @@ export class GoableApiError extends Error {
|
|
|
28
30
|
Object.setPrototypeOf(this, GoableApiError.prototype);
|
|
29
31
|
}
|
|
30
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Raised on a `422 DRIFT_ACTIVE` from `POST /v1/underwriting/policy/bind`:
|
|
35
|
+
* the resolved cell has an open warning/critical L9 drift event, so the bind
|
|
36
|
+
* is refused (a watch-level event is a soft `driftAdvisories` on success, not
|
|
37
|
+
* an error). Subclasses `GoableApiError`, so existing `instanceof
|
|
38
|
+
* GoableApiError` / `.code === "DRIFT_ACTIVE"` checks keep working.
|
|
39
|
+
*/
|
|
40
|
+
export class DriftActiveError extends GoableApiError {
|
|
41
|
+
name = "DriftActiveError";
|
|
42
|
+
/** The blocking cells, from the server's `detail.openDriftEvents`. Shape is
|
|
43
|
+
* per-cell and best-effort (documented, not part of the typed contract). */
|
|
44
|
+
openDriftEvents;
|
|
45
|
+
constructor(status, code, message, extra) {
|
|
46
|
+
super(status, code, message, extra);
|
|
47
|
+
const raw = extra?.detail?.openDriftEvents;
|
|
48
|
+
this.openDriftEvents = Array.isArray(raw) ? raw : [];
|
|
49
|
+
Object.setPrototypeOf(this, DriftActiveError.prototype);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
31
52
|
export class GoableNetworkError extends Error {
|
|
32
53
|
name = "GoableNetworkError";
|
|
33
54
|
/** "timeout" when the request was aborted by the configured timeout. */
|
|
@@ -52,6 +73,10 @@ export function toApiError(status, body) {
|
|
|
52
73
|
extra.issues = b.issues;
|
|
53
74
|
if (b.detail && typeof b.detail === "object")
|
|
54
75
|
extra.detail = b.detail;
|
|
76
|
+
// Specialise the one error the SDK models with its own class. Stays a
|
|
77
|
+
// GoableApiError subclass, so generic catch sites are unaffected.
|
|
78
|
+
if (code === "DRIFT_ACTIVE")
|
|
79
|
+
return new DriftActiveError(status, code, message, extra);
|
|
55
80
|
return new GoableApiError(status, code, message, extra);
|
|
56
81
|
}
|
|
57
82
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,OAAO,cAAe,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|