@proveanything/smartlinks 1.14.17 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/api/collection.d.ts +57 -1
- package/dist/api/collection.js +78 -0
- package/dist/api/products.d.ts +20 -1
- package/dist/api/products.js +22 -2
- package/dist/docs/API_SUMMARY.md +40 -2
- package/dist/http.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/openapi.yaml +145 -33
- package/dist/types/collection.d.ts +19 -0
- package/docs/API_SUMMARY.md +40 -2
- package/openapi.yaml +145 -33
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -123,7 +123,8 @@ import { products } from '@proveanything/smartlinks'
|
|
|
123
123
|
|
|
124
124
|
await products.get(collectionId, productId, false)
|
|
125
125
|
await products.list(collectionId, false)
|
|
126
|
-
await products.query(collectionId, { query: { search: 'cabernet' } })
|
|
126
|
+
await products.query(collectionId, { query: { search: 'cabernet' } }) // public
|
|
127
|
+
await products.query(collectionId, { query: { search: 'cabernet' } }, true) // admin
|
|
127
128
|
```
|
|
128
129
|
|
|
129
130
|
Quick mapping:
|
package/dist/api/collection.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CollectionResponse, CollectionCreateRequest, CollectionUpdateRequest, AppsConfigResponse } from "../types/collection";
|
|
1
|
+
import { CollectionResponse, CollectionCreateRequest, CollectionUpdateRequest, AppsConfigResponse, DomainTarget, HubAvailabilityResponse } from "../types/collection";
|
|
2
2
|
export declare namespace collection {
|
|
3
3
|
/**
|
|
4
4
|
* Retrieves a single Collection by its ID.
|
|
@@ -21,6 +21,62 @@ export declare namespace collection {
|
|
|
21
21
|
* @returns Promise resolving to a CollectionResponse object
|
|
22
22
|
*/
|
|
23
23
|
function getShortId(shortId: string): Promise<CollectionResponse>;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the collection for the current Hub domain (public endpoint).
|
|
26
|
+
*
|
|
27
|
+
* The server derives the requesting domain from the request headers
|
|
28
|
+
* (`X-Source-Domain` / `X-Forwarded-Host` / `Host`), so no identifier is
|
|
29
|
+
* passed — this is the call a Hub frontend makes on load to find out which
|
|
30
|
+
* collection it is serving, whether it's reached via `{brand}.mysmartlinks.app`
|
|
31
|
+
* or a bring-your-own custom domain (e.g. `hub.acme.com`).
|
|
32
|
+
*
|
|
33
|
+
* @returns Promise resolving to the CollectionResponse mapped to the domain
|
|
34
|
+
* @throws ErrorResponse (404) if no collection is mapped to the domain
|
|
35
|
+
*/
|
|
36
|
+
function getByHub(): Promise<CollectionResponse>;
|
|
37
|
+
/**
|
|
38
|
+
* Check whether a Hub subdomain name is available to claim (admin only).
|
|
39
|
+
* @param collectionId – Identifier of the collection making the request
|
|
40
|
+
* @param name – Proposed subdomain prefix (lowercase letters, numbers, hyphens; max 63 chars)
|
|
41
|
+
* @returns Promise resolving to { available, domain }
|
|
42
|
+
* @throws ErrorResponse (400) if the name fails validation or is reserved
|
|
43
|
+
*/
|
|
44
|
+
function checkHubAvailability(collectionId: string, name: string): Promise<HubAvailabilityResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* Claim or rename the Hub subdomain for a collection (admin only).
|
|
47
|
+
*
|
|
48
|
+
* Maps `{hubName}.mysmartlinks.app` to the collection. If the collection
|
|
49
|
+
* already had a different hub name, the previous subdomain is released
|
|
50
|
+
* automatically.
|
|
51
|
+
*
|
|
52
|
+
* @param collectionId – Identifier of the collection
|
|
53
|
+
* @param hubName – The subdomain prefix to claim (e.g. "acme")
|
|
54
|
+
* @returns Promise resolving to the updated CollectionResponse (with hubName set)
|
|
55
|
+
* @throws ErrorResponse (400) on invalid/reserved name, (409) if already taken by another collection
|
|
56
|
+
*/
|
|
57
|
+
function claimHub(collectionId: string, hubName: string): Promise<CollectionResponse>;
|
|
58
|
+
/**
|
|
59
|
+
* Register a custom domain for a collection and provision its managed
|
|
60
|
+
* certificate (admin only).
|
|
61
|
+
*
|
|
62
|
+
* @param collectionId – Identifier of the collection
|
|
63
|
+
* @param domain – The fully-qualified domain to register (e.g. "hub.acme.com")
|
|
64
|
+
* @param target – Which load balancer / certificate map to use. Defaults to
|
|
65
|
+
* `"smartlinks"` (the id.smartlinks.app load balancer). Pass `"hub"` to
|
|
66
|
+
* register a bring-your-own Hub domain.
|
|
67
|
+
* @returns Promise resolving when registration has been initiated
|
|
68
|
+
* @throws ErrorResponse if the request fails
|
|
69
|
+
*/
|
|
70
|
+
function registerDomain(collectionId: string, domain: string, target?: DomainTarget): Promise<any>;
|
|
71
|
+
/**
|
|
72
|
+
* Get the managed-certificate status for a collection's custom domain (admin only).
|
|
73
|
+
* @param collectionId – Identifier of the collection
|
|
74
|
+
* @param target – Which domain to check: `"smartlinks"` (default, uses `redirectUrl`)
|
|
75
|
+
* or `"hub"` (uses `hubCustomDomain`)
|
|
76
|
+
* @returns Promise resolving to the certificate details
|
|
77
|
+
* @throws ErrorResponse (404) if the relevant domain is not set
|
|
78
|
+
*/
|
|
79
|
+
function getDomainStatus(collectionId: string, target?: DomainTarget): Promise<any>;
|
|
24
80
|
/**
|
|
25
81
|
* Retrieve a specific settings group for a collection.
|
|
26
82
|
* Public reads return the public view of the settings group. If the stored payload contains
|
package/dist/api/collection.js
CHANGED
|
@@ -37,6 +37,84 @@ export var collection;
|
|
|
37
37
|
return request(path);
|
|
38
38
|
}
|
|
39
39
|
collection.getShortId = getShortId;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the collection for the current Hub domain (public endpoint).
|
|
42
|
+
*
|
|
43
|
+
* The server derives the requesting domain from the request headers
|
|
44
|
+
* (`X-Source-Domain` / `X-Forwarded-Host` / `Host`), so no identifier is
|
|
45
|
+
* passed — this is the call a Hub frontend makes on load to find out which
|
|
46
|
+
* collection it is serving, whether it's reached via `{brand}.mysmartlinks.app`
|
|
47
|
+
* or a bring-your-own custom domain (e.g. `hub.acme.com`).
|
|
48
|
+
*
|
|
49
|
+
* @returns Promise resolving to the CollectionResponse mapped to the domain
|
|
50
|
+
* @throws ErrorResponse (404) if no collection is mapped to the domain
|
|
51
|
+
*/
|
|
52
|
+
async function getByHub() {
|
|
53
|
+
const path = `/public/collection/getByHub`;
|
|
54
|
+
return request(path);
|
|
55
|
+
}
|
|
56
|
+
collection.getByHub = getByHub;
|
|
57
|
+
/**
|
|
58
|
+
* Check whether a Hub subdomain name is available to claim (admin only).
|
|
59
|
+
* @param collectionId – Identifier of the collection making the request
|
|
60
|
+
* @param name – Proposed subdomain prefix (lowercase letters, numbers, hyphens; max 63 chars)
|
|
61
|
+
* @returns Promise resolving to { available, domain }
|
|
62
|
+
* @throws ErrorResponse (400) if the name fails validation or is reserved
|
|
63
|
+
*/
|
|
64
|
+
async function checkHubAvailability(collectionId, name) {
|
|
65
|
+
const queryParams = new URLSearchParams({ name });
|
|
66
|
+
const path = `/admin/collection/${encodeURIComponent(collectionId)}/hub/available?${queryParams}`;
|
|
67
|
+
return request(path);
|
|
68
|
+
}
|
|
69
|
+
collection.checkHubAvailability = checkHubAvailability;
|
|
70
|
+
/**
|
|
71
|
+
* Claim or rename the Hub subdomain for a collection (admin only).
|
|
72
|
+
*
|
|
73
|
+
* Maps `{hubName}.mysmartlinks.app` to the collection. If the collection
|
|
74
|
+
* already had a different hub name, the previous subdomain is released
|
|
75
|
+
* automatically.
|
|
76
|
+
*
|
|
77
|
+
* @param collectionId – Identifier of the collection
|
|
78
|
+
* @param hubName – The subdomain prefix to claim (e.g. "acme")
|
|
79
|
+
* @returns Promise resolving to the updated CollectionResponse (with hubName set)
|
|
80
|
+
* @throws ErrorResponse (400) on invalid/reserved name, (409) if already taken by another collection
|
|
81
|
+
*/
|
|
82
|
+
async function claimHub(collectionId, hubName) {
|
|
83
|
+
const path = `/admin/collection/${encodeURIComponent(collectionId)}/hub`;
|
|
84
|
+
return post(path, { hubName });
|
|
85
|
+
}
|
|
86
|
+
collection.claimHub = claimHub;
|
|
87
|
+
/**
|
|
88
|
+
* Register a custom domain for a collection and provision its managed
|
|
89
|
+
* certificate (admin only).
|
|
90
|
+
*
|
|
91
|
+
* @param collectionId – Identifier of the collection
|
|
92
|
+
* @param domain – The fully-qualified domain to register (e.g. "hub.acme.com")
|
|
93
|
+
* @param target – Which load balancer / certificate map to use. Defaults to
|
|
94
|
+
* `"smartlinks"` (the id.smartlinks.app load balancer). Pass `"hub"` to
|
|
95
|
+
* register a bring-your-own Hub domain.
|
|
96
|
+
* @returns Promise resolving when registration has been initiated
|
|
97
|
+
* @throws ErrorResponse if the request fails
|
|
98
|
+
*/
|
|
99
|
+
async function registerDomain(collectionId, domain, target = "smartlinks") {
|
|
100
|
+
const path = `/admin/collection/${encodeURIComponent(collectionId)}/domain`;
|
|
101
|
+
return post(path, { domain, target });
|
|
102
|
+
}
|
|
103
|
+
collection.registerDomain = registerDomain;
|
|
104
|
+
/**
|
|
105
|
+
* Get the managed-certificate status for a collection's custom domain (admin only).
|
|
106
|
+
* @param collectionId – Identifier of the collection
|
|
107
|
+
* @param target – Which domain to check: `"smartlinks"` (default, uses `redirectUrl`)
|
|
108
|
+
* or `"hub"` (uses `hubCustomDomain`)
|
|
109
|
+
* @returns Promise resolving to the certificate details
|
|
110
|
+
* @throws ErrorResponse (404) if the relevant domain is not set
|
|
111
|
+
*/
|
|
112
|
+
async function getDomainStatus(collectionId, target = "smartlinks") {
|
|
113
|
+
const queryParams = new URLSearchParams({ target });
|
|
114
|
+
const path = `/admin/collection/${encodeURIComponent(collectionId)}/domain?${queryParams}`;
|
|
115
|
+
return request(path);
|
|
116
|
+
}
|
|
117
|
+
collection.getDomainStatus = getDomainStatus;
|
|
40
118
|
/**
|
|
41
119
|
* Retrieve a specific settings group for a collection.
|
|
42
120
|
* Public reads return the public view of the settings group. If the stored payload contains
|
package/dist/api/products.d.ts
CHANGED
|
@@ -5,7 +5,26 @@ export declare namespace products {
|
|
|
5
5
|
function create(collectionId: string, data: ProductCreateRequest): Promise<ProductResponse>;
|
|
6
6
|
function update(collectionId: string, productId: string, data: ProductUpdateRequest): Promise<ProductResponse>;
|
|
7
7
|
function remove(collectionId: string, productId: string): Promise<void>;
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Query products in a collection with filtering, sorting, and pagination.
|
|
10
|
+
*
|
|
11
|
+
* @param collectionId - Identifier of the parent collection
|
|
12
|
+
* @param body - Query parameters with filters, sorting, and pagination
|
|
13
|
+
* @param admin - When `true`, targets the `/admin` endpoint (requires an
|
|
14
|
+
* authenticated admin context). Defaults to `false`, which targets the
|
|
15
|
+
* `/public` endpoint — consistent with `get`, `list`, and `listAssets`.
|
|
16
|
+
* @returns Promise resolving to a ProductQueryResponse
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Public query (default)
|
|
21
|
+
* await products.query(collectionId, { query: { search: 'cabernet' } })
|
|
22
|
+
*
|
|
23
|
+
* // Admin query (authenticated)
|
|
24
|
+
* await products.query(collectionId, { query: { search: 'cabernet' } }, true)
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function query(collectionId: string, body: ProductQueryRequest, admin?: boolean): Promise<ProductQueryResponse>;
|
|
9
28
|
function clone(collectionId: string, productId: string, body?: Record<string, JsonValue>): Promise<ProductResponse>;
|
|
10
29
|
function listAssets(collectionId: string, productId: string, admin?: boolean): Promise<unknown>;
|
|
11
30
|
function createClaimWindow(collectionId: string, productId: string, body: Record<string, JsonValue>): Promise<unknown>;
|
package/dist/api/products.js
CHANGED
|
@@ -28,8 +28,28 @@ export var products;
|
|
|
28
28
|
return del(path);
|
|
29
29
|
}
|
|
30
30
|
products.remove = remove;
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Query products in a collection with filtering, sorting, and pagination.
|
|
33
|
+
*
|
|
34
|
+
* @param collectionId - Identifier of the parent collection
|
|
35
|
+
* @param body - Query parameters with filters, sorting, and pagination
|
|
36
|
+
* @param admin - When `true`, targets the `/admin` endpoint (requires an
|
|
37
|
+
* authenticated admin context). Defaults to `false`, which targets the
|
|
38
|
+
* `/public` endpoint — consistent with `get`, `list`, and `listAssets`.
|
|
39
|
+
* @returns Promise resolving to a ProductQueryResponse
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Public query (default)
|
|
44
|
+
* await products.query(collectionId, { query: { search: 'cabernet' } })
|
|
45
|
+
*
|
|
46
|
+
* // Admin query (authenticated)
|
|
47
|
+
* await products.query(collectionId, { query: { search: 'cabernet' } }, true)
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
async function query(collectionId, body, admin) {
|
|
51
|
+
const base = admin ? '/admin' : '/public';
|
|
52
|
+
const path = `${base}/collection/${encodeURIComponent(collectionId)}/products/query`;
|
|
33
53
|
return post(path, body);
|
|
34
54
|
}
|
|
35
55
|
products.query = query;
|
package/dist/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.15.1 | Generated: 2026-06-13T08:46:42.914Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -3606,6 +3606,8 @@ interface Collection {
|
|
|
3606
3606
|
} // User roles mapping with user IDs as keys and role names as values
|
|
3607
3607
|
groupTags?: string[] // Array of group tag names
|
|
3608
3608
|
redirectUrl?: string // Whether the collection has a custom domain
|
|
3609
|
+
hubName?: string
|
|
3610
|
+
hubCustomDomain?: string
|
|
3609
3611
|
shortId: string, // The shortId of this collection
|
|
3610
3612
|
dark?: boolean // if dark mode is enabled for this collection
|
|
3611
3613
|
primaryColor?: string
|
|
@@ -3618,6 +3620,14 @@ interface Collection {
|
|
|
3618
3620
|
}
|
|
3619
3621
|
```
|
|
3620
3622
|
|
|
3623
|
+
**HubAvailabilityResponse** (interface)
|
|
3624
|
+
```typescript
|
|
3625
|
+
interface HubAvailabilityResponse {
|
|
3626
|
+
available: boolean
|
|
3627
|
+
domain: string
|
|
3628
|
+
}
|
|
3629
|
+
```
|
|
3630
|
+
|
|
3621
3631
|
**AppConfig** (interface)
|
|
3622
3632
|
```typescript
|
|
3623
3633
|
interface AppConfig {
|
|
@@ -3657,6 +3667,8 @@ interface AppsConfigResponse {
|
|
|
3657
3667
|
|
|
3658
3668
|
**CollectionUpdateRequest** = `Partial<Omit<Collection, 'id' | 'shortId'>>`
|
|
3659
3669
|
|
|
3670
|
+
**DomainTarget** = `"smartlinks" | "hub"`
|
|
3671
|
+
|
|
3660
3672
|
### common
|
|
3661
3673
|
|
|
3662
3674
|
**IdField** = `'userId' | 'contactId'`
|
|
@@ -8604,6 +8616,21 @@ Retrieves all Collections.
|
|
|
8604
8616
|
**getShortId**(shortId: string) → `Promise<CollectionResponse>`
|
|
8605
8617
|
Retrieve a collection by its shortId (public endpoint).
|
|
8606
8618
|
|
|
8619
|
+
**getByHub**() → `Promise<CollectionResponse>`
|
|
8620
|
+
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
|
+
|
|
8622
|
+
**checkHubAvailability**(collectionId: string, name: string) → `Promise<HubAvailabilityResponse>`
|
|
8623
|
+
Check whether a Hub subdomain name is available to claim (admin only).
|
|
8624
|
+
|
|
8625
|
+
**claimHub**(collectionId: string, hubName: string) → `Promise<CollectionResponse>`
|
|
8626
|
+
Claim or rename the Hub subdomain for a collection (admin only). Maps `{hubName}.mysmartlinks.app` to the collection. If the collection already had a different hub name, the previous subdomain is released automatically.
|
|
8627
|
+
|
|
8628
|
+
**registerDomain**(collectionId: string, domain: string, target: DomainTarget = "smartlinks") → `Promise<any>`
|
|
8629
|
+
Register a custom domain for a collection and provision its managed certificate (admin only). `"smartlinks"` (the id.smartlinks.app load balancer). Pass `"hub"` to register a bring-your-own Hub domain.
|
|
8630
|
+
|
|
8631
|
+
**getDomainStatus**(collectionId: string, target: DomainTarget = "smartlinks") → `Promise<any>`
|
|
8632
|
+
Get the managed-certificate status for a collection's custom domain (admin only). or `"hub"` (uses `hubCustomDomain`)
|
|
8633
|
+
|
|
8607
8634
|
**getSettings**(collectionId: string, settingGroup: string, admin?: boolean) → `Promise<any>`
|
|
8608
8635
|
Retrieve a specific settings group for a collection. Public reads return the public view of the settings group. If the stored payload contains a top-level `admin` object, that block is omitted from public responses and included when `admin === true`.
|
|
8609
8636
|
|
|
@@ -9399,44 +9426,55 @@ Look up a serial number by code for a product (admin only).
|
|
|
9399
9426
|
productId: string) → `Promise<void>`
|
|
9400
9427
|
|
|
9401
9428
|
**query**(collectionId: string,
|
|
9402
|
-
body: ProductQueryRequest
|
|
9429
|
+
body: ProductQueryRequest,
|
|
9430
|
+
admin?: boolean) → `Promise<ProductQueryResponse>`
|
|
9431
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9403
9432
|
|
|
9404
9433
|
**clone**(collectionId: string,
|
|
9405
9434
|
productId: string,
|
|
9406
9435
|
body: Record<string, JsonValue> = {}) → `Promise<ProductResponse>`
|
|
9436
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9407
9437
|
|
|
9408
9438
|
**listAssets**(collectionId: string,
|
|
9409
9439
|
productId: string,
|
|
9410
9440
|
admin?: boolean) → `Promise<unknown>`
|
|
9441
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9411
9442
|
|
|
9412
9443
|
**createClaimWindow**(collectionId: string,
|
|
9413
9444
|
productId: string,
|
|
9414
9445
|
body: Record<string, JsonValue>) → `Promise<unknown>`
|
|
9446
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9415
9447
|
|
|
9416
9448
|
**updateClaimWindow**(collectionId: string,
|
|
9417
9449
|
productId: string,
|
|
9418
9450
|
claimId: string,
|
|
9419
9451
|
body: Record<string, JsonValue>) → `Promise<unknown>`
|
|
9452
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9420
9453
|
|
|
9421
9454
|
**refresh**(collectionId: string,
|
|
9422
9455
|
productId: string) → `Promise<ProductResponse>`
|
|
9456
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9423
9457
|
|
|
9424
9458
|
**getSN**(collectionId: string,
|
|
9425
9459
|
productId: string,
|
|
9426
9460
|
startIndex: number = 0,
|
|
9427
9461
|
count: number = 10) → `Promise<unknown>`
|
|
9462
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9428
9463
|
|
|
9429
9464
|
**lookupSN**(collectionId: string,
|
|
9430
9465
|
productId: string,
|
|
9431
9466
|
codeId: string) → `Promise<unknown>`
|
|
9467
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9432
9468
|
|
|
9433
9469
|
**publicLookupClaim**(collectionId: string,
|
|
9434
9470
|
productId: string,
|
|
9435
9471
|
claimId: string) → `Promise<unknown>`
|
|
9472
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9436
9473
|
|
|
9437
9474
|
**publicCreateClaim**(collectionId: string,
|
|
9438
9475
|
productId: string,
|
|
9439
9476
|
body: ProductClaimCreateRequestBody) → `Promise<unknown>`
|
|
9477
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9440
9478
|
|
|
9441
9479
|
### proof
|
|
9442
9480
|
|
package/dist/http.js
CHANGED
|
@@ -91,7 +91,9 @@ const CACHE_TTL_RULES = [
|
|
|
91
91
|
// Sub-resources that change frequently — short TTLs, listed first
|
|
92
92
|
{ pattern: /\/proof\/[^/]*(\?.*)?$/i, ttlMs: 30000 },
|
|
93
93
|
{ pattern: /\/attestation\/[^/]*(\?.*)?$/i, ttlMs: 2 * 60000 },
|
|
94
|
-
// Slow-changing top-level resources — long TTLs, matched only when path ends at the ID
|
|
94
|
+
// Slow-changing top-level resources — long TTLs, matched only when path ends at the ID.
|
|
95
|
+
// getByHub maps a stable Hub domain → collection and matches the /collection rule below,
|
|
96
|
+
// so it inherits the same 1h caching as a collection detail.
|
|
95
97
|
{ pattern: /\/products?\/[^/]*(\?.*)?$/i, ttlMs: 60 * 60000 },
|
|
96
98
|
{ pattern: /\/variant\/[^/]*(\?.*)?$/i, ttlMs: 60 * 60000 },
|
|
97
99
|
{ pattern: /\/collection\/[^/]*(\?.*)?$/i, ttlMs: 60 * 60000 }, // 1 hour
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ 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
18
|
export type { FacetBucket, FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetQueryRequest, FacetQueryResponse, FacetValue, FacetValueDefinition, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams, } from "./types/facets";
|
|
19
|
-
export type { Collection, CollectionResponse, CollectionCreateRequest, CollectionUpdateRequest, } from "./types/collection";
|
|
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";
|
|
22
22
|
export type { ReverseTagLookupParams, ReverseTagLookupResponse, } from "./types/tags";
|
package/dist/openapi.yaml
CHANGED
|
@@ -3337,6 +3337,63 @@ paths:
|
|
|
3337
3337
|
description: Unauthorized
|
|
3338
3338
|
404:
|
|
3339
3339
|
description: Not found
|
|
3340
|
+
/admin/collection/{collectionId}/domain:
|
|
3341
|
+
get:
|
|
3342
|
+
tags:
|
|
3343
|
+
- collection
|
|
3344
|
+
summary: "Get the managed-certificate status for a collection's custom domain (admin only)."
|
|
3345
|
+
operationId: collection_getDomainStatus
|
|
3346
|
+
security:
|
|
3347
|
+
- bearerAuth: []
|
|
3348
|
+
parameters:
|
|
3349
|
+
- name: collectionId
|
|
3350
|
+
in: path
|
|
3351
|
+
required: true
|
|
3352
|
+
schema:
|
|
3353
|
+
type: string
|
|
3354
|
+
responses:
|
|
3355
|
+
200:
|
|
3356
|
+
description: Success
|
|
3357
|
+
content:
|
|
3358
|
+
application/json:
|
|
3359
|
+
schema: {}
|
|
3360
|
+
400:
|
|
3361
|
+
description: Bad request
|
|
3362
|
+
401:
|
|
3363
|
+
description: Unauthorized
|
|
3364
|
+
404:
|
|
3365
|
+
description: Not found
|
|
3366
|
+
post:
|
|
3367
|
+
tags:
|
|
3368
|
+
- collection
|
|
3369
|
+
summary: Register a custom domain for a collection and provision its managed certificate (admin only).
|
|
3370
|
+
operationId: collection_registerDomain
|
|
3371
|
+
security:
|
|
3372
|
+
- bearerAuth: []
|
|
3373
|
+
parameters:
|
|
3374
|
+
- name: collectionId
|
|
3375
|
+
in: path
|
|
3376
|
+
required: true
|
|
3377
|
+
schema:
|
|
3378
|
+
type: string
|
|
3379
|
+
responses:
|
|
3380
|
+
200:
|
|
3381
|
+
description: Success
|
|
3382
|
+
content:
|
|
3383
|
+
application/json:
|
|
3384
|
+
schema: {}
|
|
3385
|
+
400:
|
|
3386
|
+
description: Bad request
|
|
3387
|
+
401:
|
|
3388
|
+
description: Unauthorized
|
|
3389
|
+
404:
|
|
3390
|
+
description: Not found
|
|
3391
|
+
requestBody:
|
|
3392
|
+
required: true
|
|
3393
|
+
content:
|
|
3394
|
+
application/json:
|
|
3395
|
+
schema:
|
|
3396
|
+
$ref: "#/components/schemas/DomainTarget"
|
|
3340
3397
|
/admin/collection/{collectionId}/facets:
|
|
3341
3398
|
get:
|
|
3342
3399
|
tags:
|
|
@@ -3871,6 +3928,60 @@ paths:
|
|
|
3871
3928
|
description: Unauthorized
|
|
3872
3929
|
404:
|
|
3873
3930
|
description: Not found
|
|
3931
|
+
/admin/collection/{collectionId}/hub:
|
|
3932
|
+
post:
|
|
3933
|
+
tags:
|
|
3934
|
+
- collection
|
|
3935
|
+
summary: Claim or rename the Hub subdomain for a collection (admin only).
|
|
3936
|
+
operationId: collection_claimHub
|
|
3937
|
+
security:
|
|
3938
|
+
- bearerAuth: []
|
|
3939
|
+
parameters:
|
|
3940
|
+
- name: collectionId
|
|
3941
|
+
in: path
|
|
3942
|
+
required: true
|
|
3943
|
+
schema:
|
|
3944
|
+
type: string
|
|
3945
|
+
responses:
|
|
3946
|
+
200:
|
|
3947
|
+
description: Success
|
|
3948
|
+
content:
|
|
3949
|
+
application/json:
|
|
3950
|
+
schema:
|
|
3951
|
+
$ref: "#/components/schemas/CollectionResponse"
|
|
3952
|
+
400:
|
|
3953
|
+
description: Bad request
|
|
3954
|
+
401:
|
|
3955
|
+
description: Unauthorized
|
|
3956
|
+
404:
|
|
3957
|
+
description: Not found
|
|
3958
|
+
/admin/collection/{collectionId}/hub/available:
|
|
3959
|
+
get:
|
|
3960
|
+
tags:
|
|
3961
|
+
- collection
|
|
3962
|
+
summary: Check whether a Hub subdomain name is available to claim (admin only).
|
|
3963
|
+
operationId: collection_checkHubAvailability
|
|
3964
|
+
security:
|
|
3965
|
+
- bearerAuth: []
|
|
3966
|
+
parameters:
|
|
3967
|
+
- name: collectionId
|
|
3968
|
+
in: path
|
|
3969
|
+
required: true
|
|
3970
|
+
schema:
|
|
3971
|
+
type: string
|
|
3972
|
+
responses:
|
|
3973
|
+
200:
|
|
3974
|
+
description: Success
|
|
3975
|
+
content:
|
|
3976
|
+
application/json:
|
|
3977
|
+
schema:
|
|
3978
|
+
$ref: "#/components/schemas/HubAvailabilityResponse"
|
|
3979
|
+
400:
|
|
3980
|
+
description: Bad request
|
|
3981
|
+
401:
|
|
3982
|
+
description: Unauthorized
|
|
3983
|
+
404:
|
|
3984
|
+
description: Not found
|
|
3874
3985
|
/admin/collection/{collectionId}/interactions:
|
|
3875
3986
|
get:
|
|
3876
3987
|
tags:
|
|
@@ -6639,39 +6750,6 @@ paths:
|
|
|
6639
6750
|
application/json:
|
|
6640
6751
|
schema:
|
|
6641
6752
|
$ref: "#/components/schemas/ProductCreateRequest"
|
|
6642
|
-
/admin/collection/{collectionId}/products/query:
|
|
6643
|
-
post:
|
|
6644
|
-
tags:
|
|
6645
|
-
- products
|
|
6646
|
-
summary: products.query
|
|
6647
|
-
operationId: products_query
|
|
6648
|
-
security:
|
|
6649
|
-
- bearerAuth: []
|
|
6650
|
-
parameters:
|
|
6651
|
-
- name: collectionId
|
|
6652
|
-
in: path
|
|
6653
|
-
required: true
|
|
6654
|
-
schema:
|
|
6655
|
-
type: string
|
|
6656
|
-
responses:
|
|
6657
|
-
200:
|
|
6658
|
-
description: Success
|
|
6659
|
-
content:
|
|
6660
|
-
application/json:
|
|
6661
|
-
schema:
|
|
6662
|
-
$ref: "#/components/schemas/ProductQueryResponse"
|
|
6663
|
-
400:
|
|
6664
|
-
description: Bad request
|
|
6665
|
-
401:
|
|
6666
|
-
description: Unauthorized
|
|
6667
|
-
404:
|
|
6668
|
-
description: Not found
|
|
6669
|
-
requestBody:
|
|
6670
|
-
required: true
|
|
6671
|
-
content:
|
|
6672
|
-
application/json:
|
|
6673
|
-
schema:
|
|
6674
|
-
$ref: "#/components/schemas/ProductQueryRequest"
|
|
6675
6753
|
/admin/collection/{collectionId}/products/{productId}:
|
|
6676
6754
|
put:
|
|
6677
6755
|
tags:
|
|
@@ -9238,6 +9316,26 @@ paths:
|
|
|
9238
9316
|
application/json:
|
|
9239
9317
|
schema:
|
|
9240
9318
|
$ref: "#/components/schemas/RequestUploadTokenOptions"
|
|
9319
|
+
/public/collection/getByHub:
|
|
9320
|
+
get:
|
|
9321
|
+
tags:
|
|
9322
|
+
- collection
|
|
9323
|
+
summary: Resolve the collection for the current Hub domain (public endpoint).
|
|
9324
|
+
operationId: collection_getByHub
|
|
9325
|
+
security: []
|
|
9326
|
+
responses:
|
|
9327
|
+
200:
|
|
9328
|
+
description: Success
|
|
9329
|
+
content:
|
|
9330
|
+
application/json:
|
|
9331
|
+
schema:
|
|
9332
|
+
$ref: "#/components/schemas/CollectionResponse"
|
|
9333
|
+
400:
|
|
9334
|
+
description: Bad request
|
|
9335
|
+
401:
|
|
9336
|
+
description: Unauthorized
|
|
9337
|
+
404:
|
|
9338
|
+
description: Not found
|
|
9241
9339
|
/public/collection/getShortId/{shortId}:
|
|
9242
9340
|
get:
|
|
9243
9341
|
tags:
|
|
@@ -18941,6 +19039,10 @@ components:
|
|
|
18941
19039
|
type: string
|
|
18942
19040
|
redirectUrl:
|
|
18943
19041
|
type: string
|
|
19042
|
+
hubName:
|
|
19043
|
+
type: string
|
|
19044
|
+
hubCustomDomain:
|
|
19045
|
+
type: string
|
|
18944
19046
|
shortId:
|
|
18945
19047
|
type: string
|
|
18946
19048
|
dark:
|
|
@@ -18975,6 +19077,16 @@ components:
|
|
|
18975
19077
|
- variants
|
|
18976
19078
|
- batches
|
|
18977
19079
|
- defaultAuthKitId
|
|
19080
|
+
HubAvailabilityResponse:
|
|
19081
|
+
type: object
|
|
19082
|
+
properties:
|
|
19083
|
+
available:
|
|
19084
|
+
type: boolean
|
|
19085
|
+
domain:
|
|
19086
|
+
type: string
|
|
19087
|
+
required:
|
|
19088
|
+
- available
|
|
19089
|
+
- domain
|
|
18978
19090
|
AppConfig:
|
|
18979
19091
|
type: object
|
|
18980
19092
|
properties:
|
|
@@ -41,6 +41,10 @@ export interface Collection {
|
|
|
41
41
|
groupTags?: string[];
|
|
42
42
|
/** Whether the collection has a custom domain */
|
|
43
43
|
redirectUrl?: string;
|
|
44
|
+
/** The claimed Hub subdomain prefix (e.g. "acme" → acme.mysmartlinks.app) */
|
|
45
|
+
hubName?: string;
|
|
46
|
+
/** The collection's bring-your-own custom Hub domain (e.g. "hub.acme.com") */
|
|
47
|
+
hubCustomDomain?: string;
|
|
44
48
|
/** The shortId of this collection */
|
|
45
49
|
shortId: string;
|
|
46
50
|
/** if dark mode is enabled for this collection */
|
|
@@ -59,6 +63,21 @@ export interface Collection {
|
|
|
59
63
|
export type CollectionResponse = Collection;
|
|
60
64
|
export type CollectionCreateRequest = Omit<Collection, 'id' | 'shortId'>;
|
|
61
65
|
export type CollectionUpdateRequest = Partial<Omit<Collection, 'id' | 'shortId'>>;
|
|
66
|
+
/**
|
|
67
|
+
* Which load balancer / certificate map a custom domain registration targets.
|
|
68
|
+
* - `"smartlinks"` (default): the id.smartlinks.app load balancer (legacy behaviour)
|
|
69
|
+
* - `"hub"`: the SmartLinks Hub load balancer
|
|
70
|
+
*/
|
|
71
|
+
export type DomainTarget = "smartlinks" | "hub";
|
|
72
|
+
/**
|
|
73
|
+
* Response from checking whether a Hub subdomain name is available.
|
|
74
|
+
*/
|
|
75
|
+
export interface HubAvailabilityResponse {
|
|
76
|
+
/** Whether the name can be claimed by this collection */
|
|
77
|
+
available: boolean;
|
|
78
|
+
/** The full domain that was checked (e.g. "acme.mysmartlinks.app") */
|
|
79
|
+
domain: string;
|
|
80
|
+
}
|
|
62
81
|
/**
|
|
63
82
|
* Configuration for an app module within a collection.
|
|
64
83
|
*/
|
package/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.15.1 | Generated: 2026-06-13T08:46:42.914Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -3606,6 +3606,8 @@ interface Collection {
|
|
|
3606
3606
|
} // User roles mapping with user IDs as keys and role names as values
|
|
3607
3607
|
groupTags?: string[] // Array of group tag names
|
|
3608
3608
|
redirectUrl?: string // Whether the collection has a custom domain
|
|
3609
|
+
hubName?: string
|
|
3610
|
+
hubCustomDomain?: string
|
|
3609
3611
|
shortId: string, // The shortId of this collection
|
|
3610
3612
|
dark?: boolean // if dark mode is enabled for this collection
|
|
3611
3613
|
primaryColor?: string
|
|
@@ -3618,6 +3620,14 @@ interface Collection {
|
|
|
3618
3620
|
}
|
|
3619
3621
|
```
|
|
3620
3622
|
|
|
3623
|
+
**HubAvailabilityResponse** (interface)
|
|
3624
|
+
```typescript
|
|
3625
|
+
interface HubAvailabilityResponse {
|
|
3626
|
+
available: boolean
|
|
3627
|
+
domain: string
|
|
3628
|
+
}
|
|
3629
|
+
```
|
|
3630
|
+
|
|
3621
3631
|
**AppConfig** (interface)
|
|
3622
3632
|
```typescript
|
|
3623
3633
|
interface AppConfig {
|
|
@@ -3657,6 +3667,8 @@ interface AppsConfigResponse {
|
|
|
3657
3667
|
|
|
3658
3668
|
**CollectionUpdateRequest** = `Partial<Omit<Collection, 'id' | 'shortId'>>`
|
|
3659
3669
|
|
|
3670
|
+
**DomainTarget** = `"smartlinks" | "hub"`
|
|
3671
|
+
|
|
3660
3672
|
### common
|
|
3661
3673
|
|
|
3662
3674
|
**IdField** = `'userId' | 'contactId'`
|
|
@@ -8604,6 +8616,21 @@ Retrieves all Collections.
|
|
|
8604
8616
|
**getShortId**(shortId: string) → `Promise<CollectionResponse>`
|
|
8605
8617
|
Retrieve a collection by its shortId (public endpoint).
|
|
8606
8618
|
|
|
8619
|
+
**getByHub**() → `Promise<CollectionResponse>`
|
|
8620
|
+
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
|
+
|
|
8622
|
+
**checkHubAvailability**(collectionId: string, name: string) → `Promise<HubAvailabilityResponse>`
|
|
8623
|
+
Check whether a Hub subdomain name is available to claim (admin only).
|
|
8624
|
+
|
|
8625
|
+
**claimHub**(collectionId: string, hubName: string) → `Promise<CollectionResponse>`
|
|
8626
|
+
Claim or rename the Hub subdomain for a collection (admin only). Maps `{hubName}.mysmartlinks.app` to the collection. If the collection already had a different hub name, the previous subdomain is released automatically.
|
|
8627
|
+
|
|
8628
|
+
**registerDomain**(collectionId: string, domain: string, target: DomainTarget = "smartlinks") → `Promise<any>`
|
|
8629
|
+
Register a custom domain for a collection and provision its managed certificate (admin only). `"smartlinks"` (the id.smartlinks.app load balancer). Pass `"hub"` to register a bring-your-own Hub domain.
|
|
8630
|
+
|
|
8631
|
+
**getDomainStatus**(collectionId: string, target: DomainTarget = "smartlinks") → `Promise<any>`
|
|
8632
|
+
Get the managed-certificate status for a collection's custom domain (admin only). or `"hub"` (uses `hubCustomDomain`)
|
|
8633
|
+
|
|
8607
8634
|
**getSettings**(collectionId: string, settingGroup: string, admin?: boolean) → `Promise<any>`
|
|
8608
8635
|
Retrieve a specific settings group for a collection. Public reads return the public view of the settings group. If the stored payload contains a top-level `admin` object, that block is omitted from public responses and included when `admin === true`.
|
|
8609
8636
|
|
|
@@ -9399,44 +9426,55 @@ Look up a serial number by code for a product (admin only).
|
|
|
9399
9426
|
productId: string) → `Promise<void>`
|
|
9400
9427
|
|
|
9401
9428
|
**query**(collectionId: string,
|
|
9402
|
-
body: ProductQueryRequest
|
|
9429
|
+
body: ProductQueryRequest,
|
|
9430
|
+
admin?: boolean) → `Promise<ProductQueryResponse>`
|
|
9431
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9403
9432
|
|
|
9404
9433
|
**clone**(collectionId: string,
|
|
9405
9434
|
productId: string,
|
|
9406
9435
|
body: Record<string, JsonValue> = {}) → `Promise<ProductResponse>`
|
|
9436
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9407
9437
|
|
|
9408
9438
|
**listAssets**(collectionId: string,
|
|
9409
9439
|
productId: string,
|
|
9410
9440
|
admin?: boolean) → `Promise<unknown>`
|
|
9441
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9411
9442
|
|
|
9412
9443
|
**createClaimWindow**(collectionId: string,
|
|
9413
9444
|
productId: string,
|
|
9414
9445
|
body: Record<string, JsonValue>) → `Promise<unknown>`
|
|
9446
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9415
9447
|
|
|
9416
9448
|
**updateClaimWindow**(collectionId: string,
|
|
9417
9449
|
productId: string,
|
|
9418
9450
|
claimId: string,
|
|
9419
9451
|
body: Record<string, JsonValue>) → `Promise<unknown>`
|
|
9452
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9420
9453
|
|
|
9421
9454
|
**refresh**(collectionId: string,
|
|
9422
9455
|
productId: string) → `Promise<ProductResponse>`
|
|
9456
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9423
9457
|
|
|
9424
9458
|
**getSN**(collectionId: string,
|
|
9425
9459
|
productId: string,
|
|
9426
9460
|
startIndex: number = 0,
|
|
9427
9461
|
count: number = 10) → `Promise<unknown>`
|
|
9462
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9428
9463
|
|
|
9429
9464
|
**lookupSN**(collectionId: string,
|
|
9430
9465
|
productId: string,
|
|
9431
9466
|
codeId: string) → `Promise<unknown>`
|
|
9467
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9432
9468
|
|
|
9433
9469
|
**publicLookupClaim**(collectionId: string,
|
|
9434
9470
|
productId: string,
|
|
9435
9471
|
claimId: string) → `Promise<unknown>`
|
|
9472
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9436
9473
|
|
|
9437
9474
|
**publicCreateClaim**(collectionId: string,
|
|
9438
9475
|
productId: string,
|
|
9439
9476
|
body: ProductClaimCreateRequestBody) → `Promise<unknown>`
|
|
9477
|
+
Query products in a collection with filtering, sorting, and pagination. authenticated admin context). Defaults to `false`, which targets the `/public` endpoint — consistent with `get`, `list`, and `listAssets`. ```typescript // Public query (default) await products.query(collectionId, { query: { search: 'cabernet' } }) // Admin query (authenticated) await products.query(collectionId, { query: { search: 'cabernet' } }, true) ```
|
|
9440
9478
|
|
|
9441
9479
|
### proof
|
|
9442
9480
|
|
package/openapi.yaml
CHANGED
|
@@ -3337,6 +3337,63 @@ paths:
|
|
|
3337
3337
|
description: Unauthorized
|
|
3338
3338
|
404:
|
|
3339
3339
|
description: Not found
|
|
3340
|
+
/admin/collection/{collectionId}/domain:
|
|
3341
|
+
get:
|
|
3342
|
+
tags:
|
|
3343
|
+
- collection
|
|
3344
|
+
summary: "Get the managed-certificate status for a collection's custom domain (admin only)."
|
|
3345
|
+
operationId: collection_getDomainStatus
|
|
3346
|
+
security:
|
|
3347
|
+
- bearerAuth: []
|
|
3348
|
+
parameters:
|
|
3349
|
+
- name: collectionId
|
|
3350
|
+
in: path
|
|
3351
|
+
required: true
|
|
3352
|
+
schema:
|
|
3353
|
+
type: string
|
|
3354
|
+
responses:
|
|
3355
|
+
200:
|
|
3356
|
+
description: Success
|
|
3357
|
+
content:
|
|
3358
|
+
application/json:
|
|
3359
|
+
schema: {}
|
|
3360
|
+
400:
|
|
3361
|
+
description: Bad request
|
|
3362
|
+
401:
|
|
3363
|
+
description: Unauthorized
|
|
3364
|
+
404:
|
|
3365
|
+
description: Not found
|
|
3366
|
+
post:
|
|
3367
|
+
tags:
|
|
3368
|
+
- collection
|
|
3369
|
+
summary: Register a custom domain for a collection and provision its managed certificate (admin only).
|
|
3370
|
+
operationId: collection_registerDomain
|
|
3371
|
+
security:
|
|
3372
|
+
- bearerAuth: []
|
|
3373
|
+
parameters:
|
|
3374
|
+
- name: collectionId
|
|
3375
|
+
in: path
|
|
3376
|
+
required: true
|
|
3377
|
+
schema:
|
|
3378
|
+
type: string
|
|
3379
|
+
responses:
|
|
3380
|
+
200:
|
|
3381
|
+
description: Success
|
|
3382
|
+
content:
|
|
3383
|
+
application/json:
|
|
3384
|
+
schema: {}
|
|
3385
|
+
400:
|
|
3386
|
+
description: Bad request
|
|
3387
|
+
401:
|
|
3388
|
+
description: Unauthorized
|
|
3389
|
+
404:
|
|
3390
|
+
description: Not found
|
|
3391
|
+
requestBody:
|
|
3392
|
+
required: true
|
|
3393
|
+
content:
|
|
3394
|
+
application/json:
|
|
3395
|
+
schema:
|
|
3396
|
+
$ref: "#/components/schemas/DomainTarget"
|
|
3340
3397
|
/admin/collection/{collectionId}/facets:
|
|
3341
3398
|
get:
|
|
3342
3399
|
tags:
|
|
@@ -3871,6 +3928,60 @@ paths:
|
|
|
3871
3928
|
description: Unauthorized
|
|
3872
3929
|
404:
|
|
3873
3930
|
description: Not found
|
|
3931
|
+
/admin/collection/{collectionId}/hub:
|
|
3932
|
+
post:
|
|
3933
|
+
tags:
|
|
3934
|
+
- collection
|
|
3935
|
+
summary: Claim or rename the Hub subdomain for a collection (admin only).
|
|
3936
|
+
operationId: collection_claimHub
|
|
3937
|
+
security:
|
|
3938
|
+
- bearerAuth: []
|
|
3939
|
+
parameters:
|
|
3940
|
+
- name: collectionId
|
|
3941
|
+
in: path
|
|
3942
|
+
required: true
|
|
3943
|
+
schema:
|
|
3944
|
+
type: string
|
|
3945
|
+
responses:
|
|
3946
|
+
200:
|
|
3947
|
+
description: Success
|
|
3948
|
+
content:
|
|
3949
|
+
application/json:
|
|
3950
|
+
schema:
|
|
3951
|
+
$ref: "#/components/schemas/CollectionResponse"
|
|
3952
|
+
400:
|
|
3953
|
+
description: Bad request
|
|
3954
|
+
401:
|
|
3955
|
+
description: Unauthorized
|
|
3956
|
+
404:
|
|
3957
|
+
description: Not found
|
|
3958
|
+
/admin/collection/{collectionId}/hub/available:
|
|
3959
|
+
get:
|
|
3960
|
+
tags:
|
|
3961
|
+
- collection
|
|
3962
|
+
summary: Check whether a Hub subdomain name is available to claim (admin only).
|
|
3963
|
+
operationId: collection_checkHubAvailability
|
|
3964
|
+
security:
|
|
3965
|
+
- bearerAuth: []
|
|
3966
|
+
parameters:
|
|
3967
|
+
- name: collectionId
|
|
3968
|
+
in: path
|
|
3969
|
+
required: true
|
|
3970
|
+
schema:
|
|
3971
|
+
type: string
|
|
3972
|
+
responses:
|
|
3973
|
+
200:
|
|
3974
|
+
description: Success
|
|
3975
|
+
content:
|
|
3976
|
+
application/json:
|
|
3977
|
+
schema:
|
|
3978
|
+
$ref: "#/components/schemas/HubAvailabilityResponse"
|
|
3979
|
+
400:
|
|
3980
|
+
description: Bad request
|
|
3981
|
+
401:
|
|
3982
|
+
description: Unauthorized
|
|
3983
|
+
404:
|
|
3984
|
+
description: Not found
|
|
3874
3985
|
/admin/collection/{collectionId}/interactions:
|
|
3875
3986
|
get:
|
|
3876
3987
|
tags:
|
|
@@ -6639,39 +6750,6 @@ paths:
|
|
|
6639
6750
|
application/json:
|
|
6640
6751
|
schema:
|
|
6641
6752
|
$ref: "#/components/schemas/ProductCreateRequest"
|
|
6642
|
-
/admin/collection/{collectionId}/products/query:
|
|
6643
|
-
post:
|
|
6644
|
-
tags:
|
|
6645
|
-
- products
|
|
6646
|
-
summary: products.query
|
|
6647
|
-
operationId: products_query
|
|
6648
|
-
security:
|
|
6649
|
-
- bearerAuth: []
|
|
6650
|
-
parameters:
|
|
6651
|
-
- name: collectionId
|
|
6652
|
-
in: path
|
|
6653
|
-
required: true
|
|
6654
|
-
schema:
|
|
6655
|
-
type: string
|
|
6656
|
-
responses:
|
|
6657
|
-
200:
|
|
6658
|
-
description: Success
|
|
6659
|
-
content:
|
|
6660
|
-
application/json:
|
|
6661
|
-
schema:
|
|
6662
|
-
$ref: "#/components/schemas/ProductQueryResponse"
|
|
6663
|
-
400:
|
|
6664
|
-
description: Bad request
|
|
6665
|
-
401:
|
|
6666
|
-
description: Unauthorized
|
|
6667
|
-
404:
|
|
6668
|
-
description: Not found
|
|
6669
|
-
requestBody:
|
|
6670
|
-
required: true
|
|
6671
|
-
content:
|
|
6672
|
-
application/json:
|
|
6673
|
-
schema:
|
|
6674
|
-
$ref: "#/components/schemas/ProductQueryRequest"
|
|
6675
6753
|
/admin/collection/{collectionId}/products/{productId}:
|
|
6676
6754
|
put:
|
|
6677
6755
|
tags:
|
|
@@ -9238,6 +9316,26 @@ paths:
|
|
|
9238
9316
|
application/json:
|
|
9239
9317
|
schema:
|
|
9240
9318
|
$ref: "#/components/schemas/RequestUploadTokenOptions"
|
|
9319
|
+
/public/collection/getByHub:
|
|
9320
|
+
get:
|
|
9321
|
+
tags:
|
|
9322
|
+
- collection
|
|
9323
|
+
summary: Resolve the collection for the current Hub domain (public endpoint).
|
|
9324
|
+
operationId: collection_getByHub
|
|
9325
|
+
security: []
|
|
9326
|
+
responses:
|
|
9327
|
+
200:
|
|
9328
|
+
description: Success
|
|
9329
|
+
content:
|
|
9330
|
+
application/json:
|
|
9331
|
+
schema:
|
|
9332
|
+
$ref: "#/components/schemas/CollectionResponse"
|
|
9333
|
+
400:
|
|
9334
|
+
description: Bad request
|
|
9335
|
+
401:
|
|
9336
|
+
description: Unauthorized
|
|
9337
|
+
404:
|
|
9338
|
+
description: Not found
|
|
9241
9339
|
/public/collection/getShortId/{shortId}:
|
|
9242
9340
|
get:
|
|
9243
9341
|
tags:
|
|
@@ -18941,6 +19039,10 @@ components:
|
|
|
18941
19039
|
type: string
|
|
18942
19040
|
redirectUrl:
|
|
18943
19041
|
type: string
|
|
19042
|
+
hubName:
|
|
19043
|
+
type: string
|
|
19044
|
+
hubCustomDomain:
|
|
19045
|
+
type: string
|
|
18944
19046
|
shortId:
|
|
18945
19047
|
type: string
|
|
18946
19048
|
dark:
|
|
@@ -18975,6 +19077,16 @@ components:
|
|
|
18975
19077
|
- variants
|
|
18976
19078
|
- batches
|
|
18977
19079
|
- defaultAuthKitId
|
|
19080
|
+
HubAvailabilityResponse:
|
|
19081
|
+
type: object
|
|
19082
|
+
properties:
|
|
19083
|
+
available:
|
|
19084
|
+
type: boolean
|
|
19085
|
+
domain:
|
|
19086
|
+
type: string
|
|
19087
|
+
required:
|
|
19088
|
+
- available
|
|
19089
|
+
- domain
|
|
18978
19090
|
AppConfig:
|
|
18979
19091
|
type: object
|
|
18980
19092
|
properties:
|