@proveanything/smartlinks 1.9.14 → 1.9.16

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.
@@ -0,0 +1,19 @@
1
+ import type { FieldDefinition, ProofTypeDefinition } from "../types/config";
2
+ export declare namespace config {
3
+ /**
4
+ * Returns the full platform field catalog.
5
+ * Fields are used as building blocks for proof type templates — they define
6
+ * the input widgets shown when creating or editing products and proof items.
7
+ *
8
+ * **Endpoint:** `GET /api/v1/public/config/fields`
9
+ */
10
+ function getFields(): Promise<FieldDefinition[]>;
11
+ /**
12
+ * Returns all proof type definitions.
13
+ * Proof types are templates that specify which fields to show, which apps are
14
+ * pre-installed, and how the portal behaves for a given product category.
15
+ *
16
+ * **Endpoint:** `GET /api/v1/public/config/proofTypes`
17
+ */
18
+ function getProofTypes(): Promise<ProofTypeDefinition[]>;
19
+ }
@@ -0,0 +1,27 @@
1
+ // src/api/config.ts
2
+ import { request } from "../http";
3
+ export var config;
4
+ (function (config) {
5
+ /**
6
+ * Returns the full platform field catalog.
7
+ * Fields are used as building blocks for proof type templates — they define
8
+ * the input widgets shown when creating or editing products and proof items.
9
+ *
10
+ * **Endpoint:** `GET /api/v1/public/config/fields`
11
+ */
12
+ async function getFields() {
13
+ return request("/public/config/fields");
14
+ }
15
+ config.getFields = getFields;
16
+ /**
17
+ * Returns all proof type definitions.
18
+ * Proof types are templates that specify which fields to show, which apps are
19
+ * pre-installed, and how the portal behaves for a given product category.
20
+ *
21
+ * **Endpoint:** `GET /api/v1/public/config/proofTypes`
22
+ */
23
+ async function getProofTypes() {
24
+ return request("/public/config/proofTypes");
25
+ }
26
+ config.getProofTypes = getProofTypes;
27
+ })(config || (config = {}));
@@ -0,0 +1,56 @@
1
+ export declare namespace http {
2
+ /**
3
+ * Perform a GET request to any API endpoint.
4
+ *
5
+ * @param path - Path after the base URL, e.g. `'/public/config/fields'`
6
+ * @returns Parsed JSON response body typed as `T`
7
+ * @throws {SmartlinksApiError} on non-2xx responses
8
+ *
9
+ * @example
10
+ * const fields = await http.get<FieldDefinition[]>('/public/config/fields')
11
+ */
12
+ function get<T>(path: string): Promise<T>;
13
+ /**
14
+ * Perform a POST request to any API endpoint.
15
+ *
16
+ * @param path - Path after the base URL, e.g. `'/public/app/eticket/uploadTickets'`
17
+ * @param body - Request body (serialized to JSON, or sent as-is for FormData)
18
+ * @returns Parsed JSON response body typed as `T`
19
+ * @throws {SmartlinksApiError} on non-2xx responses
20
+ *
21
+ * @example
22
+ * const result = await http.post('/public/app/eticket/uploadTickets', {
23
+ * collectionId,
24
+ * productId,
25
+ * appId,
26
+ * data,
27
+ * })
28
+ */
29
+ function post<T>(path: string, body: any): Promise<T>;
30
+ /**
31
+ * Perform a PUT request to any API endpoint.
32
+ *
33
+ * @param path - Path after the base URL
34
+ * @param body - Request body (serialized to JSON, or sent as-is for FormData)
35
+ * @returns Parsed JSON response body typed as `T`
36
+ * @throws {SmartlinksApiError} on non-2xx responses
37
+ */
38
+ function put<T>(path: string, body: any): Promise<T>;
39
+ /**
40
+ * Perform a PATCH request to any API endpoint.
41
+ *
42
+ * @param path - Path after the base URL
43
+ * @param body - Partial request body (serialized to JSON)
44
+ * @returns Parsed JSON response body typed as `T`
45
+ * @throws {SmartlinksApiError} on non-2xx responses
46
+ */
47
+ function patch<T>(path: string, body: any): Promise<T>;
48
+ /**
49
+ * Perform a DELETE request to any API endpoint.
50
+ *
51
+ * @param path - Path after the base URL
52
+ * @returns Parsed JSON response body typed as `T`
53
+ * @throws {SmartlinksApiError} on non-2xx responses
54
+ */
55
+ function del<T>(path: string): Promise<T>;
56
+ }
@@ -0,0 +1,97 @@
1
+ // src/api/http.ts
2
+ // Escape-hatch namespace for calling arbitrary API endpoints that are not yet
3
+ // covered by a dedicated SDK namespace.
4
+ //
5
+ // Paths are relative to the base URL configured via initializeApi() — which
6
+ // already includes "/api/v1". You only need to supply the path segment that
7
+ // comes *after* that prefix:
8
+ //
9
+ // ✅ http.post('/public/app/eticket/uploadTickets', { ... })
10
+ // ✅ http.get('/admin/collection/abc123/customReport')
11
+ // ❌ http.post('/api/v1/public/...') — do NOT repeat the prefix
12
+ //
13
+ // All methods use the same auth headers (API key / bearer token), proxy mode,
14
+ // and caching behaviour as every other SDK namespace. Errors are thrown as
15
+ // SmartlinksApiError — catch them the same way you would for any SDK call.
16
+ //
17
+ // Example — calling a custom app endpoint:
18
+ //
19
+ // import { http } from '@smartlinks/sdk'
20
+ //
21
+ // const result = await http.post<{ uploaded: number }>(
22
+ // '/public/app/eticket/uploadTickets',
23
+ // { collectionId, productId, appId, data }
24
+ // )
25
+ import { request as _get, post as _post, put as _put, patch as _patch, del as _del, } from '../http';
26
+ export var http;
27
+ (function (http) {
28
+ /**
29
+ * Perform a GET request to any API endpoint.
30
+ *
31
+ * @param path - Path after the base URL, e.g. `'/public/config/fields'`
32
+ * @returns Parsed JSON response body typed as `T`
33
+ * @throws {SmartlinksApiError} on non-2xx responses
34
+ *
35
+ * @example
36
+ * const fields = await http.get<FieldDefinition[]>('/public/config/fields')
37
+ */
38
+ async function get(path) {
39
+ return _get(path);
40
+ }
41
+ http.get = get;
42
+ /**
43
+ * Perform a POST request to any API endpoint.
44
+ *
45
+ * @param path - Path after the base URL, e.g. `'/public/app/eticket/uploadTickets'`
46
+ * @param body - Request body (serialized to JSON, or sent as-is for FormData)
47
+ * @returns Parsed JSON response body typed as `T`
48
+ * @throws {SmartlinksApiError} on non-2xx responses
49
+ *
50
+ * @example
51
+ * const result = await http.post('/public/app/eticket/uploadTickets', {
52
+ * collectionId,
53
+ * productId,
54
+ * appId,
55
+ * data,
56
+ * })
57
+ */
58
+ async function post(path, body) {
59
+ return _post(path, body);
60
+ }
61
+ http.post = post;
62
+ /**
63
+ * Perform a PUT request to any API endpoint.
64
+ *
65
+ * @param path - Path after the base URL
66
+ * @param body - Request body (serialized to JSON, or sent as-is for FormData)
67
+ * @returns Parsed JSON response body typed as `T`
68
+ * @throws {SmartlinksApiError} on non-2xx responses
69
+ */
70
+ async function put(path, body) {
71
+ return _put(path, body);
72
+ }
73
+ http.put = put;
74
+ /**
75
+ * Perform a PATCH request to any API endpoint.
76
+ *
77
+ * @param path - Path after the base URL
78
+ * @param body - Partial request body (serialized to JSON)
79
+ * @returns Parsed JSON response body typed as `T`
80
+ * @throws {SmartlinksApiError} on non-2xx responses
81
+ */
82
+ async function patch(path, body) {
83
+ return _patch(path, body);
84
+ }
85
+ http.patch = patch;
86
+ /**
87
+ * Perform a DELETE request to any API endpoint.
88
+ *
89
+ * @param path - Path after the base URL
90
+ * @returns Parsed JSON response body typed as `T`
91
+ * @throws {SmartlinksApiError} on non-2xx responses
92
+ */
93
+ async function del(path) {
94
+ return _del(path);
95
+ }
96
+ http.del = del;
97
+ })(http || (http = {}));
@@ -36,3 +36,5 @@ export { attestations } from "./attestations";
36
36
  export { containers } from "./containers";
