@proveanything/smartlinks 1.15.1 → 1.15.3
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/dist/api/ai.js +4 -0
- package/dist/api/collection.d.ts +12 -0
- package/dist/api/collection.js +16 -0
- package/dist/api/facets.d.ts +3 -1
- package/dist/api/facets.js +10 -0
- package/dist/docs/API_SUMMARY.md +27 -1
- package/dist/docs/PRODUCT_FACETS_SDK.md +43 -1
- package/dist/docs/ai.md +94 -0
- package/dist/index.d.ts +1 -1
- package/dist/openapi.yaml +139 -0
- package/dist/types/ai.d.ts +11 -0
- package/dist/types/facets.d.ts +8 -0
- package/docs/API_SUMMARY.md +27 -1
- package/docs/PRODUCT_FACETS_SDK.md +43 -1
- package/docs/ai.md +94 -0
- package/openapi.yaml +139 -0
- package/package.json +1 -1
package/dist/api/ai.js
CHANGED
|
@@ -28,7 +28,11 @@ var aiInternal;
|
|
|
28
28
|
* @returns Responses API result or async iterable for streaming events
|
|
29
29
|
*/
|
|
30
30
|
async function create(collectionId, request) {
|
|
31
|
+
var _a;
|
|
31
32
|
const path = `/admin/collection/${encodeURIComponent(collectionId)}/ai/v1/responses`;
|
|
33
|
+
if (((_a = request.multi_agent) === null || _a === void 0 ? void 0 : _a.enabled) && request.stream) {
|
|
34
|
+
throw new Error('Streaming is not supported when multi_agent.enabled is true');
|
|
35
|
+
}
|
|
32
36
|
if (request.stream) {
|
|
33
37
|
return requestStream(path, { method: 'POST', body: request });
|
|
34
38
|
}
|
package/dist/api/collection.d.ts
CHANGED
|
@@ -34,6 +34,18 @@ export declare namespace collection {
|
|
|
34
34
|
* @throws ErrorResponse (404) if no collection is mapped to the domain
|
|
35
35
|
*/
|
|
36
36
|
function getByHub(): Promise<CollectionResponse>;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the collection for an explicit Hub domain (public endpoint).
|
|
39
|
+
*
|
|
40
|
+
* Unlike {@link getByHub}, the domain is passed explicitly rather than derived
|
|
41
|
+
* from request headers — use this for raw/cross-origin calls where the Hub
|
|
42
|
+
* frontend knows its own hostname (e.g. "erbauer.mysmartlinks.app").
|
|
43
|
+
*
|
|
44
|
+
* @param domain – The Hub domain to resolve (custom domain or {brand}.mysmartlinks.app)
|
|
45
|
+
* @returns Promise resolving to the CollectionResponse mapped to the domain
|
|
46
|
+
* @throws ErrorResponse (404) if no collection is mapped to the domain
|
|
47
|
+
*/
|
|
48
|
+
function getByDomain(domain: string): Promise<CollectionResponse>;
|
|
37
49
|
/**
|
|
38
50
|
* Check whether a Hub subdomain name is available to claim (admin only).
|
|
39
51
|
* @param collectionId – Identifier of the collection making the request
|
package/dist/api/collection.js
CHANGED
|
@@ -54,6 +54,22 @@ export var collection;
|
|
|
54
54
|
return request(path);
|
|
55
55
|
}
|
|
56
56
|
collection.getByHub = getByHub;
|
|
57
|
+
/**
|
|
58
|
+
* Resolve the collection for an explicit Hub domain (public endpoint).
|
|
59
|
+
*
|
|
60
|
+
* Unlike {@link getByHub}, the domain is passed explicitly rather than derived
|
|
61
|
+
* from request headers — use this for raw/cross-origin calls where the Hub
|
|
62
|
+
* frontend knows its own hostname (e.g. "erbauer.mysmartlinks.app").
|
|
63
|
+
*
|
|
64
|
+
* @param domain – The Hub domain to resolve (custom domain or {brand}.mysmartlinks.app)
|
|
65
|
+
* @returns Promise resolving to the CollectionResponse mapped to the domain
|
|
66
|
+
* @throws ErrorResponse (404) if no collection is mapped to the domain
|
|
67
|
+
*/
|
|
68
|
+
async function getByDomain(domain) {
|
|
69
|
+
const path = `/public/collection/by-domain/${encodeURIComponent(domain)}`;
|
|
70
|
+
return request(path);
|
|
71
|
+
}
|
|
72
|
+
collection.getByDomain = getByDomain;
|
|
57
73
|
/**
|
|
58
74
|
* Check whether a Hub subdomain name is available to claim (admin only).
|
|
59
75
|
* @param collectionId – Identifier of the collection making the request
|
package/dist/api/facets.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetQueryRequest, FacetQueryResponse, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams } from "../types/facets";
|
|
1
|
+
import type { FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetNamespaceListResponse, FacetQueryRequest, FacetQueryResponse, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams } from "../types/facets";
|
|
2
2
|
/**
|
|
3
3
|
* Facet management and aggregation endpoints.
|
|
4
4
|
*
|
|
@@ -18,9 +18,11 @@ export declare namespace facets {
|
|
|
18
18
|
function updateValue(collectionId: string, facetKey: string, valueKey: string, data: FacetValueWriteInput): Promise<FacetValueResponse>;
|
|
19
19
|
function removeValue(collectionId: string, facetKey: string, valueKey: string): Promise<void>;
|
|
20
20
|
function query(collectionId: string, body: FacetQueryRequest): Promise<FacetQueryResponse>;
|
|
21
|
+
function namespaces(collectionId: string): Promise<FacetNamespaceListResponse>;
|
|
21
22
|
function publicList(collectionId: string, params?: PublicFacetListParams): Promise<FacetListResponse>;
|
|
22
23
|
function publicGet(collectionId: string, facetKey: string, params?: PublicFacetListParams): Promise<FacetDefinition>;
|
|
23
24
|
function publicListValues(collectionId: string, facetKey: string): Promise<FacetValueListResponse>;
|
|
24
25
|
function publicGetValue(collectionId: string, facetKey: string, valueKey: string): Promise<FacetValueResponse>;
|
|
25
26
|
function publicQuery(collectionId: string, body: FacetQueryRequest): Promise<FacetQueryResponse>;
|
|
27
|
+
function publicNamespaces(collectionId: string): Promise<FacetNamespaceListResponse>;
|
|
26
28
|
}
|
package/dist/api/facets.js
CHANGED
|
@@ -78,6 +78,11 @@ export var facets;
|
|
|
78
78
|
return post(path, body);
|
|
79
79
|
}
|
|
80
80
|
facets.query = query;
|
|
81
|
+
async function namespaces(collectionId) {
|
|
82
|
+
const path = `/admin/collection/${encodeURIComponent(collectionId)}/facets/namespaces`;
|
|
83
|
+
return request(path);
|
|
84
|
+
}
|
|
85
|
+
facets.namespaces = namespaces;
|
|
81
86
|
async function publicList(collectionId, params) {
|
|
82
87
|
const path = `/public/collection/${encodeURIComponent(collectionId)}/facets${buildQueryString(params)}`;
|
|
83
88
|
return request(path);
|
|
@@ -103,4 +108,9 @@ export var facets;
|
|
|
103
108
|
return post(path, body);
|
|
104
109
|
}
|
|
105
110
|
facets.publicQuery = publicQuery;
|
|
111
|
+
async function publicNamespaces(collectionId) {
|
|
112
|
+
const path = `/public/collection/${encodeURIComponent(collectionId)}/facets/namespaces`;
|
|
113
|
+
return request(path);
|
|
114
|
+
}
|
|
115
|
+
facets.publicNamespaces = publicNamespaces;
|
|
106
116
|
})(facets || (facets = {}));
|
package/dist/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 1.15.
|
|
3
|
+
Version: 1.15.3 | Generated: 2026-07-11T13:25:50.969Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -499,6 +499,8 @@ interface ResponseTool {
|
|
|
499
499
|
name?: string
|
|
500
500
|
description?: string
|
|
501
501
|
parameters?: Record<string, any>
|
|
502
|
+
output_schema?: Record<string, any>
|
|
503
|
+
allowed_callers?: Array<'assistant' | 'programmatic'>
|
|
502
504
|
[key: string]: any
|
|
503
505
|
}
|
|
504
506
|
```
|
|
@@ -544,6 +546,11 @@ interface ResponsesRequest {
|
|
|
544
546
|
text?: Record<string, any>
|
|
545
547
|
metadata?: Record<string, string>
|
|
546
548
|
prompt_cache_key?: string
|
|
549
|
+
multi_agent?: {
|
|
550
|
+
enabled: boolean
|
|
551
|
+
max_concurrent_subagents?: number
|
|
552
|
+
}
|
|
553
|
+
service_tier?: 'auto' | 'standard' | 'flex' | 'priority'
|
|
547
554
|
}
|
|
548
555
|
```
|
|
549
556
|
|
|
@@ -5039,6 +5046,7 @@ interface FacetDefinition {
|
|
|
5039
5046
|
key: string
|
|
5040
5047
|
name: string
|
|
5041
5048
|
description?: string | null
|
|
5049
|
+
namespace?: string | null
|
|
5042
5050
|
cardinality?: "single" | "multi"
|
|
5043
5051
|
kind?: "system" | "custom"
|
|
5044
5052
|
hierarchical?: boolean
|
|
@@ -5087,6 +5095,7 @@ interface FacetDefinitionWriteInput {
|
|
|
5087
5095
|
key?: string
|
|
5088
5096
|
name: string
|
|
5089
5097
|
description?: string | null
|
|
5098
|
+
namespace?: string | null
|
|
5090
5099
|
cardinality?: "single" | "multi"
|
|
5091
5100
|
kind?: "system" | "custom"
|
|
5092
5101
|
hierarchical?: boolean
|
|
@@ -5144,6 +5153,7 @@ interface FacetQueryRequest {
|
|
|
5144
5153
|
facetKeys?: string[]
|
|
5145
5154
|
includeEmpty?: boolean
|
|
5146
5155
|
includeDeleted?: boolean
|
|
5156
|
+
namespace?: string | null
|
|
5147
5157
|
query?: ProductQueryRequest["query"] & {
|
|
5148
5158
|
facetEquals?: Record<string, JsonValue | JsonValue[]>
|
|
5149
5159
|
}
|
|
@@ -5182,6 +5192,7 @@ interface FacetListParams {
|
|
|
5182
5192
|
includeDeleted?: boolean
|
|
5183
5193
|
kind?: "system" | "custom"
|
|
5184
5194
|
reserved?: boolean
|
|
5195
|
+
namespace?: string
|
|
5185
5196
|
}
|
|
5186
5197
|
```
|
|
5187
5198
|
|
|
@@ -5189,6 +5200,14 @@ interface FacetListParams {
|
|
|
5189
5200
|
```typescript
|
|
5190
5201
|
interface PublicFacetListParams {
|
|
5191
5202
|
includeValues?: boolean
|
|
5203
|
+
namespace?: string
|
|
5204
|
+
}
|
|
5205
|
+
```
|
|
5206
|
+
|
|
5207
|
+
**FacetNamespaceListResponse** (interface)
|
|
5208
|
+
```typescript
|
|
5209
|
+
interface FacetNamespaceListResponse {
|
|
5210
|
+
namespaces: string[]
|
|
5192
5211
|
}
|
|
5193
5212
|
```
|
|
5194
5213
|
|
|
@@ -8619,6 +8638,9 @@ Retrieve a collection by its shortId (public endpoint).
|
|
|
8619
8638
|
**getByHub**() → `Promise<CollectionResponse>`
|
|
8620
8639
|
Resolve the collection for the current Hub domain (public endpoint). The server derives the requesting domain from the request headers (`X-Source-Domain` / `X-Forwarded-Host` / `Host`), so no identifier is passed — this is the call a Hub frontend makes on load to find out which collection it is serving, whether it's reached via `{brand}.mysmartlinks.app` or a bring-your-own custom domain (e.g. `hub.acme.com`).
|
|
8621
8640
|
|
|
8641
|
+
**getByDomain**(domain: string) → `Promise<CollectionResponse>`
|
|
8642
|
+
Resolve the collection for an explicit Hub domain (public endpoint). Unlike {@link getByHub}, the domain is passed explicitly rather than derived from request headers — use this for raw/cross-origin calls where the Hub frontend knows its own hostname (e.g. "erbauer.mysmartlinks.app").
|
|
8643
|
+
|
|
8622
8644
|
**checkHubAvailability**(collectionId: string, name: string) → `Promise<HubAvailabilityResponse>`
|
|
8623
8645
|
Check whether a Hub subdomain name is available to claim (admin only).
|
|
8624
8646
|
|
|
@@ -8942,6 +8964,8 @@ Delete a crate for a collection (admin only). This performs a soft delete. ```ty
|
|
|
8942
8964
|
**query**(collectionId: string,
|
|
8943
8965
|
body: FacetQueryRequest) → `Promise<FacetQueryResponse>`
|
|
8944
8966
|
|
|
8967
|
+
**namespaces**(collectionId: string) → `Promise<FacetNamespaceListResponse>`
|
|
8968
|
+
|
|
8945
8969
|
**publicList**(collectionId: string,
|
|
8946
8970
|
params?: PublicFacetListParams) → `Promise<FacetListResponse>`
|
|
8947
8971
|
|
|
@@ -8959,6 +8983,8 @@ Delete a crate for a collection (admin only). This performs a soft delete. ```ty
|
|
|
8959
8983
|
**publicQuery**(collectionId: string,
|
|
8960
8984
|
body: FacetQueryRequest) → `Promise<FacetQueryResponse>`
|
|
8961
8985
|
|
|
8986
|
+
**publicNamespaces**(collectionId: string) → `Promise<FacetNamespaceListResponse>`
|
|
8987
|
+
|
|
8962
8988
|
### form
|
|
8963
8989
|
|
|
8964
8990
|
**get**(collectionId: string, formId: string, admin?: boolean) → `Promise<any>`
|
|
@@ -42,6 +42,21 @@ includeValues?: boolean
|
|
|
42
42
|
includeDeleted?: boolean
|
|
43
43
|
kind?: 'system' | 'custom'
|
|
44
44
|
reserved?: boolean
|
|
45
|
+
namespace?: string
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
When `namespace` is provided, returns facets matching that namespace plus global facets (`namespace: null`). Omit the param to return all facets.
|
|
49
|
+
|
|
50
|
+
### List namespaces
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
GET /api/v1/admin/collection/:collectionId/facets/namespaces
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Returns all distinct namespaces in use for the collection (excludes globals).
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
{ namespaces: string[] }
|
|
45
60
|
```
|
|
46
61
|
|
|
47
62
|
### Create facet definition
|
|
@@ -50,6 +65,8 @@ reserved?: boolean
|
|
|
50
65
|
POST /api/v1/admin/collection/:collectionId/facets
|
|
51
66
|
```
|
|
52
67
|
|
|
68
|
+
Pass `namespace` in the body to scope the facet to a domain (e.g. `"dpp"`, `"nutrition"`). Omit it to create a global facet.
|
|
69
|
+
|
|
53
70
|
### Get facet definition
|
|
54
71
|
|
|
55
72
|
```ts
|
|
@@ -146,6 +163,8 @@ Supported query filters now:
|
|
|
146
163
|
- `tags`
|
|
147
164
|
- `facetEquals`
|
|
148
165
|
|
|
166
|
+
Body also accepts `namespace` (optional) to scope aggregation to a namespace plus global facets.
|
|
167
|
+
|
|
149
168
|
## Public endpoints
|
|
150
169
|
|
|
151
170
|
### List facet definitions
|
|
@@ -158,6 +177,21 @@ Optional query params:
|
|
|
158
177
|
|
|
159
178
|
```ts
|
|
160
179
|
includeValues?: boolean
|
|
180
|
+
namespace?: string
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
When `namespace` is provided, returns facets matching that namespace plus global facets (`namespace: null`). Omit the param to return all facets.
|
|
184
|
+
|
|
185
|
+
### List namespaces
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
GET /api/v1/public/collection/:collectionId/facets/namespaces
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Returns all distinct namespaces in use for the collection (excludes globals).
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
{ namespaces: string[] }
|
|
161
195
|
```
|
|
162
196
|
|
|
163
197
|
### Get facet definition
|
|
@@ -215,6 +249,7 @@ export interface FacetDefinition {
|
|
|
215
249
|
key: string
|
|
216
250
|
name: string
|
|
217
251
|
description?: string | null
|
|
252
|
+
namespace?: string | null
|
|
218
253
|
cardinality: 'single' | 'multi'
|
|
219
254
|
kind: 'system' | 'custom'
|
|
220
255
|
hierarchical: boolean
|
|
@@ -230,6 +265,7 @@ export interface FacetDefinitionWriteInput {
|
|
|
230
265
|
key?: string
|
|
231
266
|
name: string
|
|
232
267
|
description?: string | null
|
|
268
|
+
namespace?: string | null
|
|
233
269
|
cardinality?: 'single' | 'multi'
|
|
234
270
|
kind?: 'system' | 'custom'
|
|
235
271
|
hierarchical?: boolean
|
|
@@ -305,6 +341,7 @@ export interface FacetQueryRequest {
|
|
|
305
341
|
facetKeys?: string[]
|
|
306
342
|
includeEmpty?: boolean
|
|
307
343
|
includeDeleted?: boolean
|
|
344
|
+
namespace?: string | null
|
|
308
345
|
query?: {
|
|
309
346
|
search?: string
|
|
310
347
|
status?: string[]
|
|
@@ -326,6 +363,10 @@ export interface FacetBucket {
|
|
|
326
363
|
count: number
|
|
327
364
|
}
|
|
328
365
|
|
|
366
|
+
export interface FacetNamespaceListResponse {
|
|
367
|
+
namespaces: string[]
|
|
368
|
+
}
|
|
369
|
+
|
|
329
370
|
export interface FacetQueryResponse {
|
|
330
371
|
items: Array<{
|
|
331
372
|
facet: FacetDefinition
|
|
@@ -344,4 +385,5 @@ export interface FacetQueryResponse {
|
|
|
344
385
|
- treat facet definitions and facet values as collection-scoped resources
|
|
345
386
|
- use the facet API to manage definitions and values
|
|
346
387
|
- use product read/write routes to assign facet data onto products
|
|
347
|
-
- treat `label` and `category` as reserved system facets when present
|
|
388
|
+
- treat `label` and `category` as reserved system facets when present
|
|
389
|
+
- facets with `namespace: null` are global and appear in all contexts; namespaced facets belong to a specific domain (e.g. `"dpp"`, `"nutrition"`)
|
package/dist/docs/ai.md
CHANGED
|
@@ -251,6 +251,100 @@ const response = await ai.chat.responses.create('my-collection', {
|
|
|
251
251
|
console.log(response.output);
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
+
### Recommended Models
|
|
255
|
+
|
|
256
|
+
For agentic workflows on `v1/responses`, GPT-5.6 ships in three tiers. Pass either the full model
|
|
257
|
+
id (`openai/gpt-5.6-sol`) or the shorthand tier alias (`'cheap'`, `'balanced'`, `'premium'`) as
|
|
258
|
+
`model` — both resolve through the same server-side model registry.
|
|
259
|
+
|
|
260
|
+
| Tier | Model | Alias | Use for |
|
|
261
|
+
|------|-------|-------|---------|
|
|
262
|
+
| Cheapest (default) | `openai/gpt-5.6-luna` | `'cheap'` / omit `model` | Everyday chat, high-volume/simple turns |
|
|
263
|
+
| Balanced | `openai/gpt-5.6-terra` | `'balanced'` | Admin agent / tool-heavy setup workflows (route default) |
|
|
264
|
+
| Flagship | `openai/gpt-5.6-sol` | `'premium'` | Most demanding reasoning, coding, and multi-step tool use |
|
|
265
|
+
|
|
266
|
+
Every tier supports function/tool calling, Programmatic Tool Calling, and Multi-agent (see below), and all
|
|
267
|
+
three accept `service_tier: 'flex'` (≈50% cheaper, Batch-API rates, slower) or `'priority'` (premium, guaranteed
|
|
268
|
+
throughput) alongside the default `'standard'` tier. Pass it straight through in the request body:
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
const response = await ai.chat.responses.create('my-collection', {
|
|
272
|
+
model: 'balanced',
|
|
273
|
+
input: 'Summarize this week\'s ingested documents.',
|
|
274
|
+
service_tier: 'flex' // non-interactive/background work: cheaper, but can take minutes
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Flex requests run noticeably slower — reserve `flex` for non-production/background work (batch enrichment,
|
|
279
|
+
evaluations, async jobs), not user-facing chat turns. The server already raises its own timeout to 15
|
|
280
|
+
minutes for any request with `service_tier: 'flex'`, matching OpenAI's guidance — nothing to configure on
|
|
281
|
+
the client. On a `429` ("resource unavailable") the request wasn't charged; retry with backoff or drop
|
|
282
|
+
`service_tier` (or set it to `'auto'`) to fall back to standard processing.
|
|
283
|
+
|
|
284
|
+
### Programmatic Tool Calling
|
|
285
|
+
|
|
286
|
+
Lets the model write a short in-memory program that orchestrates several tool calls (filtering,
|
|
287
|
+
looping, aggregating) before handing back one result, instead of a full message round-trip per
|
|
288
|
+
call. Add the hosted `programmatic_tool_calling` tool, and mark each function tool the program is
|
|
289
|
+
allowed to invoke with `allowed_callers: ['programmatic']`:
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
const response = await ai.chat.responses.create('my-collection', {
|
|
293
|
+
model: 'balanced',
|
|
294
|
+
input: 'Compare inventory with demand for every SKU in this collection.',
|
|
295
|
+
tools: [
|
|
296
|
+
{
|
|
297
|
+
type: 'function',
|
|
298
|
+
name: 'get_inventory',
|
|
299
|
+
description: 'Return available_units for a sku',
|
|
300
|
+
parameters: { type: 'object', properties: { sku: { type: 'string' } }, required: ['sku'] },
|
|
301
|
+
output_schema: { type: 'object', properties: { sku: { type: 'string' }, available_units: { type: 'number' } } },
|
|
302
|
+
allowed_callers: ['programmatic']
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
type: 'function',
|
|
306
|
+
name: 'get_demand',
|
|
307
|
+
description: 'Return requested_units for a sku',
|
|
308
|
+
parameters: { type: 'object', properties: { sku: { type: 'string' } }, required: ['sku'] },
|
|
309
|
+
output_schema: { type: 'object', properties: { sku: { type: 'string' }, requested_units: { type: 'number' } } },
|
|
310
|
+
allowed_callers: ['programmatic']
|
|
311
|
+
},
|
|
312
|
+
{ type: 'programmatic_tool_calling' }
|
|
313
|
+
]
|
|
314
|
+
});
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
The response's `output` array can include a `program` item (the generated code), one
|
|
318
|
+
`function_call` item per program-issued call (tagged with `caller: { type: 'program', caller_id }`),
|
|
319
|
+
and a `program_output` item with the program's final `result`/`status`. Execute the `function_call`
|
|
320
|
+
items as normal and send results back keyed by their `call_id` on the next turn.
|
|
321
|
+
|
|
322
|
+
### Multi-agent (subagents)
|
|
323
|
+
|
|
324
|
+
Lets the root agent spawn a tree of subagents that run in parallel and get synthesized back into
|
|
325
|
+
one response — useful for tasks that split cleanly into independent workstreams (e.g. research +
|
|
326
|
+
draft + review). Enable it by setting `multi_agent.enabled: true` — that's the entire contract on
|
|
327
|
+
your end; nothing else to configure or pass.
|
|
328
|
+
|
|
329
|
+
This is upstream beta functionality (OpenAI may still be limiting it to certain accounts/rollout),
|
|
330
|
+
so treat behavior and availability as subject to change until it's GA.
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
const response = await ai.chat.responses.create('my-collection', {
|
|
334
|
+
model: 'premium', // Sol recommended for the root agent when spawning subagents
|
|
335
|
+
input: 'Research three competitor loyalty programs, then draft a comparison summary.',
|
|
336
|
+
multi_agent: { enabled: true, max_concurrent_subagents: 3 }
|
|
337
|
+
});
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Subagent output arrives as additional items in `output`, each tagged `agent: { agent_name: '/root/<name>' }`
|
|
341
|
+
(root agent output uses `/root`). Notes/limits carried over from OpenAI's beta:
|
|
342
|
+
|
|
343
|
+
- `max_concurrent_subagents` defaults to `3`
|
|
344
|
+
- `reasoning.summary` and `max_tool_calls` are not supported while multi-agent is enabled
|
|
345
|
+
- Streaming is not supported while multi-agent is enabled — the SDK throws if you pass both
|
|
346
|
+
`stream: true` and `multi_agent.enabled: true`
|
|
347
|
+
|
|
254
348
|
---
|
|
255
349
|
|
|
256
350
|
## Chat Completions
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export type { BroadcastSendRequest } from "./types/broadcasts";
|
|
|
15
15
|
export type { AppConfigOptions } from "./api/appConfiguration";
|
|
16
16
|
export type { AdditionalGtin, ISODateString, JsonPrimitive, JsonValue, ProductCreateRequest, ProductClaimCreateInput, ProductClaimCreateRequestBody, ProductClaimLookupInput, ProductFacetMap, ProductFacetValue, ProductImageUrlInput, ProductKey, ProductQueryRequest, ProductQueryResponse, ProductUpdateRequest, Product, ProductWriteInput, PublicProduct, } from "./types/product";
|
|
17
17
|
export type { TranslationLookupMode, TranslationContentType, TranslationQuality, TranslationItemStatus, TranslationContextValue, TranslationContext, TranslationLookupRequestBase, TranslationLookupSingleRequest, TranslationLookupBatchRequest, TranslationLookupRequest, TranslationLookupItem, TranslationLookupResponse, ResolvedTranslationItem, ResolvedTranslationResponse, TranslationHashOptions, TranslationResolveOptions, TranslationRecord, TranslationListParams, TranslationListResponse, TranslationUpdateRequest, } from "./types/translations";
|
|
18
|
-
export type { FacetBucket, FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetQueryRequest, FacetQueryResponse, FacetValue, FacetValueDefinition, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams, } from "./types/facets";
|
|
18
|
+
export type { FacetBucket, FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetNamespaceListResponse, FacetQueryRequest, FacetQueryResponse, FacetValue, FacetValueDefinition, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams, } from "./types/facets";
|
|
19
19
|
export type { Collection, CollectionResponse, CollectionCreateRequest, CollectionUpdateRequest, DomainTarget, HubAvailabilityResponse, } from "./types/collection";
|
|
20
20
|
export type { Proof, ProofResponse, ProofCreateRequest, ProofUpdateRequest, ProofClaimRequest, } from "./types/proof";
|
|
21
21
|
export type { QrShortCodeLookupResponse, } from "./types/qr";
|
package/dist/openapi.yaml
CHANGED
|
@@ -3429,6 +3429,11 @@ paths:
|
|
|
3429
3429
|
required: false
|
|
3430
3430
|
schema:
|
|
3431
3431
|
type: boolean
|
|
3432
|
+
- name: namespace
|
|
3433
|
+
in: query
|
|
3434
|
+
required: false
|
|
3435
|
+
schema:
|
|
3436
|
+
type: string
|
|
3432
3437
|
responses:
|
|
3433
3438
|
200:
|
|
3434
3439
|
description: Success
|
|
@@ -3474,6 +3479,33 @@ paths:
|
|
|
3474
3479
|
application/json:
|
|
3475
3480
|
schema:
|
|
3476
3481
|
$ref: "#/components/schemas/FacetDefinitionWriteInput"
|
|
3482
|
+
/admin/collection/{collectionId}/facets/namespaces:
|
|
3483
|
+
get:
|
|
3484
|
+
tags:
|
|
3485
|
+
- facets
|
|
3486
|
+
summary: facets.namespaces
|
|
3487
|
+
operationId: facets_namespaces
|
|
3488
|
+
security:
|
|
3489
|
+
- bearerAuth: []
|
|
3490
|
+
parameters:
|
|
3491
|
+
- name: collectionId
|
|
3492
|
+
in: path
|
|
3493
|
+
required: true
|
|
3494
|
+
schema:
|
|
3495
|
+
type: string
|
|
3496
|
+
responses:
|
|
3497
|
+
200:
|
|
3498
|
+
description: Success
|
|
3499
|
+
content:
|
|
3500
|
+
application/json:
|
|
3501
|
+
schema:
|
|
3502
|
+
$ref: "#/components/schemas/FacetNamespaceListResponse"
|
|
3503
|
+
400:
|
|
3504
|
+
description: Bad request
|
|
3505
|
+
401:
|
|
3506
|
+
description: Unauthorized
|
|
3507
|
+
404:
|
|
3508
|
+
description: Not found
|
|
3477
3509
|
/admin/collection/{collectionId}/facets/query:
|
|
3478
3510
|
post:
|
|
3479
3511
|
tags:
|
|
@@ -9316,6 +9348,32 @@ paths:
|
|
|
9316
9348
|
application/json:
|
|
9317
9349
|
schema:
|
|
9318
9350
|
$ref: "#/components/schemas/RequestUploadTokenOptions"
|
|
9351
|
+
/public/collection/by-domain/{domain}:
|
|
9352
|
+
get:
|
|
9353
|
+
tags:
|
|
9354
|
+
- collection
|
|
9355
|
+
summary: Resolve the collection for an explicit Hub domain (public endpoint).
|
|
9356
|
+
operationId: collection_getByDomain
|
|
9357
|
+
security: []
|
|
9358
|
+
parameters:
|
|
9359
|
+
- name: domain
|
|
9360
|
+
in: path
|
|
9361
|
+
required: true
|
|
9362
|
+
schema:
|
|
9363
|
+
type: string
|
|
9364
|
+
responses:
|
|
9365
|
+
200:
|
|
9366
|
+
description: Success
|
|
9367
|
+
content:
|
|
9368
|
+
application/json:
|
|
9369
|
+
schema:
|
|
9370
|
+
$ref: "#/components/schemas/CollectionResponse"
|
|
9371
|
+
400:
|
|
9372
|
+
description: Bad request
|
|
9373
|
+
401:
|
|
9374
|
+
description: Unauthorized
|
|
9375
|
+
404:
|
|
9376
|
+
description: Not found
|
|
9319
9377
|
/public/collection/getByHub:
|
|
9320
9378
|
get:
|
|
9321
9379
|
tags:
|
|
@@ -10811,6 +10869,11 @@ paths:
|
|
|
10811
10869
|
required: false
|
|
10812
10870
|
schema:
|
|
10813
10871
|
type: boolean
|
|
10872
|
+
- name: namespace
|
|
10873
|
+
in: query
|
|
10874
|
+
required: false
|
|
10875
|
+
schema:
|
|
10876
|
+
type: string
|
|
10814
10877
|
responses:
|
|
10815
10878
|
200:
|
|
10816
10879
|
description: Success
|
|
@@ -10824,6 +10887,32 @@ paths:
|
|
|
10824
10887
|
description: Unauthorized
|
|
10825
10888
|
404:
|
|
10826
10889
|
description: Not found
|
|
10890
|
+
/public/collection/{collectionId}/facets/namespaces:
|
|
10891
|
+
get:
|
|
10892
|
+
tags:
|
|
10893
|
+
- facets
|
|
10894
|
+
summary: facets.publicNamespaces
|
|
10895
|
+
operationId: facets_publicNamespaces
|
|
10896
|
+
security: []
|
|
10897
|
+
parameters:
|
|
10898
|
+
- name: collectionId
|
|
10899
|
+
in: path
|
|
10900
|
+
required: true
|
|
10901
|
+
schema:
|
|
10902
|
+
type: string
|
|
10903
|
+
responses:
|
|
10904
|
+
200:
|
|
10905
|
+
description: Success
|
|
10906
|
+
content:
|
|
10907
|
+
application/json:
|
|
10908
|
+
schema:
|
|
10909
|
+
$ref: "#/components/schemas/FacetNamespaceListResponse"
|
|
10910
|
+
400:
|
|
10911
|
+
description: Bad request
|
|
10912
|
+
401:
|
|
10913
|
+
description: Unauthorized
|
|
10914
|
+
404:
|
|
10915
|
+
description: Not found
|
|
10827
10916
|
/public/collection/{collectionId}/facets/query:
|
|
10828
10917
|
post:
|
|
10829
10918
|
tags:
|
|
@@ -10879,6 +10968,11 @@ paths:
|
|
|
10879
10968
|
required: false
|
|
10880
10969
|
schema:
|
|
10881
10970
|
type: boolean
|
|
10971
|
+
- name: namespace
|
|
10972
|
+
in: query
|
|
10973
|
+
required: false
|
|
10974
|
+
schema:
|
|
10975
|
+
type: string
|
|
10882
10976
|
responses:
|
|
10883
10977
|
200:
|
|
10884
10978
|
description: Success
|
|
@@ -13870,6 +13964,16 @@ components:
|
|
|
13870
13964
|
parameters:
|
|
13871
13965
|
type: object
|
|
13872
13966
|
additionalProperties: true
|
|
13967
|
+
output_schema:
|
|
13968
|
+
type: object
|
|
13969
|
+
additionalProperties: true
|
|
13970
|
+
allowed_callers:
|
|
13971
|
+
type: array
|
|
13972
|
+
items:
|
|
13973
|
+
type: string
|
|
13974
|
+
enum:
|
|
13975
|
+
- assistant
|
|
13976
|
+
- programmatic
|
|
13873
13977
|
required:
|
|
13874
13978
|
- type
|
|
13875
13979
|
ResponseInputItem:
|
|
@@ -13958,6 +14062,22 @@ components:
|
|
|
13958
14062
|
type: string
|
|
13959
14063
|
prompt_cache_key:
|
|
13960
14064
|
type: string
|
|
14065
|
+
multi_agent:
|
|
14066
|
+
type: object
|
|
14067
|
+
additionalProperties: true
|
|
14068
|
+
enabled:
|
|
14069
|
+
type: boolean
|
|
14070
|
+
max_concurrent_subagents:
|
|
14071
|
+
type: number
|
|
14072
|
+
service_tier:
|
|
14073
|
+
type: string
|
|
14074
|
+
enum:
|
|
14075
|
+
- auto
|
|
14076
|
+
- standard
|
|
14077
|
+
- flex
|
|
14078
|
+
- priority
|
|
14079
|
+
required:
|
|
14080
|
+
- enabled
|
|
13961
14081
|
ResponsesResult:
|
|
13962
14082
|
type: object
|
|
13963
14083
|
properties:
|
|
@@ -20697,6 +20817,8 @@ components:
|
|
|
20697
20817
|
type: string
|
|
20698
20818
|
description:
|
|
20699
20819
|
type: string
|
|
20820
|
+
namespace:
|
|
20821
|
+
type: string
|
|
20700
20822
|
cardinality:
|
|
20701
20823
|
type: object
|
|
20702
20824
|
additionalProperties: true
|
|
@@ -20792,6 +20914,8 @@ components:
|
|
|
20792
20914
|
type: string
|
|
20793
20915
|
description:
|
|
20794
20916
|
type: string
|
|
20917
|
+
namespace:
|
|
20918
|
+
type: string
|
|
20795
20919
|
cardinality:
|
|
20796
20920
|
type: object
|
|
20797
20921
|
additionalProperties: true
|
|
@@ -20887,6 +21011,8 @@ components:
|
|
|
20887
21011
|
type: boolean
|
|
20888
21012
|
includeDeleted:
|
|
20889
21013
|
type: boolean
|
|
21014
|
+
namespace:
|
|
21015
|
+
type: string
|
|
20890
21016
|
query:
|
|
20891
21017
|
type: object
|
|
20892
21018
|
additionalProperties: true
|
|
@@ -20954,11 +21080,24 @@ components:
|
|
|
20954
21080
|
additionalProperties: true
|
|
20955
21081
|
reserved:
|
|
20956
21082
|
type: boolean
|
|
21083
|
+
namespace:
|
|
21084
|
+
type: string
|
|
20957
21085
|
PublicFacetListParams:
|
|
20958
21086
|
type: object
|
|
20959
21087
|
properties:
|
|
20960
21088
|
includeValues:
|
|
20961
21089
|
type: boolean
|
|
21090
|
+
namespace:
|
|
21091
|
+
type: string
|
|
21092
|
+
FacetNamespaceListResponse:
|
|
21093
|
+
type: object
|
|
21094
|
+
properties:
|
|
21095
|
+
namespaces:
|
|
21096
|
+
type: array
|
|
21097
|
+
items:
|
|
21098
|
+
type: string
|
|
21099
|
+
required:
|
|
21100
|
+
- namespaces
|
|
20962
21101
|
FacetGetParams:
|
|
20963
21102
|
type: object
|
|
20964
21103
|
properties:
|
package/dist/types/ai.d.ts
CHANGED
|
@@ -56,6 +56,10 @@ export interface ResponseTool {
|
|
|
56
56
|
name?: string;
|
|
57
57
|
description?: string;
|
|
58
58
|
parameters?: Record<string, any>;
|
|
59
|
+
/** Expected shape of this tool's output, used by Programmatic Tool Calling. */
|
|
60
|
+
output_schema?: Record<string, any>;
|
|
61
|
+
/** Restricts which callers may invoke this tool (e.g. `['programmatic']` for Programmatic Tool Calling). */
|
|
62
|
+
allowed_callers?: Array<'assistant' | 'programmatic'>;
|
|
59
63
|
[key: string]: any;
|
|
60
64
|
}
|
|
61
65
|
/** Structured input item accepted by the Responses API. */
|
|
@@ -98,6 +102,13 @@ export interface ResponsesRequest {
|
|
|
98
102
|
text?: Record<string, any>;
|
|
99
103
|
metadata?: Record<string, string>;
|
|
100
104
|
prompt_cache_key?: string;
|
|
105
|
+
/** Enables multi-agent (subagent) orchestration. Not supported together with `stream: true`. */
|
|
106
|
+
multi_agent?: {
|
|
107
|
+
enabled: boolean;
|
|
108
|
+
max_concurrent_subagents?: number;
|
|
109
|
+
};
|
|
110
|
+
/** `'flex'` is ~50% cheaper at Batch-API rates but slower; reserve for non-interactive/background work. */
|
|
111
|
+
service_tier?: 'auto' | 'standard' | 'flex' | 'priority';
|
|
101
112
|
}
|
|
102
113
|
/** Response from the Responses API. */
|
|
103
114
|
export interface ResponsesResult {
|
package/dist/types/facets.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface FacetDefinition {
|
|
|
6
6
|
key: string;
|
|
7
7
|
name: string;
|
|
8
8
|
description?: string | null;
|
|
9
|
+
namespace?: string | null;
|
|
9
10
|
cardinality?: "single" | "multi";
|
|
10
11
|
kind?: "system" | "custom";
|
|
11
12
|
hierarchical?: boolean;
|
|
@@ -46,6 +47,7 @@ export interface FacetDefinitionWriteInput {
|
|
|
46
47
|
key?: string;
|
|
47
48
|
name: string;
|
|
48
49
|
description?: string | null;
|
|
50
|
+
namespace?: string | null;
|
|
49
51
|
cardinality?: "single" | "multi";
|
|
50
52
|
kind?: "system" | "custom";
|
|
51
53
|
hierarchical?: boolean;
|
|
@@ -83,6 +85,7 @@ export interface FacetQueryRequest {
|
|
|
83
85
|
facetKeys?: string[];
|
|
84
86
|
includeEmpty?: boolean;
|
|
85
87
|
includeDeleted?: boolean;
|
|
88
|
+
namespace?: string | null;
|
|
86
89
|
query?: ProductQueryRequest["query"] & {
|
|
87
90
|
facetEquals?: Record<string, JsonValue | JsonValue[]>;
|
|
88
91
|
};
|
|
@@ -109,9 +112,14 @@ export interface FacetListParams {
|
|
|
109
112
|
includeDeleted?: boolean;
|
|
110
113
|
kind?: "system" | "custom";
|
|
111
114
|
reserved?: boolean;
|
|
115
|
+
namespace?: string;
|
|
112
116
|
}
|
|
113
117
|
export interface PublicFacetListParams {
|
|
114
118
|
includeValues?: boolean;
|
|
119
|
+
namespace?: string;
|
|
120
|
+
}
|
|
121
|
+
export interface FacetNamespaceListResponse {
|
|
122
|
+
namespaces: string[];
|
|
115
123
|
}
|
|
116
124
|
export interface FacetGetParams {
|
|
117
125
|
includeValues?: boolean;
|
package/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 1.15.
|
|
3
|
+
Version: 1.15.3 | Generated: 2026-07-11T13:25:50.969Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -499,6 +499,8 @@ interface ResponseTool {
|
|
|
499
499
|
name?: string
|
|
500
500
|
description?: string
|
|
501
501
|
parameters?: Record<string, any>
|
|
502
|
+
output_schema?: Record<string, any>
|
|
503
|
+
allowed_callers?: Array<'assistant' | 'programmatic'>
|
|
502
504
|
[key: string]: any
|
|
503
505
|
}
|
|
504
506
|
```
|
|
@@ -544,6 +546,11 @@ interface ResponsesRequest {
|
|
|
544
546
|
text?: Record<string, any>
|
|
545
547
|
metadata?: Record<string, string>
|
|
546
548
|
prompt_cache_key?: string
|
|
549
|
+
multi_agent?: {
|
|
550
|
+
enabled: boolean
|
|
551
|
+
max_concurrent_subagents?: number
|
|
552
|
+
}
|
|
553
|
+
service_tier?: 'auto' | 'standard' | 'flex' | 'priority'
|
|
547
554
|
}
|
|
548
555
|
```
|
|
549
556
|
|
|
@@ -5039,6 +5046,7 @@ interface FacetDefinition {
|
|
|
5039
5046
|
key: string
|
|
5040
5047
|
name: string
|
|
5041
5048
|
description?: string | null
|
|
5049
|
+
namespace?: string | null
|
|
5042
5050
|
cardinality?: "single" | "multi"
|
|
5043
5051
|
kind?: "system" | "custom"
|
|
5044
5052
|
hierarchical?: boolean
|
|
@@ -5087,6 +5095,7 @@ interface FacetDefinitionWriteInput {
|
|
|
5087
5095
|
key?: string
|
|
5088
5096
|
name: string
|
|
5089
5097
|
description?: string | null
|
|
5098
|
+
namespace?: string | null
|
|
5090
5099
|
cardinality?: "single" | "multi"
|
|
5091
5100
|
kind?: "system" | "custom"
|
|
5092
5101
|
hierarchical?: boolean
|
|
@@ -5144,6 +5153,7 @@ interface FacetQueryRequest {
|
|
|
5144
5153
|
facetKeys?: string[]
|
|
5145
5154
|
includeEmpty?: boolean
|
|
5146
5155
|
includeDeleted?: boolean
|
|
5156
|
+
namespace?: string | null
|
|
5147
5157
|
query?: ProductQueryRequest["query"] & {
|
|
5148
5158
|
facetEquals?: Record<string, JsonValue | JsonValue[]>
|
|
5149
5159
|
}
|
|
@@ -5182,6 +5192,7 @@ interface FacetListParams {
|
|
|
5182
5192
|
includeDeleted?: boolean
|
|
5183
5193
|
kind?: "system" | "custom"
|
|
5184
5194
|
reserved?: boolean
|
|
5195
|
+
namespace?: string
|
|
5185
5196
|
}
|
|
5186
5197
|
```
|
|
5187
5198
|
|
|
@@ -5189,6 +5200,14 @@ interface FacetListParams {
|
|
|
5189
5200
|
```typescript
|
|
5190
5201
|
interface PublicFacetListParams {
|
|
5191
5202
|
includeValues?: boolean
|
|
5203
|
+
namespace?: string
|
|
5204
|
+
}
|
|
5205
|
+
```
|
|
5206
|
+
|
|
5207
|
+
**FacetNamespaceListResponse** (interface)
|
|
5208
|
+
```typescript
|
|
5209
|
+
interface FacetNamespaceListResponse {
|
|
5210
|
+
namespaces: string[]
|
|
5192
5211
|
}
|
|
5193
5212
|
```
|
|
5194
5213
|
|
|
@@ -8619,6 +8638,9 @@ Retrieve a collection by its shortId (public endpoint).
|
|
|
8619
8638
|
**getByHub**() → `Promise<CollectionResponse>`
|
|
8620
8639
|
Resolve the collection for the current Hub domain (public endpoint). The server derives the requesting domain from the request headers (`X-Source-Domain` / `X-Forwarded-Host` / `Host`), so no identifier is passed — this is the call a Hub frontend makes on load to find out which collection it is serving, whether it's reached via `{brand}.mysmartlinks.app` or a bring-your-own custom domain (e.g. `hub.acme.com`).
|
|
8621
8640
|
|
|
8641
|
+
**getByDomain**(domain: string) → `Promise<CollectionResponse>`
|
|
8642
|
+
Resolve the collection for an explicit Hub domain (public endpoint). Unlike {@link getByHub}, the domain is passed explicitly rather than derived from request headers — use this for raw/cross-origin calls where the Hub frontend knows its own hostname (e.g. "erbauer.mysmartlinks.app").
|
|
8643
|
+
|
|
8622
8644
|
**checkHubAvailability**(collectionId: string, name: string) → `Promise<HubAvailabilityResponse>`
|
|
8623
8645
|
Check whether a Hub subdomain name is available to claim (admin only).
|
|
8624
8646
|
|
|
@@ -8942,6 +8964,8 @@ Delete a crate for a collection (admin only). This performs a soft delete. ```ty
|
|
|
8942
8964
|
**query**(collectionId: string,
|
|
8943
8965
|
body: FacetQueryRequest) → `Promise<FacetQueryResponse>`
|
|
8944
8966
|
|
|
8967
|
+
**namespaces**(collectionId: string) → `Promise<FacetNamespaceListResponse>`
|
|
8968
|
+
|
|
8945
8969
|
**publicList**(collectionId: string,
|
|
8946
8970
|
params?: PublicFacetListParams) → `Promise<FacetListResponse>`
|
|
8947
8971
|
|
|
@@ -8959,6 +8983,8 @@ Delete a crate for a collection (admin only). This performs a soft delete. ```ty
|
|
|
8959
8983
|
**publicQuery**(collectionId: string,
|
|
8960
8984
|
body: FacetQueryRequest) → `Promise<FacetQueryResponse>`
|
|
8961
8985
|
|
|
8986
|
+
**publicNamespaces**(collectionId: string) → `Promise<FacetNamespaceListResponse>`
|
|
8987
|
+
|
|
8962
8988
|
### form
|
|
8963
8989
|
|
|
8964
8990
|
**get**(collectionId: string, formId: string, admin?: boolean) → `Promise<any>`
|
|
@@ -42,6 +42,21 @@ includeValues?: boolean
|
|
|
42
42
|
includeDeleted?: boolean
|
|
43
43
|
kind?: 'system' | 'custom'
|
|
44
44
|
reserved?: boolean
|
|
45
|
+
namespace?: string
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
When `namespace` is provided, returns facets matching that namespace plus global facets (`namespace: null`). Omit the param to return all facets.
|
|
49
|
+
|
|
50
|
+
### List namespaces
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
GET /api/v1/admin/collection/:collectionId/facets/namespaces
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Returns all distinct namespaces in use for the collection (excludes globals).
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
{ namespaces: string[] }
|
|
45
60
|
```
|
|
46
61
|
|
|
47
62
|
### Create facet definition
|
|
@@ -50,6 +65,8 @@ reserved?: boolean
|
|
|
50
65
|
POST /api/v1/admin/collection/:collectionId/facets
|
|
51
66
|
```
|
|
52
67
|
|
|
68
|
+
Pass `namespace` in the body to scope the facet to a domain (e.g. `"dpp"`, `"nutrition"`). Omit it to create a global facet.
|
|
69
|
+
|
|
53
70
|
### Get facet definition
|
|
54
71
|
|
|
55
72
|
```ts
|
|
@@ -146,6 +163,8 @@ Supported query filters now:
|
|
|
146
163
|
- `tags`
|
|
147
164
|
- `facetEquals`
|
|
148
165
|
|
|
166
|
+
Body also accepts `namespace` (optional) to scope aggregation to a namespace plus global facets.
|
|
167
|
+
|
|
149
168
|
## Public endpoints
|
|
150
169
|
|
|
151
170
|
### List facet definitions
|
|
@@ -158,6 +177,21 @@ Optional query params:
|
|
|
158
177
|
|
|
159
178
|
```ts
|
|
160
179
|
includeValues?: boolean
|
|
180
|
+
namespace?: string
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
When `namespace` is provided, returns facets matching that namespace plus global facets (`namespace: null`). Omit the param to return all facets.
|
|
184
|
+
|
|
185
|
+
### List namespaces
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
GET /api/v1/public/collection/:collectionId/facets/namespaces
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Returns all distinct namespaces in use for the collection (excludes globals).
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
{ namespaces: string[] }
|
|
161
195
|
```
|
|
162
196
|
|
|
163
197
|
### Get facet definition
|
|
@@ -215,6 +249,7 @@ export interface FacetDefinition {
|
|
|
215
249
|
key: string
|
|
216
250
|
name: string
|
|
217
251
|
description?: string | null
|
|
252
|
+
namespace?: string | null
|
|
218
253
|
cardinality: 'single' | 'multi'
|
|
219
254
|
kind: 'system' | 'custom'
|
|
220
255
|
hierarchical: boolean
|
|
@@ -230,6 +265,7 @@ export interface FacetDefinitionWriteInput {
|
|
|
230
265
|
key?: string
|
|
231
266
|
name: string
|
|
232
267
|
description?: string | null
|
|
268
|
+
namespace?: string | null
|
|
233
269
|
cardinality?: 'single' | 'multi'
|
|
234
270
|
kind?: 'system' | 'custom'
|
|
235
271
|
hierarchical?: boolean
|
|
@@ -305,6 +341,7 @@ export interface FacetQueryRequest {
|
|
|
305
341
|
facetKeys?: string[]
|
|
306
342
|
includeEmpty?: boolean
|
|
307
343
|
includeDeleted?: boolean
|
|
344
|
+
namespace?: string | null
|
|
308
345
|
query?: {
|
|
309
346
|
search?: string
|
|
310
347
|
status?: string[]
|
|
@@ -326,6 +363,10 @@ export interface FacetBucket {
|
|
|
326
363
|
count: number
|
|
327
364
|
}
|
|
328
365
|
|
|
366
|
+
export interface FacetNamespaceListResponse {
|
|
367
|
+
namespaces: string[]
|
|
368
|
+
}
|
|
369
|
+
|
|
329
370
|
export interface FacetQueryResponse {
|
|
330
371
|
items: Array<{
|
|
331
372
|
facet: FacetDefinition
|
|
@@ -344,4 +385,5 @@ export interface FacetQueryResponse {
|
|
|
344
385
|
- treat facet definitions and facet values as collection-scoped resources
|
|
345
386
|
- use the facet API to manage definitions and values
|
|
346
387
|
- use product read/write routes to assign facet data onto products
|
|
347
|
-
- treat `label` and `category` as reserved system facets when present
|
|
388
|
+
- treat `label` and `category` as reserved system facets when present
|
|
389
|
+
- facets with `namespace: null` are global and appear in all contexts; namespaced facets belong to a specific domain (e.g. `"dpp"`, `"nutrition"`)
|
package/docs/ai.md
CHANGED
|
@@ -251,6 +251,100 @@ const response = await ai.chat.responses.create('my-collection', {
|
|
|
251
251
|
console.log(response.output);
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
+
### Recommended Models
|
|
255
|
+
|
|
256
|
+
For agentic workflows on `v1/responses`, GPT-5.6 ships in three tiers. Pass either the full model
|
|
257
|
+
id (`openai/gpt-5.6-sol`) or the shorthand tier alias (`'cheap'`, `'balanced'`, `'premium'`) as
|
|
258
|
+
`model` — both resolve through the same server-side model registry.
|
|
259
|
+
|
|
260
|
+
| Tier | Model | Alias | Use for |
|
|
261
|
+
|------|-------|-------|---------|
|
|
262
|
+
| Cheapest (default) | `openai/gpt-5.6-luna` | `'cheap'` / omit `model` | Everyday chat, high-volume/simple turns |
|
|
263
|
+
| Balanced | `openai/gpt-5.6-terra` | `'balanced'` | Admin agent / tool-heavy setup workflows (route default) |
|
|
264
|
+
| Flagship | `openai/gpt-5.6-sol` | `'premium'` | Most demanding reasoning, coding, and multi-step tool use |
|
|
265
|
+
|
|
266
|
+
Every tier supports function/tool calling, Programmatic Tool Calling, and Multi-agent (see below), and all
|
|
267
|
+
three accept `service_tier: 'flex'` (≈50% cheaper, Batch-API rates, slower) or `'priority'` (premium, guaranteed
|
|
268
|
+
throughput) alongside the default `'standard'` tier. Pass it straight through in the request body:
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
const response = await ai.chat.responses.create('my-collection', {
|
|
272
|
+
model: 'balanced',
|
|
273
|
+
input: 'Summarize this week\'s ingested documents.',
|
|
274
|
+
service_tier: 'flex' // non-interactive/background work: cheaper, but can take minutes
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Flex requests run noticeably slower — reserve `flex` for non-production/background work (batch enrichment,
|
|
279
|
+
evaluations, async jobs), not user-facing chat turns. The server already raises its own timeout to 15
|
|
280
|
+
minutes for any request with `service_tier: 'flex'`, matching OpenAI's guidance — nothing to configure on
|
|
281
|
+
the client. On a `429` ("resource unavailable") the request wasn't charged; retry with backoff or drop
|
|
282
|
+
`service_tier` (or set it to `'auto'`) to fall back to standard processing.
|
|
283
|
+
|
|
284
|
+
### Programmatic Tool Calling
|
|
285
|
+
|
|
286
|
+
Lets the model write a short in-memory program that orchestrates several tool calls (filtering,
|
|
287
|
+
looping, aggregating) before handing back one result, instead of a full message round-trip per
|
|
288
|
+
call. Add the hosted `programmatic_tool_calling` tool, and mark each function tool the program is
|
|
289
|
+
allowed to invoke with `allowed_callers: ['programmatic']`:
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
const response = await ai.chat.responses.create('my-collection', {
|
|
293
|
+
model: 'balanced',
|
|
294
|
+
input: 'Compare inventory with demand for every SKU in this collection.',
|
|
295
|
+
tools: [
|
|
296
|
+
{
|
|
297
|
+
type: 'function',
|
|
298
|
+
name: 'get_inventory',
|
|
299
|
+
description: 'Return available_units for a sku',
|
|
300
|
+
parameters: { type: 'object', properties: { sku: { type: 'string' } }, required: ['sku'] },
|
|
301
|
+
output_schema: { type: 'object', properties: { sku: { type: 'string' }, available_units: { type: 'number' } } },
|
|
302
|
+
allowed_callers: ['programmatic']
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
type: 'function',
|
|
306
|
+
name: 'get_demand',
|
|
307
|
+
description: 'Return requested_units for a sku',
|
|
308
|
+
parameters: { type: 'object', properties: { sku: { type: 'string' } }, required: ['sku'] },
|
|
309
|
+
output_schema: { type: 'object', properties: { sku: { type: 'string' }, requested_units: { type: 'number' } } },
|
|
310
|
+
allowed_callers: ['programmatic']
|
|
311
|
+
},
|
|
312
|
+
{ type: 'programmatic_tool_calling' }
|
|
313
|
+
]
|
|
314
|
+
});
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
The response's `output` array can include a `program` item (the generated code), one
|
|
318
|
+
`function_call` item per program-issued call (tagged with `caller: { type: 'program', caller_id }`),
|
|
319
|
+
and a `program_output` item with the program's final `result`/`status`. Execute the `function_call`
|
|
320
|
+
items as normal and send results back keyed by their `call_id` on the next turn.
|
|
321
|
+
|
|
322
|
+
### Multi-agent (subagents)
|
|
323
|
+
|
|
324
|
+
Lets the root agent spawn a tree of subagents that run in parallel and get synthesized back into
|
|
325
|
+
one response — useful for tasks that split cleanly into independent workstreams (e.g. research +
|
|
326
|
+
draft + review). Enable it by setting `multi_agent.enabled: true` — that's the entire contract on
|
|
327
|
+
your end; nothing else to configure or pass.
|
|
328
|
+
|
|
329
|
+
This is upstream beta functionality (OpenAI may still be limiting it to certain accounts/rollout),
|
|
330
|
+
so treat behavior and availability as subject to change until it's GA.
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
const response = await ai.chat.responses.create('my-collection', {
|
|
334
|
+
model: 'premium', // Sol recommended for the root agent when spawning subagents
|
|
335
|
+
input: 'Research three competitor loyalty programs, then draft a comparison summary.',
|
|
336
|
+
multi_agent: { enabled: true, max_concurrent_subagents: 3 }
|
|
337
|
+
});
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Subagent output arrives as additional items in `output`, each tagged `agent: { agent_name: '/root/<name>' }`
|
|
341
|
+
(root agent output uses `/root`). Notes/limits carried over from OpenAI's beta:
|
|
342
|
+
|
|
343
|
+
- `max_concurrent_subagents` defaults to `3`
|
|
344
|
+
- `reasoning.summary` and `max_tool_calls` are not supported while multi-agent is enabled
|
|
345
|
+
- Streaming is not supported while multi-agent is enabled — the SDK throws if you pass both
|
|
346
|
+
`stream: true` and `multi_agent.enabled: true`
|
|
347
|
+
|
|
254
348
|
---
|
|
255
349
|
|
|
256
350
|
## Chat Completions
|
package/openapi.yaml
CHANGED
|
@@ -3429,6 +3429,11 @@ paths:
|
|
|
3429
3429
|
required: false
|
|
3430
3430
|
schema:
|
|
3431
3431
|
type: boolean
|
|
3432
|
+
- name: namespace
|
|
3433
|
+
in: query
|
|
3434
|
+
required: false
|
|
3435
|
+
schema:
|
|
3436
|
+
type: string
|
|
3432
3437
|
responses:
|
|
3433
3438
|
200:
|
|
3434
3439
|
description: Success
|
|
@@ -3474,6 +3479,33 @@ paths:
|
|
|
3474
3479
|
application/json:
|
|
3475
3480
|
schema:
|
|
3476
3481
|
$ref: "#/components/schemas/FacetDefinitionWriteInput"
|
|
3482
|
+
/admin/collection/{collectionId}/facets/namespaces:
|
|
3483
|
+
get:
|
|
3484
|
+
tags:
|
|
3485
|
+
- facets
|
|
3486
|
+
summary: facets.namespaces
|
|
3487
|
+
operationId: facets_namespaces
|
|
3488
|
+
security:
|
|
3489
|
+
- bearerAuth: []
|
|
3490
|
+
parameters:
|
|
3491
|
+
- name: collectionId
|
|
3492
|
+
in: path
|
|
3493
|
+
required: true
|
|
3494
|
+
schema:
|
|
3495
|
+
type: string
|
|
3496
|
+
responses:
|
|
3497
|
+
200:
|
|
3498
|
+
description: Success
|
|
3499
|
+
content:
|
|
3500
|
+
application/json:
|
|
3501
|
+
schema:
|
|
3502
|
+
$ref: "#/components/schemas/FacetNamespaceListResponse"
|
|
3503
|
+
400:
|
|
3504
|
+
description: Bad request
|
|
3505
|
+
401:
|
|
3506
|
+
description: Unauthorized
|
|
3507
|
+
404:
|
|
3508
|
+
description: Not found
|
|
3477
3509
|
/admin/collection/{collectionId}/facets/query:
|
|
3478
3510
|
post:
|
|
3479
3511
|
tags:
|
|
@@ -9316,6 +9348,32 @@ paths:
|
|
|
9316
9348
|
application/json:
|
|
9317
9349
|
schema:
|
|
9318
9350
|
$ref: "#/components/schemas/RequestUploadTokenOptions"
|
|
9351
|
+
/public/collection/by-domain/{domain}:
|
|
9352
|
+
get:
|
|
9353
|
+
tags:
|
|
9354
|
+
- collection
|
|
9355
|
+
summary: Resolve the collection for an explicit Hub domain (public endpoint).
|
|
9356
|
+
operationId: collection_getByDomain
|
|
9357
|
+
security: []
|
|
9358
|
+
parameters:
|
|
9359
|
+
- name: domain
|
|
9360
|
+
in: path
|
|
9361
|
+
required: true
|
|
9362
|
+
schema:
|
|
9363
|
+
type: string
|
|
9364
|
+
responses:
|
|
9365
|
+
200:
|
|
9366
|
+
description: Success
|
|
9367
|
+
content:
|
|
9368
|
+
application/json:
|
|
9369
|
+
schema:
|
|
9370
|
+
$ref: "#/components/schemas/CollectionResponse"
|
|
9371
|
+
400:
|
|
9372
|
+
description: Bad request
|
|
9373
|
+
401:
|
|
9374
|
+
description: Unauthorized
|
|
9375
|
+
404:
|
|
9376
|
+
description: Not found
|
|
9319
9377
|
/public/collection/getByHub:
|
|
9320
9378
|
get:
|
|
9321
9379
|
tags:
|
|
@@ -10811,6 +10869,11 @@ paths:
|
|
|
10811
10869
|
required: false
|
|
10812
10870
|
schema:
|
|
10813
10871
|
type: boolean
|
|
10872
|
+
- name: namespace
|
|
10873
|
+
in: query
|
|
10874
|
+
required: false
|
|
10875
|
+
schema:
|
|
10876
|
+
type: string
|
|
10814
10877
|
responses:
|
|
10815
10878
|
200:
|
|
10816
10879
|
description: Success
|
|
@@ -10824,6 +10887,32 @@ paths:
|
|
|
10824
10887
|
description: Unauthorized
|
|
10825
10888
|
404:
|
|
10826
10889
|
description: Not found
|
|
10890
|
+
/public/collection/{collectionId}/facets/namespaces:
|
|
10891
|
+
get:
|
|
10892
|
+
tags:
|
|
10893
|
+
- facets
|
|
10894
|
+
summary: facets.publicNamespaces
|
|
10895
|
+
operationId: facets_publicNamespaces
|
|
10896
|
+
security: []
|
|
10897
|
+
parameters:
|
|
10898
|
+
- name: collectionId
|
|
10899
|
+
in: path
|
|
10900
|
+
required: true
|
|
10901
|
+
schema:
|
|
10902
|
+
type: string
|
|
10903
|
+
responses:
|
|
10904
|
+
200:
|
|
10905
|
+
description: Success
|
|
10906
|
+
content:
|
|
10907
|
+
application/json:
|
|
10908
|
+
schema:
|
|
10909
|
+
$ref: "#/components/schemas/FacetNamespaceListResponse"
|
|
10910
|
+
400:
|
|
10911
|
+
description: Bad request
|
|
10912
|
+
401:
|
|
10913
|
+
description: Unauthorized
|
|
10914
|
+
404:
|
|
10915
|
+
description: Not found
|
|
10827
10916
|
/public/collection/{collectionId}/facets/query:
|
|
10828
10917
|
post:
|
|
10829
10918
|
tags:
|
|
@@ -10879,6 +10968,11 @@ paths:
|
|
|
10879
10968
|
required: false
|
|
10880
10969
|
schema:
|
|
10881
10970
|
type: boolean
|
|
10971
|
+
- name: namespace
|
|
10972
|
+
in: query
|
|
10973
|
+
required: false
|
|
10974
|
+
schema:
|
|
10975
|
+
type: string
|
|
10882
10976
|
responses:
|
|
10883
10977
|
200:
|
|
10884
10978
|
description: Success
|
|
@@ -13870,6 +13964,16 @@ components:
|
|
|
13870
13964
|
parameters:
|
|
13871
13965
|
type: object
|
|
13872
13966
|
additionalProperties: true
|
|
13967
|
+
output_schema:
|
|
13968
|
+
type: object
|
|
13969
|
+
additionalProperties: true
|
|
13970
|
+
allowed_callers:
|
|
13971
|
+
type: array
|
|
13972
|
+
items:
|
|
13973
|
+
type: string
|
|
13974
|
+
enum:
|
|
13975
|
+
- assistant
|
|
13976
|
+
- programmatic
|
|
13873
13977
|
required:
|
|
13874
13978
|
- type
|
|
13875
13979
|
ResponseInputItem:
|
|
@@ -13958,6 +14062,22 @@ components:
|
|
|
13958
14062
|
type: string
|
|
13959
14063
|
prompt_cache_key:
|
|
13960
14064
|
type: string
|
|
14065
|
+
multi_agent:
|
|
14066
|
+
type: object
|
|
14067
|
+
additionalProperties: true
|
|
14068
|
+
enabled:
|
|
14069
|
+
type: boolean
|
|
14070
|
+
max_concurrent_subagents:
|
|
14071
|
+
type: number
|
|
14072
|
+
service_tier:
|
|
14073
|
+
type: string
|
|
14074
|
+
enum:
|
|
14075
|
+
- auto
|
|
14076
|
+
- standard
|
|
14077
|
+
- flex
|
|
14078
|
+
- priority
|
|
14079
|
+
required:
|
|
14080
|
+
- enabled
|
|
13961
14081
|
ResponsesResult:
|
|
13962
14082
|
type: object
|
|
13963
14083
|
properties:
|
|
@@ -20697,6 +20817,8 @@ components:
|
|
|
20697
20817
|
type: string
|
|
20698
20818
|
description:
|
|
20699
20819
|
type: string
|
|
20820
|
+
namespace:
|
|
20821
|
+
type: string
|
|
20700
20822
|
cardinality:
|
|
20701
20823
|
type: object
|
|
20702
20824
|
additionalProperties: true
|
|
@@ -20792,6 +20914,8 @@ components:
|
|
|
20792
20914
|
type: string
|
|
20793
20915
|
description:
|
|
20794
20916
|
type: string
|
|
20917
|
+
namespace:
|
|
20918
|
+
type: string
|
|
20795
20919
|
cardinality:
|
|
20796
20920
|
type: object
|
|
20797
20921
|
additionalProperties: true
|
|
@@ -20887,6 +21011,8 @@ components:
|
|
|
20887
21011
|
type: boolean
|
|
20888
21012
|
includeDeleted:
|
|
20889
21013
|
type: boolean
|
|
21014
|
+
namespace:
|
|
21015
|
+
type: string
|
|
20890
21016
|
query:
|
|
20891
21017
|
type: object
|
|
20892
21018
|
additionalProperties: true
|
|
@@ -20954,11 +21080,24 @@ components:
|
|
|
20954
21080
|
additionalProperties: true
|
|
20955
21081
|
reserved:
|
|
20956
21082
|
type: boolean
|
|
21083
|
+
namespace:
|
|
21084
|
+
type: string
|
|
20957
21085
|
PublicFacetListParams:
|
|
20958
21086
|
type: object
|
|
20959
21087
|
properties:
|
|
20960
21088
|
includeValues:
|
|
20961
21089
|
type: boolean
|
|
21090
|
+
namespace:
|
|
21091
|
+
type: string
|
|
21092
|
+
FacetNamespaceListResponse:
|
|
21093
|
+
type: object
|
|
21094
|
+
properties:
|
|
21095
|
+
namespaces:
|
|
21096
|
+
type: array
|
|
21097
|
+
items:
|
|
21098
|
+
type: string
|
|
21099
|
+
required:
|
|
21100
|
+
- namespaces
|
|
20962
21101
|
FacetGetParams:
|
|
20963
21102
|
type: object
|
|
20964
21103
|
properties:
|