@searchstack/public-api 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +200 -0
  3. package/dist/AccountService.d.ts +12 -0
  4. package/dist/AccountService.d.ts.map +1 -0
  5. package/dist/AccountService.js +19 -0
  6. package/dist/AccountService.js.map +1 -0
  7. package/dist/AnalyticsService.d.ts +12 -0
  8. package/dist/AnalyticsService.d.ts.map +1 -0
  9. package/dist/AnalyticsService.js +32 -0
  10. package/dist/AnalyticsService.js.map +1 -0
  11. package/dist/Client.d.ts +59 -0
  12. package/dist/Client.d.ts.map +1 -0
  13. package/dist/Client.js +78 -0
  14. package/dist/Client.js.map +1 -0
  15. package/dist/ContributorService.d.ts +12 -0
  16. package/dist/ContributorService.d.ts.map +1 -0
  17. package/dist/ContributorService.js +20 -0
  18. package/dist/ContributorService.js.map +1 -0
  19. package/dist/CoordinatesService.d.ts +12 -0
  20. package/dist/CoordinatesService.d.ts.map +1 -0
  21. package/dist/CoordinatesService.js +21 -0
  22. package/dist/CoordinatesService.js.map +1 -0
  23. package/dist/DiscoveryService.d.ts +13 -0
  24. package/dist/DiscoveryService.d.ts.map +1 -0
  25. package/dist/DiscoveryService.js +25 -0
  26. package/dist/DiscoveryService.js.map +1 -0
  27. package/dist/EvalService.d.ts +24 -0
  28. package/dist/EvalService.d.ts.map +1 -0
  29. package/dist/EvalService.js +55 -0
  30. package/dist/EvalService.js.map +1 -0
  31. package/dist/FacetService.d.ts +14 -0
  32. package/dist/FacetService.d.ts.map +1 -0
  33. package/dist/FacetService.js +26 -0
  34. package/dist/FacetService.js.map +1 -0
  35. package/dist/Fetch.d.ts +23 -0
  36. package/dist/Fetch.d.ts.map +1 -0
  37. package/dist/Fetch.js +74 -0
  38. package/dist/Fetch.js.map +1 -0
  39. package/dist/GroupService.d.ts +44 -0
  40. package/dist/GroupService.d.ts.map +1 -0
  41. package/dist/GroupService.js +100 -0
  42. package/dist/GroupService.js.map +1 -0
  43. package/dist/JudgeService.d.ts +22 -0
  44. package/dist/JudgeService.d.ts.map +1 -0
  45. package/dist/JudgeService.js +47 -0
  46. package/dist/JudgeService.js.map +1 -0
  47. package/dist/ListService.d.ts +18 -0
  48. package/dist/ListService.d.ts.map +1 -0
  49. package/dist/ListService.js +35 -0
  50. package/dist/ListService.js.map +1 -0
  51. package/dist/MediaStoreService.d.ts +10 -0
  52. package/dist/MediaStoreService.d.ts.map +1 -0
  53. package/dist/MediaStoreService.js +15 -0
  54. package/dist/MediaStoreService.js.map +1 -0
  55. package/dist/ResourceService.d.ts +14 -0
  56. package/dist/ResourceService.d.ts.map +1 -0
  57. package/dist/ResourceService.js +26 -0
  58. package/dist/ResourceService.js.map +1 -0
  59. package/dist/SearchResultService.d.ts +33 -0
  60. package/dist/SearchResultService.d.ts.map +1 -0
  61. package/dist/SearchResultService.js +67 -0
  62. package/dist/SearchResultService.js.map +1 -0
  63. package/dist/SearchService.d.ts +31 -0
  64. package/dist/SearchService.d.ts.map +1 -0
  65. package/dist/SearchService.js +75 -0
  66. package/dist/SearchService.js.map +1 -0
  67. package/dist/SearchableFieldService.d.ts +14 -0
  68. package/dist/SearchableFieldService.d.ts.map +1 -0
  69. package/dist/SearchableFieldService.js +26 -0
  70. package/dist/SearchableFieldService.js.map +1 -0
  71. package/dist/SuggestService.d.ts +12 -0
  72. package/dist/SuggestService.d.ts.map +1 -0
  73. package/dist/SuggestService.js +23 -0
  74. package/dist/SuggestService.js.map +1 -0
  75. package/dist/Types.d.ts +753 -0
  76. package/dist/Types.d.ts.map +1 -0
  77. package/dist/Types.js +38 -0
  78. package/dist/Types.js.map +1 -0
  79. package/dist/handleResponse.d.ts +4 -0
  80. package/dist/handleResponse.d.ts.map +1 -0
  81. package/dist/handleResponse.js +22 -0
  82. package/dist/handleResponse.js.map +1 -0
  83. package/dist/index.d.ts +4 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +3 -0
  86. package/dist/index.js.map +1 -0
  87. package/package.json +52 -0
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2026 SearchStack
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,200 @@
1
+ # @searchstack/public-api
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@searchstack/public-api.svg)](https://www.npmjs.com/package/@searchstack/public-api)
4
+ ![license](https://img.shields.io/npm/l/@searchstack/public-api.svg)
5
+ [![node](https://img.shields.io/node/v/@searchstack/public-api.svg)](https://nodejs.org)
6
+
7
+ **The official TypeScript client for the [Search Stack](https://searchstack.dev)
8
+ public API — search, ingest, and manage your indexes from Node or the browser.
9
+ Fully typed, zero runtime dependencies.**
10
+
11
+ A typed, `fetch`-based client for the Search Stack public API
12
+ (`api.searchstack.dev`). It exposes a `SearchStackClient` with a service per area
13
+ of the API and request/response types that match the API's JSON wire format
14
+ (snake_case) one-to-one.
15
+
16
+ It authenticates at the client level with an **API key** or an **access token**
17
+ and covers the full public surface — search and suggest, list/group management
18
+ and versioning, ingestion, evals and judges, analytics, and account details.
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ npm install @searchstack/public-api
24
+ ```
25
+
26
+ Requires Node 18+ (or any runtime with a global `fetch`).
27
+
28
+ ## Quickstart
29
+
30
+ ```ts
31
+ import { SearchStackClient } from "@searchstack/public-api";
32
+
33
+ const client = new SearchStackClient({ apiKey: "sk_live_..." });
34
+
35
+ // Search version 1 of the "products" list in the "acme" account.
36
+ const result = await client.Search.searchList("acme", "products", 1, {
37
+ query: "running shoes",
38
+ size: 10,
39
+ });
40
+
41
+ if (result.isSuccess) {
42
+ for (const hit of result.toSuccess().results) {
43
+ console.log(hit.name, hit.fields);
44
+ }
45
+ } else {
46
+ // Methods never throw — errors come back as a typed Problem (see below).
47
+ console.error(result.toProblem().status, result.toProblem().detail);
48
+ }
49
+ ```
50
+
51
+ ## Authentication
52
+
53
+ The API accepts either of two credentials. Configure one when constructing the
54
+ client:
55
+
56
+ ```ts
57
+ import { SearchStackClient } from "@searchstack/public-api";
58
+
59
+ // API key -> sent as the `X-API-Key` header
60
+ const client = new SearchStackClient({ apiKey: "sk_live_..." });
61
+
62
+ // or an access token -> sent as `Authorization: Bearer <token>`
63
+ const client = new SearchStackClient({ accessToken: "eyJ..." });
64
+ ```
65
+
66
+ If both are supplied, the access token takes precedence. You can also point the
67
+ client at a non-production host:
68
+
69
+ ```ts
70
+ const client = new SearchStackClient({
71
+ apiKey: "sk_live_...",
72
+ baseUrl: "https://api.searchstack.dev/",
73
+ });
74
+ ```
75
+
76
+ Credentials can be swapped at runtime (e.g. after refreshing a token):
77
+
78
+ ```ts
79
+ client.setAccessToken(newToken);
80
+ client.setApiKey(newKey);
81
+ ```
82
+
83
+ ## Result handling
84
+
85
+ No method throws on an HTTP error. Each resolves to a `Response` that is either a
86
+ success carrying the typed payload or a `Problem` (RFC 7807). Network/JSON errors
87
+ are surfaced as a `Problem` with `status: 500`.
88
+
89
+ ```ts
90
+ const result = await client.Search.searchList("acme", "products", 1, { query: "boots" });
91
+
92
+ if (result.isSuccess) {
93
+ const page = result.toSuccess(); // SearchResponse
94
+ console.log(page.total_count, page.results);
95
+ } else {
96
+ const problem = result.toProblem(); // Problem
97
+ console.error(problem.status, problem.detail);
98
+ }
99
+ ```
100
+
101
+ ## Services
102
+
103
+ | Property | Service | Highlights |
104
+ | --- | --- | --- |
105
+ | `client.Accounts` | Account | `get`, `getName` |
106
+ | `client.Lists` | List | `create`, `get`, `edit`, `restore`, `delete` |
107
+ | `client.Groups` | Group | `create`, `get`, `versions`, `versionMembers`, `edit`, `clone`, `bumpVersion`, `restore`, `addList`, `removeList`, `setModel`, `removeModel`, `setReranker`, `removeReranker`, `addIpAddress`, `removeIpAddress`, `transfer`, `delete` |
108
+ | `client.Facets` | Facet | `create`, `rename`, `remove` |
109
+ | `client.Resources` | Resource | `create`, `rename`, `remove` |
110
+ | `client.Searchables` | Searchable field | `create`, `rename`, `remove` |
111
+ | `client.Contributors` | Contributor | `add`, `remove` |
112
+ | `client.Coordinates` | Coordinates | `add`, `remove` |
113
+ | `client.MediaStores` | Media store | `deleteMedia` |
114
+ | `client.SearchResults` | Search result writes | `create`, `bulkInsert`, `bulkInsertWithFields`, `edit`, `editVector`, `remove`, `deleteByFilter`, `softDeleteByFilter` |
115
+ | `client.Search` | Search / query | `searchList`, `searchGroup`, `related`, `searchListByImage`, `searchGroupByImage`, `searchListByImageBase64`, `searchGroupByImageBase64`, `extractDocumentText`, `recordListClick`, `recordGroupClick` |
116
+ | `client.Suggest` | Suggest | `list`, `group` |
117
+ | `client.Analytics` | Analytics | `getList`, `getGroup` |
118
+ | `client.Evals` | Eval sets | `list`, `get`, `runs`, `runStatus`, `create`, `bootstrap`, `run`, `delete` |
119
+ | `client.Judges` | Judges | `list`, `get`, `runStatus`, `create`, `run`, `try`, `delete` |
120
+ | `client.Discovery` | Discovery (anonymous) | `info`, `examples`, `catalog` |
121
+
122
+ > Search and suggest methods use the API's `POST` variants so options are passed
123
+ > as a typed object rather than a hand-built query string.
124
+
125
+ ## Examples
126
+
127
+ Text search a list version:
128
+
129
+ ```ts
130
+ const res = await client.Search.searchList("acme", "products", 3, {
131
+ query: "running shoes",
132
+ size: 20,
133
+ filter: "brand eq 'Acme'",
134
+ minimum_text_score: 0.6,
135
+ });
136
+ ```
137
+
138
+ Find related results and record a click-through:
139
+
140
+ ```ts
141
+ const related = await client.Search.related("acme", "products", "sku-123", { size: 5 });
142
+
143
+ if (related.isSuccess) {
144
+ const { results, query_id } = related.toSuccess();
145
+ if (query_id) {
146
+ await client.Search.recordListClick("acme", "products", {
147
+ query_id,
148
+ result_id: results[0].name,
149
+ });
150
+ }
151
+ }
152
+ ```
153
+
154
+ Bulk insert documents:
155
+
156
+ ```ts
157
+ await client.SearchResults.bulkInsertWithFields("acme", "products", [
158
+ { search_result_name: "sku-1", title: "Trail Shoe", price: 99 },
159
+ { search_result_name: "sku-2", title: "Road Shoe", price: 79 },
160
+ ]);
161
+ ```
162
+
163
+ Manage a group and its membership versions:
164
+
165
+ ```ts
166
+ await client.Groups.addList("acme", "catalog", { list_name: "products", version: 4 });
167
+ await client.Groups.bumpVersion("acme", "catalog"); // pin members to their latest
168
+ const versions = await client.Groups.versions("acme", "catalog");
169
+ // search a specific, frozen membership version:
170
+ await client.Search.searchGroup("acme", "catalog", versions.toSuccess().current_version, { query: "boots" });
171
+ ```
172
+
173
+ Try a judge, then track search quality with an eval set:
174
+
175
+ ```ts
176
+ const verdict = await client.Judges.try("acme", "relevance-judge", {
177
+ context: { text: "waterproof hiking boots" },
178
+ candidate: { id: "sku-1", text: "Trail Runner — mesh, not waterproof" },
179
+ });
180
+ if (verdict.isSuccess) console.log(verdict.toSuccess().passed);
181
+
182
+ const run = await client.Evals.run("acme", "relevance"); // async (202)
183
+ if (run.isSuccess) {
184
+ const status = await client.Evals.runStatus("acme", "relevance", run.toSuccess().run_id);
185
+ }
186
+ ```
187
+
188
+ List analytics for a date range:
189
+
190
+ ```ts
191
+ const report = await client.Analytics.getList("acme", "products", "2026-05-01", "2026-05-31");
192
+ ```
193
+
194
+ ## Development
195
+
196
+ ```bash
197
+ npm install
198
+ npm run build # tsc -> dist/ (ESM + .d.ts)
199
+ npm test # vitest
200
+ ```
@@ -0,0 +1,12 @@
1
+ import Fetch from "./Fetch.js";
2
+ import { Response, Problem, AccountResponse, AccountNameResponse } from "./Types.js";
3
+ export default class AccountService {
4
+ private readonly fetch;
5
+ private readonly path;
6
+ constructor(fetch: Fetch);
7
+ /** Retrieves the details of an Account. */
8
+ get(account_name: string): Promise<Response<AccountResponse, Problem>>;
9
+ /** Retrieves the account name of the currently authenticated caller. */
10
+ getName(): Promise<Response<AccountNameResponse, Problem>>;
11
+ }
12
+ //# sourceMappingURL=AccountService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountService.d.ts","sourceRoot":"","sources":["../src/AccountService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErF,MAAM,CAAC,OAAO,OAAO,cAAc;IAErB,OAAO,CAAC,QAAQ,CAAC,KAAK;IADlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBACL,KAAK,EAAE,KAAK;IAEzC,2CAA2C;IACrC,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAK5E,wEAAwE;IAClE,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;CAIjE"}
@@ -0,0 +1,19 @@
1
+ import { handleResponse } from "./handleResponse.js";
2
+ export default class AccountService {
3
+ fetch;
4
+ path = `account`;
5
+ constructor(fetch) {
6
+ this.fetch = fetch;
7
+ }
8
+ /** Retrieves the details of an Account. */
9
+ async get(account_name) {
10
+ const response = await this.fetch.get(`${this.path}/${encodeURIComponent(account_name)}`);
11
+ return handleResponse(response, async () => (await response.json()));
12
+ }
13
+ /** Retrieves the account name of the currently authenticated caller. */
14
+ async getName() {
15
+ const response = await this.fetch.get(this.path);
16
+ return handleResponse(response, async () => (await response.json()));
17
+ }
18
+ }
19
+ //# sourceMappingURL=AccountService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountService.js","sourceRoot":"","sources":["../src/AccountService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,cAAc;IAEJ;IADZ,IAAI,GAAG,SAAS,CAAC;IAClC,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,2CAA2C;IAC3C,KAAK,CAAC,GAAG,CAAC,YAAoB;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC,CAAC;IAC1F,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC,CAAC;IAC9F,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import Fetch from "./Fetch.js";
2
+ import { Response, Problem, AnalyticsReportResponse } from "./Types.js";
3
+ export default class AnalyticsService {
4
+ private readonly fetch;
5
+ private readonly path;
6
+ constructor(fetch: Fetch);
7
+ /** Top searches, zero-result queries, volume and click-through for a List. */
8
+ getList(account_name: string, list_name: string, from?: string, to?: string): Promise<Response<AnalyticsReportResponse, Problem>>;
9
+ /** Top searches, zero-result queries, volume and click-through for a Group. */
10
+ getGroup(account_name: string, group_name: string, from?: string, to?: string): Promise<Response<AnalyticsReportResponse, Problem>>;
11
+ }
12
+ //# sourceMappingURL=AnalyticsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsService.d.ts","sourceRoot":"","sources":["../src/AnalyticsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAEvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IADlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;gBACP,KAAK,EAAE,KAAK;IAEzC,8EAA8E;IACxE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAMvI,+EAA+E;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;CAK1I"}
@@ -0,0 +1,32 @@
1
+ import { handleResponse } from "./handleResponse.js";
2
+ export default class AnalyticsService {
3
+ fetch;
4
+ path = `analytics`;
5
+ constructor(fetch) {
6
+ this.fetch = fetch;
7
+ }
8
+ /** Top searches, zero-result queries, volume and click-through for a List. */
9
+ async getList(account_name, list_name, from, to) {
10
+ const path = `${this.path}/list/${encodeURIComponent(account_name)}/${encodeURIComponent(list_name)}${buildRangeQuery(from, to)}`;
11
+ const response = await this.fetch.get(path);
12
+ return handleResponse(response, async () => (await response.json()));
13
+ }
14
+ /** Top searches, zero-result queries, volume and click-through for a Group. */
15
+ async getGroup(account_name, group_name, from, to) {
16
+ const path = `${this.path}/group/${encodeURIComponent(account_name)}/${encodeURIComponent(group_name)}${buildRangeQuery(from, to)}`;
17
+ const response = await this.fetch.get(path);
18
+ return handleResponse(response, async () => (await response.json()));
19
+ }
20
+ }
21
+ // Both endpoints take optional `from`/`to` UTC dates (yyyy-MM-dd); omit them to
22
+ // let the API default to the last 30 days.
23
+ function buildRangeQuery(from, to) {
24
+ const params = new URLSearchParams();
25
+ if (from)
26
+ params.set("from", from);
27
+ if (to)
28
+ params.set("to", to);
29
+ const query = params.toString();
30
+ return query ? `?${query}` : "";
31
+ }
32
+ //# sourceMappingURL=AnalyticsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsService.js","sourceRoot":"","sources":["../src/AnalyticsService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAEN;IADZ,IAAI,GAAG,WAAW,CAAC;IACpC,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,8EAA8E;IAC9E,KAAK,CAAC,OAAO,CAAC,YAAoB,EAAE,SAAiB,EAAE,IAAa,EAAE,EAAW;QAC/E,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,SAAS,kBAAkB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QAClI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC,CAAC;IAClG,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,QAAQ,CAAC,YAAoB,EAAE,UAAkB,EAAE,IAAa,EAAE,EAAW;QACjF,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,UAAU,kBAAkB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACpI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC,CAAC;IAClG,CAAC;CACF;AAED,gFAAgF;AAChF,2CAA2C;AAC3C,SAAS,eAAe,CAAC,IAAa,EAAE,EAAW;IACjD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { Credentials } from "./Fetch.js";
2
+ import AccountService from "./AccountService.js";
3
+ import ListService from "./ListService.js";
4
+ import GroupService from "./GroupService.js";
5
+ import FacetService from "./FacetService.js";
6
+ import ResourceService from "./ResourceService.js";
7
+ import SearchableFieldService from "./SearchableFieldService.js";
8
+ import ContributorService from "./ContributorService.js";
9
+ import CoordinatesService from "./CoordinatesService.js";
10
+ import MediaStoreService from "./MediaStoreService.js";
11
+ import SearchResultService from "./SearchResultService.js";
12
+ import SearchService from "./SearchService.js";
13
+ import SuggestService from "./SuggestService.js";
14
+ import AnalyticsService from "./AnalyticsService.js";
15
+ import EvalService from "./EvalService.js";
16
+ import JudgeService from "./JudgeService.js";
17
+ import DiscoveryService from "./DiscoveryService.js";
18
+ /** Options for constructing a {@link SearchStackClient}. */
19
+ export type SearchStackClientOptions = Credentials & {
20
+ /** Base URL of the API. Defaults to the production endpoint. */
21
+ baseUrl?: string;
22
+ };
23
+ /**
24
+ * Typed, fetch-based client for the Search Stack public API.
25
+ *
26
+ * Authenticate with either an API key or an access token:
27
+ *
28
+ * ```ts
29
+ * const client = new SearchStackClient({ apiKey: "sk_..." });
30
+ * const result = await client.Search.searchList("acme", "products", 1, { query: "boots" });
31
+ * if (result.isSuccess) console.log(result.toSuccess().results);
32
+ * else console.error(result.toProblem().detail);
33
+ * ```
34
+ */
35
+ export declare class SearchStackClient {
36
+ private readonly fetch;
37
+ readonly Accounts: AccountService;
38
+ readonly Lists: ListService;
39
+ readonly Groups: GroupService;
40
+ readonly Facets: FacetService;
41
+ readonly Resources: ResourceService;
42
+ readonly Searchables: SearchableFieldService;
43
+ readonly Contributors: ContributorService;
44
+ readonly Coordinates: CoordinatesService;
45
+ readonly MediaStores: MediaStoreService;
46
+ readonly SearchResults: SearchResultService;
47
+ readonly Search: SearchService;
48
+ readonly Suggest: SuggestService;
49
+ readonly Analytics: AnalyticsService;
50
+ readonly Evals: EvalService;
51
+ readonly Judges: JudgeService;
52
+ readonly Discovery: DiscoveryService;
53
+ constructor(options: SearchStackClientOptions);
54
+ /** Replace the access token used for subsequent requests (e.g. after a refresh). */
55
+ setAccessToken(accessToken: string | undefined): void;
56
+ /** Replace the API key used for subsequent requests. */
57
+ setApiKey(apiKey: string | undefined): void;
58
+ }
59
+ //# sourceMappingURL=Client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AACjE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AACvD,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAIrD,4DAA4D;AAC5D,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG;IACnD,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,SAAS,EAAE,eAAe,CAAC;IAC3C,SAAgB,WAAW,EAAE,sBAAsB,CAAC;IACpD,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IACjD,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,SAAgB,WAAW,EAAE,iBAAiB,CAAC;IAC/C,SAAgB,aAAa,EAAE,mBAAmB,CAAC;IACnD,SAAgB,MAAM,EAAE,aAAa,CAAC;IACtC,SAAgB,OAAO,EAAE,cAAc,CAAC;IACxC,SAAgB,SAAS,EAAE,gBAAgB,CAAC;IAC5C,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,SAAS,EAAE,gBAAgB,CAAC;gBAEhC,OAAO,EAAE,wBAAwB;IAsB7C,oFAAoF;IACpF,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIrD,wDAAwD;IACxD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAG5C"}
package/dist/Client.js ADDED
@@ -0,0 +1,78 @@
1
+ import Fetch from "./Fetch.js";
2
+ import AccountService from "./AccountService.js";
3
+ import ListService from "./ListService.js";
4
+ import GroupService from "./GroupService.js";
5
+ import FacetService from "./FacetService.js";
6
+ import ResourceService from "./ResourceService.js";
7
+ import SearchableFieldService from "./SearchableFieldService.js";
8
+ import ContributorService from "./ContributorService.js";
9
+ import CoordinatesService from "./CoordinatesService.js";
10
+ import MediaStoreService from "./MediaStoreService.js";
11
+ import SearchResultService from "./SearchResultService.js";
12
+ import SearchService from "./SearchService.js";
13
+ import SuggestService from "./SuggestService.js";
14
+ import AnalyticsService from "./AnalyticsService.js";
15
+ import EvalService from "./EvalService.js";
16
+ import JudgeService from "./JudgeService.js";
17
+ import DiscoveryService from "./DiscoveryService.js";
18
+ const DEFAULT_BASE_URL = "https://api.searchstack.dev/";
19
+ /**
20
+ * Typed, fetch-based client for the Search Stack public API.
21
+ *
22
+ * Authenticate with either an API key or an access token:
23
+ *
24
+ * ```ts
25
+ * const client = new SearchStackClient({ apiKey: "sk_..." });
26
+ * const result = await client.Search.searchList("acme", "products", 1, { query: "boots" });
27
+ * if (result.isSuccess) console.log(result.toSuccess().results);
28
+ * else console.error(result.toProblem().detail);
29
+ * ```
30
+ */
31
+ export class SearchStackClient {
32
+ fetch;
33
+ Accounts;
34
+ Lists;
35
+ Groups;
36
+ Facets;
37
+ Resources;
38
+ Searchables;
39
+ Contributors;
40
+ Coordinates;
41
+ MediaStores;
42
+ SearchResults;
43
+ Search;
44
+ Suggest;
45
+ Analytics;
46
+ Evals;
47
+ Judges;
48
+ Discovery;
49
+ constructor(options) {
50
+ const { baseUrl, ...credentials } = options;
51
+ this.fetch = new Fetch(baseUrl ?? DEFAULT_BASE_URL, credentials);
52
+ this.Accounts = new AccountService(this.fetch);
53
+ this.Lists = new ListService(this.fetch);
54
+ this.Groups = new GroupService(this.fetch);
55
+ this.Facets = new FacetService(this.fetch);
56
+ this.Resources = new ResourceService(this.fetch);
57
+ this.Searchables = new SearchableFieldService(this.fetch);
58
+ this.Contributors = new ContributorService(this.fetch);
59
+ this.Coordinates = new CoordinatesService(this.fetch);
60
+ this.MediaStores = new MediaStoreService(this.fetch);
61
+ this.SearchResults = new SearchResultService(this.fetch);
62
+ this.Search = new SearchService(this.fetch);
63
+ this.Suggest = new SuggestService(this.fetch);
64
+ this.Analytics = new AnalyticsService(this.fetch);
65
+ this.Evals = new EvalService(this.fetch);
66
+ this.Judges = new JudgeService(this.fetch);
67
+ this.Discovery = new DiscoveryService(this.fetch);
68
+ }
69
+ /** Replace the access token used for subsequent requests (e.g. after a refresh). */
70
+ setAccessToken(accessToken) {
71
+ this.fetch.setAccessToken(accessToken);
72
+ }
73
+ /** Replace the API key used for subsequent requests. */
74
+ setApiKey(apiKey) {
75
+ this.fetch.setApiKey(apiKey);
76
+ }
77
+ }
78
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import Fetch from "./Fetch.js";
2
+ import { Response, Problem, ContributorResponse, AddContributorRequest } from "./Types.js";
3
+ export default class ContributorService {
4
+ private readonly fetch;
5
+ private readonly path;
6
+ constructor(fetch: Fetch);
7
+ /** Adds a Contributor - can add fields and search results but not make breaking changes. */
8
+ add(request: AddContributorRequest): Promise<Response<ContributorResponse, Problem>>;
9
+ /** Removes a Contributor's access to the List. */
10
+ remove(account_name: string, list_name: string, contributor_name: string): Promise<Response<void, Problem>>;
11
+ }
12
+ //# sourceMappingURL=ContributorService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributorService.d.ts","sourceRoot":"","sources":["../src/ContributorService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE3F,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAEzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IADlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;gBACT,KAAK,EAAE,KAAK;IAEzC,4FAA4F;IACtF,GAAG,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAK1F,kDAAkD;IAC5C,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAKlH"}
@@ -0,0 +1,20 @@
1
+ import { handleResponse } from "./handleResponse.js";
2
+ export default class ContributorService {
3
+ fetch;
4
+ path = `contributor`;
5
+ constructor(fetch) {
6
+ this.fetch = fetch;
7
+ }
8
+ /** Adds a Contributor - can add fields and search results but not make breaking changes. */
9
+ async add(request) {
10
+ const response = await this.fetch.post(this.path, request);
11
+ return handleResponse(response, async () => (await response.json()));
12
+ }
13
+ /** Removes a Contributor's access to the List. */
14
+ async remove(account_name, list_name, contributor_name) {
15
+ const path = `${this.path}/${encodeURIComponent(account_name)}/${encodeURIComponent(list_name)}/${encodeURIComponent(contributor_name)}`;
16
+ const response = await this.fetch.delete(path);
17
+ return handleResponse(response, () => undefined);
18
+ }
19
+ }
20
+ //# sourceMappingURL=ContributorService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributorService.js","sourceRoot":"","sources":["../src/ContributorService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAER;IADZ,IAAI,GAAG,aAAa,CAAC;IACtC,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,4FAA4F;IAC5F,KAAK,CAAC,GAAG,CAAC,OAA8B;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC,CAAC;IAC9F,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,SAAiB,EAAE,gBAAwB;QAC5E,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import Fetch from "./Fetch.js";
2
+ import { Response, Problem, ListResponse } from "./Types.js";
3
+ export default class CoordinatesService {
4
+ private readonly fetch;
5
+ private readonly path;
6
+ constructor(fetch: Fetch);
7
+ /** Adds a Coordinates field, enabling geographical queries. */
8
+ add(account_name: string, list_name: string): Promise<Response<ListResponse, Problem>>;
9
+ /** Removes the Coordinates field. Breaking change - automatically updates the List version. */
10
+ remove(account_name: string, list_name: string): Promise<Response<ListResponse, Problem>>;
11
+ }
12
+ //# sourceMappingURL=CoordinatesService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesService.d.ts","sourceRoot":"","sources":["../src/CoordinatesService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAEzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IADlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;gBACT,KAAK,EAAE,KAAK;IAEzC,+DAA+D;IACzD,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAM5F,+FAA+F;IACzF,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;CAKhG"}
@@ -0,0 +1,21 @@
1
+ import { handleResponse } from "./handleResponse.js";
2
+ export default class CoordinatesService {
3
+ fetch;
4
+ path = `coordinates`;
5
+ constructor(fetch) {
6
+ this.fetch = fetch;
7
+ }
8
+ /** Adds a Coordinates field, enabling geographical queries. */
9
+ async add(account_name, list_name) {
10
+ const path = `${this.path}/${encodeURIComponent(account_name)}/${encodeURIComponent(list_name)}`;
11
+ const response = await this.fetch.post(path, {});
12
+ return handleResponse(response, async () => (await response.json()));
13
+ }
14
+ /** Removes the Coordinates field. Breaking change - automatically updates the List version. */
15
+ async remove(account_name, list_name) {
16
+ const path = `${this.path}/${encodeURIComponent(account_name)}/${encodeURIComponent(list_name)}`;
17
+ const response = await this.fetch.delete(path);
18
+ return handleResponse(response, async () => (await response.json()));
19
+ }
20
+ }
21
+ //# sourceMappingURL=CoordinatesService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesService.js","sourceRoot":"","sources":["../src/CoordinatesService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAER;IADZ,IAAI,GAAG,aAAa,CAAC;IACtC,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,+DAA+D;IAC/D,KAAK,CAAC,GAAG,CAAC,YAAoB,EAAE,SAAiB;QAC/C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC,CAAC;IACvF,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,SAAiB;QAClD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC,CAAC;IACvF,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import Fetch from "./Fetch.js";
2
+ import { Response, Problem, ApiInfo, ApiExamples, ApiCatalog } from "./Types.js";
3
+ export default class DiscoveryService {
4
+ private readonly fetch;
5
+ constructor(fetch: Fetch);
6
+ /** Machine-readable manifest: version, docs/OpenAPI URLs, auth, error codes, MCP. */
7
+ info(): Promise<Response<ApiInfo, Problem>>;
8
+ /** Worked request/response examples for common operations. */
9
+ examples(): Promise<Response<ApiExamples, Problem>>;
10
+ /** IETF api-catalog document (RFC 9727) linking to the API's resources. */
11
+ catalog(): Promise<Response<ApiCatalog, Problem>>;
12
+ }
13
+ //# sourceMappingURL=DiscoveryService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryService.d.ts","sourceRoot":"","sources":["../src/DiscoveryService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIjF,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,qFAAqF;IAC/E,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAKjD,8DAA8D;IACxD,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAKzD,2EAA2E;IACrE,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;CAIxD"}
@@ -0,0 +1,25 @@
1
+ import { handleResponse } from "./handleResponse.js";
2
+ // Anonymous discovery endpoints describing the API itself. No credentials needed
3
+ // (any configured on the client are simply ignored by these routes).
4
+ export default class DiscoveryService {
5
+ fetch;
6
+ constructor(fetch) {
7
+ this.fetch = fetch;
8
+ }
9
+ /** Machine-readable manifest: version, docs/OpenAPI URLs, auth, error codes, MCP. */
10
+ async info() {
11
+ const response = await this.fetch.get(`api/info`);
12
+ return handleResponse(response, async () => (await response.json()));
13
+ }
14
+ /** Worked request/response examples for common operations. */
15
+ async examples() {
16
+ const response = await this.fetch.get(`api/examples`);
17
+ return handleResponse(response, async () => (await response.json()));
18
+ }
19
+ /** IETF api-catalog document (RFC 9727) linking to the API's resources. */
20
+ async catalog() {
21
+ const response = await this.fetch.get(`.well-known/api-catalog`);
22
+ return handleResponse(response, async () => (await response.json()));
23
+ }
24
+ }
25
+ //# sourceMappingURL=DiscoveryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryService.js","sourceRoot":"","sources":["../src/DiscoveryService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,iFAAiF;AACjF,qEAAqE;AACrE,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACN;IAA7B,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,qFAAqF;IACrF,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAY,CAAC,CAAC;IAClF,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgB,CAAC,CAAC;IACtF,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACjE,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAe,CAAC,CAAC;IACrF,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import Fetch from "./Fetch.js";
2
+ import { Response, Problem, EvalSetResponse, EvalRunHistoryResponse, EvalRunStatusResponse, RunEvalResponse, CreateEvalSetRequest, BootstrapEvalSetRequest } from "./Types.js";
3
+ export default class EvalService {
4
+ private readonly fetch;
5
+ private readonly path;
6
+ constructor(fetch: Fetch);
7
+ /** Lists the eval sets in an Account. */
8
+ list(account_name: string): Promise<Response<EvalSetResponse[], Problem>>;
9
+ /** Retrieves a single eval set. */
10
+ get(account_name: string, eval_set_name: string): Promise<Response<EvalSetResponse, Problem>>;
11
+ /** Retrieves the run history of an eval set. Pass a continuation token to page. */
12
+ runs(account_name: string, eval_set_name: string, continuation_token?: string): Promise<Response<EvalRunHistoryResponse, Problem>>;
13
+ /** Retrieves the status (and results, once available) of a single eval run. */
14
+ runStatus(account_name: string, eval_set_name: string, run_id: string): Promise<Response<EvalRunStatusResponse, Problem>>;
15
+ /** Creates an eval set. */
16
+ create(account_name: string, request: CreateEvalSetRequest): Promise<Response<EvalSetResponse, Problem>>;
17
+ /** Creates an eval set from the judged candidates of past Judge runs. */
18
+ bootstrap(account_name: string, request: BootstrapEvalSetRequest): Promise<Response<EvalSetResponse, Problem>>;
19
+ /** Starts an eval run. Runs asynchronously; resolves with the new run's id (HTTP 202). */
20
+ run(account_name: string, eval_set_name: string): Promise<Response<RunEvalResponse, Problem>>;
21
+ /** Deletes an eval set. */
22
+ delete(account_name: string, eval_set_name: string): Promise<Response<void, Problem>>;
23
+ }
24
+ //# sourceMappingURL=EvalService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvalService.d.ts","sourceRoot":"","sources":["../src/EvalService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,QAAQ,EACR,OAAO,EACP,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAMpB,MAAM,CAAC,OAAO,OAAO,WAAW;IAElB,OAAO,CAAC,QAAQ,CAAC,KAAK;IADlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBACF,KAAK,EAAE,KAAK;IAEzC,yCAAyC;IACnC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IAK/E,mCAAmC;IAC7B,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAKnG,mFAAmF;IAC7E,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAOxI,+EAA+E;IACzE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAK/H,2BAA2B;IACrB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAK9G,yEAAyE;IACnE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAKpH,0FAA0F;IACpF,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAKnG,2BAA2B;IACrB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAI5F"}