37
37
  export { loyalty } from "./loyalty";
38
38
  export { translations } from "./translations";
39
+ export { config } from "./config";
40
+ export { http } from "./http";
package/dist/api/index.js CHANGED
@@ -39,3 +39,5 @@ export { attestations } from "./attestations";
39
39
  export { containers } from "./containers";
40
40
  export { loyalty } from "./loyalty";
41
41
  export { translations } from "./translations";
42
+ export { config } from "./config";
43
+ export { http } from "./http";
@@ -1,6 +1,6 @@
1
1
  # Smartlinks API Summary
2
2
 
3
- Version: 1.9.14 | Generated: 2026-03-31T19:46:30.667Z
3
+ Version: 1.9.16 | Generated: 2026-04-13T17:25:57.673Z
4
4
 
5
5
  This is a concise summary of all available API functions and types.
6
6
 
@@ -103,8 +103,10 @@ The Smartlinks SDK is organized into the following namespaces:
103
103
  - **async** - Functions for async operations
104
104
  - **attestation** - Functions for attestation operations
105
105
  - **attestations** - Functions for attestations operations
106
+ - **config** - Functions for config operations
106
107
  - **containers** - Functions for containers operations
107
108
  - **facets** - Functions for facets operations
109
+ - **http** - Functions for http operations
108
110
  - **jobs** - Functions for jobs operations
109
111
  - **journeysAnalytics** - Functions for journeysAnalytics operations
110
112
  - **location** - Functions for location operations
@@ -3745,6 +3747,90 @@ export interface TransactionalSendError {
3745
3747
 
3746
3748
  export type TransactionalSendResult =`
3747
3749
 
3750
+ ### config
3751
+
3752
+ **FieldOption** (interface)
3753
+ ```typescript
3754
+ interface FieldOption {
3755
+ label: string
3756
+ value: string
3757
+ }
3758
+ ```
3759
+
3760
+ **FieldDefinition** (interface)
3761
+ ```typescript
3762
+ interface FieldDefinition {
3763
+ id: string
3764
+ label: string
3765
+ storageKey?: string
3766
+ type: FieldType
3767
+ options?: FieldOption[]
3768
+ required?: boolean
3769
+ col?: number
3770
+ placeholder?: string
3771
+ help?: string
3772
+ min?: number
3773
+ max?: number
3774
+ step?: number
3775
+ rows?: number
3776
+ autoGrow?: boolean
3777
+ accept?: string
3778
+ clearable?: boolean
3779
+ disabled?: boolean
3780
+ * Conditional visibility. If absent the field is always shown.
3781
+ * Object form: `{ field: 'someKey', equals: 'someValue' }` — show when `model[field] === equals`.
3782
+ showIf?: { field: string; equals: unknown }
3783
+ }
3784
+ ```
3785
+
3786
+ **ProofTypeDefinition** (interface)
3787
+ ```typescript
3788
+ interface ProofTypeDefinition {
3789
+ id: string
3790
+ name: string
3791
+ description?: string
3792
+ * Grouping used to organise proof types in the picker.
3793
+ * Examples: 'basic', 'retail', 'ownable', 'consumable', 'attendance',
3794
+ * 'qualification', 'creative', 'memories', 'safety', 'connected',
3795
+ * 'smartdocent', 'tradable'
3796
+ category?: string
3797
+ * Whether this proof type is shown to users.
3798
+ * Only types with `active === true` are returned to the public API
3799
+ * when the platform admin has filtered by "Only Active".
3800
+ active?: boolean
3801
+ group: boolean
3802
+ * The underlying proof mechanisms that products of this type can use.
3803
+ * Stored as `proofTypes` (plural) on the product document.
3804
+ proofTypes?: ProofMechanism[]
3805
+ proofType?: ProofMechanism
3806
+ * Field IDs (from the field catalog) shown when creating/editing the product group.
3807
+ * Ordered — rendered in this sequence.
3808
+ groupFields?: string[]
3809
+ * Field IDs shown when creating/editing an individual proof item within the group.
3810
+ * If absent, falls back to groupFields.
3811
+ proofFields?: string[]
3812
+ * Column definitions shown in the proof list view.
3813
+ * Keys are field IDs; value true means show the column.
3814
+ listFields?: Record<string, boolean>
3815
+ * App uniqueNames automatically installed (for free) when this proof type is selected.
3816
+ freeApps?: string[]
3817
+ * App uniqueNames shown as recommended paid add-ons for this proof type.
3818
+ apps?: string[]
3819
+ collection?: string
3820
+ action?: string
3821
+ bound?: 'soul'
3822
+ * UI translation overrides for this proof type.
3823
+ * Keys are source English words; values are replacement strings.
3824
+ * Example: `{ "Products": "Works" }`
3825
+ translations?: Record<string, string>
3826
+ hideProductTools?: boolean
3827
+ }
3828
+ ```
3829
+
3830
+ **FieldType** = ``
3831
+
3832
+ **ProofMechanism** = ``
3833
+
3748
3834
  ### contact
3749
3835
 
3750
3836
  **Contact** (interface)
@@ -7637,6 +7723,14 @@ Logging: Append a single communication event. POST /admin/collection/:collection
7637
7723
  body: LogBulkCommunicationEventsBody | ({ sourceId: string; ids: string[]; idField?: 'userId'|'contactId'; [k: string]: any }) → `void`
7638
7724
  Logging: Append many communication events for a list of IDs. POST /admin/collection/:collectionId/comm/log/bulk
7639
7725
 
7726
+ ### config
7727
+
7728
+ **getFields**() → `Promise<FieldDefinition[]>`
7729
+ Returns the full platform field catalog. Fields are used as building blocks for proof type templates — they define the input widgets shown when creating or editing products and proof items. **Endpoint:** `GET /api/v1/public/config/fields`
7730
+
7731
+ **getProofTypes**() → `Promise<ProofTypeDefinition[]>`
7732
+ Returns all proof type definitions. Proof types are templates that specify which fields to show, which apps are pre-installed, and how the portal behaves for a given product category. **Endpoint:** `GET /api/v1/public/config/proofTypes`
7733
+
7640
7734
  ### contact
7641
7735
 
7642
7736
  **create**(collectionId: string, data: ContactCreateRequest) → `Promise<ContactResponse>`
@@ -7836,6 +7930,23 @@ Update a form for a collection (admin only).
7836
7930
  **remove**(collectionId: string, formId: string) → `Promise<void>`
7837
7931
  Delete a form for a collection (admin only).
7838
7932
 
7933
+ ### http
7934
+
7935
+ **get**(path: string) → `Promise<T>`
7936
+ Perform a GET request to any API endpoint. const fields = await http.get<FieldDefinition[]>('/public/config/fields')
7937
+
7938
+ **post**(path: string, body: any) → `Promise<T>`
7939
+ Perform a POST request to any API endpoint. const result = await http.post('/public/app/eticket/uploadTickets', { collectionId, productId, appId, data, })
7940
+
7941
+ **put**(path: string, body: any) → `Promise<T>`
7942
+ Perform a PUT request to any API endpoint.
7943
+
7944
+ **patch**(path: string, body: any) → `Promise<T>`
7945
+ Perform a PATCH request to any API endpoint.
7946
+
7947
+ **del**(path: string) → `Promise<T>`
7948
+ Perform a DELETE request to any API endpoint.
7949
+
7839
7950
  ### interactions
7840
7951
 
7841
7952
  **query**(collectionId: string,
package/dist/openapi.yaml CHANGED
@@ -32,6 +32,7 @@ tags:
32
32
  - name: claimSet
33
33
  - name: collection
34
34
  - name: comms
35
+ - name: config
35
36
  - name: contact
36
37
  - name: containers
37
38
  - name: crate
@@ -11831,6 +11832,50 @@ paths:
11831
11832
  application/json:
11832
11833
  schema:
11833
11834
  $ref: "#/components/schemas/TranslationLookupRequest"
11835
+ /public/config/fields:
11836
+ get:
11837
+ tags:
11838
+ - config
11839
+ summary: Returns the full platform field catalog.
11840
+ operationId: config_getFields
11841
+ security: []
11842
+ responses:
11843
+ 200:
11844
+ description: Success
11845
+ content:
11846
+ application/json:
11847
+ schema:
11848
+ type: array
11849
+ items:
11850
+ $ref: "#/components/schemas/FieldDefinition"
11851
+ 400:
11852
+ description: Bad request
11853
+ 401:
11854
+ description: Unauthorized
11855
+ 404:
11856
+ description: Not found
11857
+ /public/config/proofTypes:
11858
+ get:
11859
+ tags:
11860
+ - config
11861
+ summary: Returns the full platform field catalog.
11862
+ operationId: config_getProofTypes
11863
+ security: []
11864
+ responses:
11865
+ 200:
11866
+ description: Success
11867
+ content:
11868
+ application/json:
11869
+ schema:
11870
+ type: array
11871
+ items:
11872
+ $ref: "#/components/schemas/ProofTypeDefinition"
11873
+ 400:
11874
+ description: Bad request
11875
+ 401:
11876
+ description: Unauthorized
11877
+ 404:
11878
+ description: Not found
11834
11879
  /public/location/{locationId}:
11835
11880
  get:
11836
11881
  tags:
@@ -17691,6 +17736,132 @@ components:
17691
17736
  required:
17692
17737
  - ok
17693
17738
  - error
17739
+ FieldOption:
17740
+ type: object
17741
+ properties:
17742
+ label:
17743
+ type: string
17744
+ value:
17745
+ type: string
17746
+ required:
17747
+ - label
17748
+ - value
17749
+ FieldDefinition:
17750
+ type: object
17751
+ properties:
17752
+ id:
17753
+ type: string
17754
+ label:
17755
+ type: string
17756
+ storageKey:
17757
+ type: string
17758
+ type:
17759
+ $ref: "#/components/schemas/FieldType"
17760
+ options:
17761
+ type: array
17762
+ items:
17763
+ $ref: "#/components/schemas/FieldOption"
17764
+ required:
17765
+ type: boolean
17766
+ col:
17767
+ type: number
17768
+ placeholder:
17769
+ type: string
17770
+ help:
17771
+ type: string
17772
+ min:
17773
+ type: number
17774
+ max:
17775
+ type: number
17776
+ step:
17777
+ type: number
17778
+ rows:
17779
+ type: number
17780
+ autoGrow:
17781
+ type: boolean
17782
+ accept:
17783
+ type: string
17784
+ clearable:
17785
+ type: boolean
17786
+ disabled:
17787
+ type: boolean
17788
+ showIf:
17789
+ type: object
17790
+ additionalProperties: true
17791
+ required:
17792
+ - id
17793
+ - label
17794
+ - type
17795
+ ProofTypeDefinition:
17796
+ type: object
17797
+ properties:
17798
+ id:
17799
+ type: string
17800
+ name:
17801
+ type: string
17802
+ description:
17803
+ type: string
17804
+ category:
17805
+ type: string
17806
+ active:
17807
+ type: boolean
17808
+ group:
17809
+ type: boolean
17810
+ proofTypes:
17811
+ type: array
17812
+ items:
17813
+ $ref: "#/components/schemas/ProofMechanism"
17814
+ proofType:
17815
+ $ref: "#/components/schemas/ProofMechanism"
17816
+ groupFields:
17817
+ type: array
17818
+ items:
17819
+ type: string
17820
+ proofFields:
17821
+ type: array
17822
+ items:
17823
+ type: string
17824
+ listFields:
17825
+ type: object
17826
+ additionalProperties:
17827
+ type: boolean
17828
+ freeApps:
17829
+ type: array
17830
+ items:
17831
+ type: string
17832
+ apps:
17833
+ type: array
17834
+ items:
17835
+ type: string
17836
+ collection:
17837
+ type: string
17838
+ action:
17839
+ type: string
17840
+ bound:
17841
+ type: string
17842
+ enum:
17843
+ - soul
17844
+ translations:
17845
+ type: object
17846
+ additionalProperties:
17847
+ type: string
17848
+ hideProductTools:
17849
+ type: boolean
17850
+ required:
17851
+ - id
17852
+ - name
17853
+ - group
17854
+ FieldType:
17855
+ type: array
17856
+ items:
17857
+ type: string
17858
+ enum:
17859
+ - text
17860
+ - email
17861
+ - url
17862
+ - textarea
17863
+ - number
17864
+ - select
17694
17865
  Contact:
17695
17866
  type: object
17696
17867
  properties:
@@ -0,0 +1,132 @@
1
+ /** Accepted input widget types for a FieldDefinition. */
2
+ export type FieldType = 'text' | 'email' | 'url' | 'textarea' | 'number' | 'select' | 'switch' | 'checkbox' | 'date' | 'json' | 'image-upload' | 'file-upload';
3
+ /** A label/value pair used when FieldDefinition.type === 'select'. */
4
+ export interface FieldOption {
5
+ label: string;
6
+ value: string;
7
+ }
8
+ /**
9
+ * A single entry in the platform field catalog.
10
+ * Fields are referenced by their `id` inside ProofTypeDefinition.groupFields / proofFields arrays.
11
+ */
12
+ export interface FieldDefinition {
13
+ /** Unique identifier, kebab-case. Auto-generated from `label` if omitted on create. */
14
+ id: string;
15
+ /** Human-readable display label shown in forms. */
16
+ label: string;
17
+ /** Key used when storing the value on the product/proof document. Defaults to `id`. */
18
+ storageKey?: string;
19
+ /** Input widget type. */
20
+ type: FieldType;
21
+ /** Available choices — only relevant when type === 'select'. */
22
+ options?: FieldOption[];
23
+ /** Whether the field must be filled in. */
24
+ required?: boolean;
25
+ /** Column span (1–12) in a 12-column grid. */
26
+ col?: number;
27
+ /** Placeholder text shown inside the input. */
28
+ placeholder?: string;
29
+ /** Descriptive hint shown below the input. */
30
+ help?: string;
31
+ /** Numeric minimum — only relevant when type === 'number'. */
32
+ min?: number;
33
+ /** Numeric maximum — only relevant when type === 'number'. */
34
+ max?: number;
35
+ /** Step increment — only relevant when type === 'number'. */
36
+ step?: number;
37
+ /** Number of visible rows — only relevant when type === 'textarea' or 'json'. */
38
+ rows?: number;
39
+ /** Auto-grow textarea height — only relevant when type === 'textarea'. */
40
+ autoGrow?: boolean;
41
+ /** Accept filter passed to the file input — only relevant when type === 'image-upload' or 'file-upload'. Examples: 'image/*', '.glb,.gltf,.fbx' */
42
+ accept?: string;
43
+ /** Whether the input has a clear (×) button (text/number fields). Default true. */
44
+ clearable?: boolean;
45
+ /** Disable this field regardless of model state. */
46
+ disabled?: boolean;
47
+ /**
48
+ * Conditional visibility. If absent the field is always shown.
49
+ * Object form: `{ field: 'someKey', equals: 'someValue' }` — show when `model[field] === equals`.
50
+ */
51
+ showIf?: {
52
+ field: string;
53
+ equals: unknown;
54
+ };
55
+ }
56
+ /**
57
+ * The base proof mechanism that items in a proof type use.
58
+ * Matches the `proofType` / `proofTypes` values stored on product documents.
59
+ */
60
+ export type ProofMechanism = 'certificate' | 'ownable' | 'consumable' | 'timeline' | 'docent' | 'connected' | 'text' | 'image' | 'video';
61
+ /**
62
+ * A proof type defines a template for creating products.
63
+ * It specifies which fields to show, which apps are pre-installed,
64
+ * and how the portal should behave.
65
+ */
66
+ export interface ProofTypeDefinition {
67
+ /** Unique identifier, kebab-case. Auto-generated from `name` if omitted on create. */
68
+ id: string;
69
+ /** Human-readable name shown in product-creation wizards. */
70
+ name: string;
71
+ /** Long description shown in the proof type picker UI. */
72
+ description?: string;
73
+ /**
74
+ * Grouping used to organise proof types in the picker.
75
+ * Examples: 'basic', 'retail', 'ownable', 'consumable', 'attendance',
76
+ * 'qualification', 'creative', 'memories', 'safety', 'connected',
77
+ * 'smartdocent', 'tradable'
78
+ */
79
+ category?: string;
80
+ /**
81
+ * Whether this proof type is shown to users.
82
+ * Only types with `active === true` are returned to the public API
83
+ * when the platform admin has filtered by "Only Active".
84
+ */
85
+ active?: boolean;
86
+ /** Whether this proof type produces a group of items (true) or a single item (false). */
87
+ group: boolean;
88
+ /**
89
+ * The underlying proof mechanisms that products of this type can use.
90
+ * Stored as `proofTypes` (plural) on the product document.
91
+ */
92
+ proofTypes?: ProofMechanism[];
93
+ /** Legacy single-value equivalent of proofTypes. */
94
+ proofType?: ProofMechanism;
95
+ /**
96
+ * Field IDs (from the field catalog) shown when creating/editing the product group.
97
+ * Ordered — rendered in this sequence.
98
+ */
99
+ groupFields?: string[];
100
+ /**
101
+ * Field IDs shown when creating/editing an individual proof item within the group.
102
+ * If absent, falls back to groupFields.
103
+ */
104
+ proofFields?: string[];
105
+ /**
106
+ * Column definitions shown in the proof list view.
107
+ * Keys are field IDs; value true means show the column.
108
+ */
109
+ listFields?: Record<string, boolean>;
110
+ /**
111
+ * App uniqueNames automatically installed (for free) when this proof type is selected.
112
+ */
113
+ freeApps?: string[];
114
+ /**
115
+ * App uniqueNames shown as recommended paid add-ons for this proof type.
116
+ */
117
+ apps?: string[];
118
+ /** Collection-level slug that this proof type is scoped to (legacy, rarely used). */
119
+ collection?: string;
120
+ /** Action name used by the legacy proof action pipeline. */
121
+ action?: string;
122
+ /** Whether items are soul-bound (non-transferable by default). */
123
+ bound?: 'soul';
124
+ /**
125
+ * UI translation overrides for this proof type.
126
+ * Keys are source English words; values are replacement strings.
127
+ * Example: `{ "Products": "Works" }`
128
+ */
129
+ translations?: Record<string, string>;
130
+ /** Whether product tools (edit, duplicate, etc.) are hidden in the console UI. */
131
+ hideProductTools?: boolean;
132
+ }
@@ -0,0 +1,2 @@
1
+ // src/types/config.ts
2
+ export {};
@@ -33,3 +33,4 @@ export * from "./appManifest";
33
33
  export * from "./appObjects";
34
34
  export * from "./loyalty";
35
35
  export * from "./translations";
36
+ export * from "./config";
@@ -35,3 +35,4 @@ export * from "./appManifest";
35
35
  export * from "./appObjects";
36
36
  export * from "./loyalty";
37
37
  export * from "./translations";
38
+ export * from "./config";
@@ -1,6 +1,6 @@
1
1
  # Smartlinks API Summary
2
2
 
3
- Version: 1.9.14 | Generated: 2026-03-31T19:46:30.667Z
3
+ Version: 1.9.16 | Generated: 2026-04-13T17:25:57.673Z
4
4
 
5
5
  This is a concise summary of all available API functions and types.
6
6
 
@@ -103,8 +103,10 @@ The Smartlinks SDK is organized into the following namespaces:
103
103
  - **async** - Functions for async operations
104
104
  - **attestation** - Functions for attestation operations
105
105
  - **attestations** - Functions for attestations operations
106
+ - **config** - Functions for config operations
106
107
  - **containers** - Functions for containers operations
107
108
  - **facets** - Functions for facets operations
109
+ - **http** - Functions for http operations
108
110
  - **jobs** - Functions for jobs operations
109
111
  - **journeysAnalytics** - Functions for journeysAnalytics operations
110
112
  - **location** - Functions for location operations
@@ -3745,6 +3747,90 @@ export interface TransactionalSendError {
3745
3747
 
3746
3748
  export type TransactionalSendResult =`
3747
3749
 
3750
+ ### config
3751
+
3752
+ **FieldOption** (interface)
3753
+ ```typescript
3754
+ interface FieldOption {
3755
+ label: string
3756
+ value: string
3757
+ }
3758
+ ```
3759
+
3760
+ **FieldDefinition** (interface)
3761
+ ```typescript
3762
+ interface FieldDefinition {
3763
+ id: string
3764
+ label: string
3765
+ storageKey?: string
3766
+ type: FieldType
3767
+ options?: FieldOption[]
3768
+ required?: boolean
3769
+ col?: number
3770
+ placeholder?: string
3771
+ help?: string
3772
+ min?: number
3773
+ max?: number
3774
+ step?: number
3775
+ rows?: number
3776
+ autoGrow?: boolean
3777
+ accept?: string
3778
+ clearable?: boolean
3779
+ disabled?: boolean
3780
+ * Conditional visibility. If absent the field is always shown.
3781
+ * Object form: `{ field: 'someKey', equals: 'someValue' }` — show when `model[field] === equals`.
3782
+ showIf?: { field: string; equals: unknown }
3783
+ }
3784
+ ```
3785
+
3786
+ **ProofTypeDefinition** (interface)
3787
+ ```typescript
3788
+ interface ProofTypeDefinition {
3789
+ id: string
3790
+ name: string
3791
+ description?: string
3792
+ * Grouping used to organise proof types in the picker.
3793
+ * Examples: 'basic', 'retail', 'ownable', 'consumable', 'attendance',
3794
+ * 'qualification', 'creative', 'memories', 'safety', 'connected',
3795
+ * 'smartdocent', 'tradable'
3796
+ category?: string
3797
+ * Whether this proof type is shown to users.
3798
+ * Only types with `active === true` are returned to the public API
3799
+ * when the platform admin has filtered by "Only Active".
3800
+ active?: boolean
3801
+ group: boolean
3802
+ * The underlying proof mechanisms that products of this type can use.
3803
+ * Stored as `proofTypes` (plural) on the product document.
3804
+ proofTypes?: ProofMechanism[]
3805
+ proofType?: ProofMechanism
3806
+ * Field IDs (from the field catalog) shown when creating/editing the product group.
3807
+ * Ordered — rendered in this sequence.
3808
+ groupFields?: string[]
3809
+ * Field IDs shown when creating/editing an individual proof item within the group.
3810
+ * If absent, falls back to groupFields.
3811
+ proofFields?: string[]
3812
+ * Column definitions shown in the proof list view.
3813
+ * Keys are field IDs; value true means show the column.
3814
+ listFields?: Record<string, boolean>
3815
+ * App uniqueNames automatically installed (for free) when this proof type is selected.
3816
+ freeApps?: string[]
3817
+ * App uniqueNames shown as recommended paid add-ons for this proof type.
3818
+ apps?: string[]
3819
+ collection?: string
3820
+ action?: string
3821
+ bound?: 'soul'
3822
+ * UI translation overrides for this proof type.
3823
+ * Keys are source English words; values are replacement strings.
3824
+ * Example: `{ "Products": "Works" }`
3825
+ translations?: Record<string, string>
3826
+ hideProductTools?: boolean
3827
+ }
3828
+ ```
3829
+
3830
+ **FieldType** = ``
3831
+
3832
+ **ProofMechanism** = ``
3833
+
3748
3834
  ### contact
3749
3835
 
3750
3836
  **Contact** (interface)
@@ -7637,6 +7723,14 @@ Logging: Append a single communication event. POST /admin/collection/:collection
7637
7723
  body: LogBulkCommunicationEventsBody | ({ sourceId: string; ids: string[]; idField?: 'userId'|'contactId'; [k: string]: any }) → `void`
7638
7724
  Logging: Append many communication events for a list of IDs. POST /admin/collection/:collectionId/comm/log/bulk
7639
7725
 
7726
+ ### config
7727
+
7728
+ **getFields**() → `Promise<FieldDefinition[]>`
7729
+ Returns the full platform field catalog. Fields are used as building blocks for proof type templates — they define the input widgets shown when creating or editing products and proof items. **Endpoint:** `GET /api/v1/public/config/fields`
7730
+
7731
+ **getProofTypes**() → `Promise<ProofTypeDefinition[]>`
7732
+ Returns all proof type definitions. Proof types are templates that specify which fields to show, which apps are pre-installed, and how the portal behaves for a given product category. **Endpoint:** `GET /api/v1/public/config/proofTypes`
7733
+
7640
7734
  ### contact
7641
7735
 
7642
7736
  **create**(collectionId: string, data: ContactCreateRequest) → `Promise<ContactResponse>`
@@ -7836,6 +7930,23 @@ Update a form for a collection (admin only).
7836
7930
  **remove**(collectionId: string, formId: string) → `Promise<void>`
7837
7931
  Delete a form for a collection (admin only).
7838
7932
 
7933
+ ### http
7934
+
7935
+ **get**(path: string) → `Promise<T>`
7936
+ Perform a GET request to any API endpoint. const fields = await http.get<FieldDefinition[]>('/public/config/fields')
7937
+
7938
+ **post**(path: string, body: any) → `Promise<T>`
7939
+ Perform a POST request to any API endpoint. const result = await http.post('/public/app/eticket/uploadTickets', { collectionId, productId, appId, data, })
7940
+
7941
+ **put**(path: string, body: any) → `Promise<T>`
7942
+ Perform a PUT request to any API endpoint.
7943
+
7944
+ **patch**(path: string, body: any) → `Promise<T>`
7945
+ Perform a PATCH request to any API endpoint.
7946
+
7947
+ **del**(path: string) → `Promise<T>`
7948
+ Perform a DELETE request to any API endpoint.
7949
+
7839
7950
  ### interactions
7840
7951
 
7841
7952
  **query**(collectionId: string,
package/openapi.yaml CHANGED
@@ -32,6 +32,7 @@ tags:
32
32
  - name: claimSet
33
33
  - name: collection
34
34
  - name: comms
35
+ - name: config
35
36
  - name: contact
36
37
  - name: containers
37
38
  - name: crate
@@ -11831,6 +11832,50 @@ paths:
11831
11832
  application/json:
11832
11833
  schema:
11833
11834
  $ref: "#/components/schemas/TranslationLookupRequest"
11835
+ /public/config/fields:
11836
+ get:
11837
+ tags:
11838
+ - config
11839
+ summary: Returns the full platform field catalog.
11840
+ operationId: config_getFields
11841
+ security: []
11842
+ responses:
11843
+ 200:
11844
+ description: Success
11845
+ content:
11846
+ application/json:
11847
+ schema:
11848
+ type: array
11849
+ items:
11850
+ $ref: "#/components/schemas/FieldDefinition"
11851
+ 400:
11852
+ description: Bad request
11853
+ 401:
11854
+ description: Unauthorized
11855
+ 404:
11856
+ description: Not found
11857
+ /public/config/proofTypes:
11858
+ get:
11859
+ tags:
11860
+ - config
11861
+ summary: Returns the full platform field catalog.
11862
+ operationId: config_getProofTypes
11863
+ security: []
11864
+ responses:
11865
+ 200:
11866
+ description: Success
11867
+ content:
11868
+ application/json:
11869
+ schema:
11870
+ type: array
11871
+ items:
11872
+ $ref: "#/components/schemas/ProofTypeDefinition"
11873
+ 400:
11874
+ description: Bad request
11875
+ 401:
11876
+ description: Unauthorized
11877
+ 404:
11878
+ description: Not found
11834
11879
  /public/location/{locationId}:
11835
11880
  get:
11836
11881
  tags:
@@ -17691,6 +17736,132 @@ components:
17691
17736
  required:
17692
17737
  - ok
17693
17738
  - error
17739
+ FieldOption:
17740
+ type: object
17741
+ properties:
17742
+ label:
17743
+ type: string
17744
+ value:
17745
+ type: string
17746
+ required:
17747
+ - label
17748
+ - value
17749
+ FieldDefinition:
17750
+ type: object
17751
+ properties:
17752
+ id:
17753
+ type: string
17754
+ label:
17755
+ type: string
17756
+ storageKey:
17757
+ type: string
17758
+ type:
17759
+ $ref: "#/components/schemas/FieldType"
17760
+ options:
17761
+ type: array
17762
+ items:
17763
+ $ref: "#/components/schemas/FieldOption"
17764
+ required:
17765
+ type: boolean
17766
+ col:
17767
+ type: number
17768
+ placeholder:
17769
+ type: string
17770
+ help:
17771
+ type: string
17772
+ min:
17773
+ type: number
17774
+ max:
17775
+ type: number
17776
+ step:
17777
+ type: number
17778
+ rows:
17779
+ type: number
17780
+ autoGrow:
17781
+ type: boolean
17782
+ accept:
17783
+ type: string
17784
+ clearable:
17785
+ type: boolean
17786
+ disabled:
17787
+ type: boolean
17788
+ showIf:
17789
+ type: object
17790
+ additionalProperties: true
17791
+ required:
17792
+ - id
17793
+ - label
17794
+ - type
17795
+ ProofTypeDefinition:
17796
+ type: object
17797
+ properties:
17798
+ id:
17799
+ type: string
17800
+ name:
17801
+ type: string
17802
+ description:
17803
+ type: string
17804
+ category:
17805
+ type: string
17806
+ active:
17807
+ type: boolean
17808
+ group:
17809
+ type: boolean
17810
+ proofTypes:
17811
+ type: array
17812
+ items:
17813
+ $ref: "#/components/schemas/ProofMechanism"
17814
+ proofType:
17815
+ $ref: "#/components/schemas/ProofMechanism"
17816
+ groupFields:
17817
+ type: array
17818
+ items:
17819
+ type: string
17820
+ proofFields:
17821
+ type: array
17822
+ items:
17823
+ type: string
17824
+ listFields:
17825
+ type: object
17826
+ additionalProperties:
17827
+ type: boolean
17828
+ freeApps:
17829
+ type: array
17830
+ items:
17831
+ type: string
17832
+ apps:
17833
+ type: array
17834
+ items:
17835
+ type: string
17836
+ collection:
17837
+ type: string
17838
+ action:
17839
+ type: string
17840
+ bound:
17841
+ type: string
17842
+ enum:
17843
+ - soul
17844
+ translations:
17845
+ type: object
17846
+ additionalProperties:
17847
+ type: string
17848
+ hideProductTools:
17849
+ type: boolean
17850
+ required:
17851
+ - id
17852
+ - name
17853
+ - group
17854
+ FieldType:
17855
+ type: array
17856
+ items:
17857
+ type: string
17858
+ enum:
17859
+ - text
17860
+ - email
17861
+ - url
17862
+ - textarea
17863
+ - number
17864
+ - select
17694
17865
  Contact:
17695
17866
  type: object
17696
17867
  properties:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proveanything/smartlinks",
3
- "version": "1.9.14",
3
+ "version": "1.9.16",
4
4
  "description": "Official JavaScript/TypeScript SDK for the Smartlinks API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",