@proveanything/smartlinks 2.0.24 → 2.0.26
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/docs/API_SUMMARY.md +1 -5
- package/dist/docs/app-manifest.md +26 -18
- package/dist/openapi.yaml +0 -10
- package/dist/types/appManifest.d.ts +30 -25
- package/docs/API_SUMMARY.md +1 -5
- package/docs/app-manifest.md +26 -18
- package/openapi.yaml +0 -10
- package/package.json +2 -3
package/dist/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.26 | Generated: 2026-09-28T11:34:04.010Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -2293,11 +2293,9 @@ interface PublicViewParams {
|
|
|
2293
2293
|
interface PublicView {
|
|
2294
2294
|
id: string;
|
|
2295
2295
|
title: string;
|
|
2296
|
-
kind: PublicViewKind;
|
|
2297
2296
|
route?: string;
|
|
2298
2297
|
set?: Record<string, string>;
|
|
2299
2298
|
params?: PublicViewParams;
|
|
2300
|
-
default?: boolean;
|
|
2301
2299
|
}
|
|
2302
2300
|
```
|
|
2303
2301
|
|
|
@@ -2373,8 +2371,6 @@ interface GetCollectionWidgetsOptions {
|
|
|
2373
2371
|
|
|
2374
2372
|
**AppFunctionAuthority** = `'caller' | 'collection'`
|
|
2375
2373
|
|
|
2376
|
-
**PublicViewKind** = `'contextual' | 'standalone'`
|
|
2377
|
-
|
|
2378
2374
|
### appObjects
|
|
2379
2375
|
|
|
2380
2376
|
**PaginatedResponse<T>** (interface)
|
|
@@ -334,22 +334,23 @@ See the [Deep Link Discovery guide](deep-link-discovery.md) for the full dual-so
|
|
|
334
334
|
|
|
335
335
|
#### `publicViews`
|
|
336
336
|
|
|
337
|
-
Declares the app's **public views** —
|
|
338
|
-
(`index.html` → HashRouter):
|
|
339
|
-
this, those routes/modes are invisible to the platform and the Dev Hub. Each view is a
|
|
340
|
-
`
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
337
|
+
Declares the app's **public views** — **standalone, external screens** served over your single public
|
|
338
|
+
bundle (`index.html` → HashRouter): a display board, a kiosk/TV screen, a dashboard, a public share
|
|
339
|
+
page. Without this, those routes/modes are invisible to the platform and the Dev Hub. Each view is a
|
|
340
|
+
`route` + fixed `set` params + caller `params`.
|
|
341
|
+
|
|
342
|
+
> **Public views are NOT portal.** They are completely external and independent. Their only input is
|
|
343
|
+
> **URL parameters** (often a `collectionId`, as a plain param). They expect **no** portal wrapper, **no**
|
|
344
|
+
> host-managed auth/session, and **no** physical-twin context (no QR/NFC/tag scan). They open at a URL
|
|
345
|
+
> and stand alone. For the two **portal** surfaces — where the app renders *inside* portal, and the
|
|
346
|
+
> entry points portal menus link to — see below.
|
|
344
347
|
|
|
345
348
|
```json
|
|
346
349
|
"publicViews": [
|
|
347
|
-
{ "id": "
|
|
348
|
-
"params": { "required": ["collectionId"], "optional": ["
|
|
349
|
-
{ "id": "
|
|
350
|
-
"params": { "required": ["collectionId", "
|
|
351
|
-
{ "id": "tv", "title": "TV / big screen", "kind": "standalone", "route": "/",
|
|
352
|
-
"set": { "tvMode": "true" }, "params": { "required": ["collectionId", "voteId"] } }
|
|
350
|
+
{ "id": "board", "title": "Display board", "route": "/display",
|
|
351
|
+
"params": { "required": ["collectionId"], "optional": ["orientation"] } },
|
|
352
|
+
{ "id": "tv", "title": "TV / big screen", "route": "/", "set": { "tvMode": "true" },
|
|
353
|
+
"params": { "required": ["collectionId", "voteId"] } }
|
|
353
354
|
]
|
|
354
355
|
```
|
|
355
356
|
|
|
@@ -357,14 +358,21 @@ Not a separate build. (Distinct from `linkable`, which is deep-link discovery.)
|
|
|
357
358
|
|-------|------|----------|-------------|
|
|
358
359
|
| `id` | string | ✅ | Stable id, unique within the app |
|
|
359
360
|
| `title` | string | ✅ | Human label (Dev Hub dropdown, platform pickers) |
|
|
360
|
-
| `kind` | `"contextual"` \| `"standalone"` | ✅ | Context-aware (tag-tap) vs full-screen, non-contextual |
|
|
361
361
|
| `route` | string | ❌ | Hash route within the public bundle (defaults to `"/"`) |
|
|
362
362
|
| `set` | object | ❌ | Query params this view PINS (e.g. `{ "tvMode": "true" }`), merged under caller params |
|
|
363
|
-
| `params` | `{ required?: string[]; optional?: string[] }` | ❌ | The params the caller supplies |
|
|
364
|
-
|
|
363
|
+
| `params` | `{ required?: string[]; optional?: string[] }` | ❌ | The params the caller supplies via the URL |
|
|
364
|
+
|
|
365
|
+
Read the URL params with **`SL.readContext()`** (merges hash → search) instead of hand-rolling it.
|
|
366
|
+
|
|
367
|
+
##### Public views vs the two portal surfaces
|
|
368
|
+
|
|
369
|
+
An app can have any combination of three setup styles. Only public views are external:
|
|
365
370
|
|
|
366
|
-
|
|
367
|
-
|
|
371
|
+
| Style | Declared by | Lives | Context |
|
|
372
|
+
|-------|-------------|-------|---------|
|
|
373
|
+
| **Portal components** — where the app renders inside portal (collection / product / batch / variant / proof) | module registry `components.*` (set at publish) | Inside portal | Physical twin (QR/NFC scan) |
|
|
374
|
+
| **Portal deep links** — the entry points portal menus/tabs/side-menus link to (e.g. list view vs calendar view) | `linkable` / `DeepLinkEntry` | Inside portal | Portal (menu picks the entry) |
|
|
375
|
+
| **Public views** — standalone external screens | `publicViews` (this block) | Outside portal | URL params only |
|
|
368
376
|
|
|
369
377
|
#### `records`
|
|
370
378
|
|
package/dist/openapi.yaml
CHANGED
|
@@ -18480,8 +18480,6 @@ components:
|
|
|
18480
18480
|
type: string
|
|
18481
18481
|
title:
|
|
18482
18482
|
type: string
|
|
18483
|
-
kind:
|
|
18484
|
-
$ref: "#/components/schemas/PublicViewKind"
|
|
18485
18483
|
route:
|
|
18486
18484
|
type: string
|
|
18487
18485
|
set:
|
|
@@ -18490,12 +18488,9 @@ components:
|
|
|
18490
18488
|
type: string
|
|
18491
18489
|
params:
|
|
18492
18490
|
$ref: "#/components/schemas/PublicViewParams"
|
|
18493
|
-
default:
|
|
18494
|
-
type: boolean
|
|
18495
18491
|
required:
|
|
18496
18492
|
- id
|
|
18497
18493
|
- title
|
|
18498
|
-
- kind
|
|
18499
18494
|
AppManifest:
|
|
18500
18495
|
type: object
|
|
18501
18496
|
properties:
|
|
@@ -18635,11 +18630,6 @@ components:
|
|
|
18635
18630
|
enum:
|
|
18636
18631
|
- caller
|
|
18637
18632
|
- collection
|
|
18638
|
-
PublicViewKind:
|
|
18639
|
-
type: string
|
|
18640
|
-
enum:
|
|
18641
|
-
- contextual
|
|
18642
|
-
- standalone
|
|
18643
18633
|
PaginatedResponse:
|
|
18644
18634
|
type: object
|
|
18645
18635
|
properties:
|
|
@@ -485,40 +485,42 @@ export interface AppAdminConfig {
|
|
|
485
485
|
* Setup, import, tunable, and metrics configuration lives in a separate
|
|
486
486
|
* `app.admin.json` file. Use the `admin` field to locate and fetch it.
|
|
487
487
|
*/
|
|
488
|
-
/** A public view's kind: context-aware (tag-tap) vs a full-screen, non-contextual screen. */
|
|
489
|
-
export type PublicViewKind = 'contextual' | 'standalone';
|
|
490
488
|
/** The caller-supplied params a public view expects. */
|
|
491
489
|
export interface PublicViewParams {
|
|
492
490
|
/** Params the view REQUIRES to render (e.g. `['collectionId','pageId']`). */
|
|
493
491
|
required?: string[];
|
|
494
|
-
/** Params the view can use if present (e.g. `['
|
|
492
|
+
/** Params the view can use if present (e.g. `['orientation','theme']`). */
|
|
495
493
|
optional?: string[];
|
|
496
494
|
}
|
|
497
495
|
/**
|
|
498
|
-
* A declared PUBLIC VIEW of the app —
|
|
499
|
-
* (`index.html` → HashRouter),
|
|
500
|
-
* guessing at undeclared hash routes. A view is `route` + fixed params (`set`) + caller `params
|
|
501
|
-
*
|
|
502
|
-
*
|
|
503
|
-
*
|
|
504
|
-
*
|
|
505
|
-
*
|
|
496
|
+
* A declared PUBLIC VIEW of the app — a STANDALONE, freeform screen served over the app's single
|
|
497
|
+
* public bundle (`index.html` → HashRouter), enumerable/targetable by the platform + Dev Hub instead
|
|
498
|
+
* of guessing at undeclared hash routes. A view is `route` + fixed params (`set`) + caller `params`.
|
|
499
|
+
*
|
|
500
|
+
* PUBLIC VIEWS ARE NOT PORTAL. They are completely external, independent pages — display boards,
|
|
501
|
+
* projector/kiosk screens, dashboards, public share pages. Their ONLY input is URL parameters (often a
|
|
502
|
+
* `collectionId`, as a plain param). They expect NO portal wrapper, NO host-managed auth/session, and
|
|
503
|
+
* NO physical-twin context (no QR/NFC/tag scan). They open at a URL and stand alone.
|
|
504
|
+
*
|
|
505
|
+
* This is distinct from the two PORTAL-side surfaces, which are declared elsewhere and are context-fed
|
|
506
|
+
* by the physical twin the portal resolves:
|
|
507
|
+
* - WHERE the app renders inside portal (collection/product/batch/variant/proof) → the module
|
|
508
|
+
* registry `components.*` (see prove docs/design/module-registry-fields.md).
|
|
509
|
+
* - The different entry points portal MENUS/TABS/SIDE-MENUS link to (e.g. one app with a list view
|
|
510
|
+
* and a calendar view) → `linkable`/DeepLinkEntry below.
|
|
511
|
+
* See docs/design/public-views.md.
|
|
506
512
|
*/
|
|
507
513
|
export interface PublicView {
|
|
508
514
|
/** Stable id, unique within the app. */
|
|
509
515
|
id: string;
|
|
510
516
|
/** Human label (Dev Hub dropdown, platform pickers). */
|
|
511
517
|
title: string;
|
|
512
|
-
/** `contextual` (context-aware, tag-tap target) or `standalone` (full-screen display/kiosk). */
|
|
513
|
-
kind: PublicViewKind;
|
|
514
518
|
/** Hash route within the public bundle. Defaults to `/`. */
|
|
515
519
|
route?: string;
|
|
516
520
|
/** Query params this view PINS (e.g. `{ tvMode: 'true' }`), merged under the caller's params. */
|
|
517
521
|
set?: Record<string, string>;
|
|
518
|
-
/** The params the caller supplies. */
|
|
522
|
+
/** The params the caller supplies via the URL. */
|
|
519
523
|
params?: PublicViewParams;
|
|
520
|
-
/** The default `contextual` view — the tag-tap target. At most one view sets this. */
|
|
521
|
-
default?: boolean;
|
|
522
524
|
}
|
|
523
525
|
export interface AppManifest {
|
|
524
526
|
$schema?: string;
|
|
@@ -601,19 +603,22 @@ export interface AppManifest {
|
|
|
601
603
|
components: AppContainerComponent[];
|
|
602
604
|
};
|
|
603
605
|
/**
|
|
604
|
-
*
|
|
605
|
-
*
|
|
606
|
-
*
|
|
607
|
-
*
|
|
606
|
+
* PORTAL deep-linkable states built into this app — the entry points the portal's menu system
|
|
607
|
+
* (bottom menu, side menus, tabs) can link to. Use these when one app has several ways to enter/load
|
|
608
|
+
* its portal component (e.g. a list view and a calendar view, or a viewer and an editor) that
|
|
609
|
+
* different parts of portal should link to independently. These live INSIDE portal.
|
|
610
|
+
* Fixed routes are declared here at build time; dynamic content entries (e.g. CMS pages) are stored
|
|
611
|
+
* separately in `appConfig.linkable` — merge both for the full navigable set.
|
|
608
612
|
* @see DeepLinkEntry
|
|
609
613
|
*/
|
|
610
614
|
linkable?: DeepLinkEntry[];
|
|
611
615
|
/**
|
|
612
|
-
* The app's PUBLIC VIEWS —
|
|
613
|
-
*
|
|
614
|
-
* preview, and target them. Declares `route` + fixed `set` params + caller `params`
|
|
615
|
-
*
|
|
616
|
-
*
|
|
616
|
+
* The app's PUBLIC VIEWS — STANDALONE, external screens (display boards, kiosks/TVs, dashboards,
|
|
617
|
+
* public pages) served over the single public bundle, so the platform + Dev Hub can enumerate,
|
|
618
|
+
* preview, and target them. Declares `route` + fixed `set` params + caller `params` per view.
|
|
619
|
+
* NOT portal: no portal wrapper, no host auth/session, no physical-twin context — URL params only.
|
|
620
|
+
* For portal surfaces use `components.*` (where it renders) and `linkable` (portal menu entries).
|
|
621
|
+
* See PublicView + docs/design/public-views.md.
|
|
617
622
|
*/
|
|
618
623
|
publicViews?: PublicView[];
|
|
619
624
|
/**
|
package/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.26 | Generated: 2026-09-28T11:34:04.010Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -2293,11 +2293,9 @@ interface PublicViewParams {
|
|
|
2293
2293
|
interface PublicView {
|
|
2294
2294
|
id: string;
|
|
2295
2295
|
title: string;
|
|
2296
|
-
kind: PublicViewKind;
|
|
2297
2296
|
route?: string;
|
|
2298
2297
|
set?: Record<string, string>;
|
|
2299
2298
|
params?: PublicViewParams;
|
|
2300
|
-
default?: boolean;
|
|
2301
2299
|
}
|
|
2302
2300
|
```
|
|
2303
2301
|
|
|
@@ -2373,8 +2371,6 @@ interface GetCollectionWidgetsOptions {
|
|
|
2373
2371
|
|
|
2374
2372
|
**AppFunctionAuthority** = `'caller' | 'collection'`
|
|
2375
2373
|
|
|
2376
|
-
**PublicViewKind** = `'contextual' | 'standalone'`
|
|
2377
|
-
|
|
2378
2374
|
### appObjects
|
|
2379
2375
|
|
|
2380
2376
|
**PaginatedResponse<T>** (interface)
|
package/docs/app-manifest.md
CHANGED
|
@@ -334,22 +334,23 @@ See the [Deep Link Discovery guide](deep-link-discovery.md) for the full dual-so
|
|
|
334
334
|
|
|
335
335
|
#### `publicViews`
|
|
336
336
|
|
|
337
|
-
Declares the app's **public views** —
|
|
338
|
-
(`index.html` → HashRouter):
|
|
339
|
-
this, those routes/modes are invisible to the platform and the Dev Hub. Each view is a
|
|
340
|
-
`
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
337
|
+
Declares the app's **public views** — **standalone, external screens** served over your single public
|
|
338
|
+
bundle (`index.html` → HashRouter): a display board, a kiosk/TV screen, a dashboard, a public share
|
|
339
|
+
page. Without this, those routes/modes are invisible to the platform and the Dev Hub. Each view is a
|
|
340
|
+
`route` + fixed `set` params + caller `params`.
|
|
341
|
+
|
|
342
|
+
> **Public views are NOT portal.** They are completely external and independent. Their only input is
|
|
343
|
+
> **URL parameters** (often a `collectionId`, as a plain param). They expect **no** portal wrapper, **no**
|
|
344
|
+
> host-managed auth/session, and **no** physical-twin context (no QR/NFC/tag scan). They open at a URL
|
|
345
|
+
> and stand alone. For the two **portal** surfaces — where the app renders *inside* portal, and the
|
|
346
|
+
> entry points portal menus link to — see below.
|
|
344
347
|
|
|
345
348
|
```json
|
|
346
349
|
"publicViews": [
|
|
347
|
-
{ "id": "
|
|
348
|
-
"params": { "required": ["collectionId"], "optional": ["
|
|
349
|
-
{ "id": "
|
|
350
|
-
"params": { "required": ["collectionId", "
|
|
351
|
-
{ "id": "tv", "title": "TV / big screen", "kind": "standalone", "route": "/",
|
|
352
|
-
"set": { "tvMode": "true" }, "params": { "required": ["collectionId", "voteId"] } }
|
|
350
|
+
{ "id": "board", "title": "Display board", "route": "/display",
|
|
351
|
+
"params": { "required": ["collectionId"], "optional": ["orientation"] } },
|
|
352
|
+
{ "id": "tv", "title": "TV / big screen", "route": "/", "set": { "tvMode": "true" },
|
|
353
|
+
"params": { "required": ["collectionId", "voteId"] } }
|
|
353
354
|
]
|
|
354
355
|
```
|
|
355
356
|
|
|
@@ -357,14 +358,21 @@ Not a separate build. (Distinct from `linkable`, which is deep-link discovery.)
|
|
|
357
358
|
|-------|------|----------|-------------|
|
|
358
359
|
| `id` | string | ✅ | Stable id, unique within the app |
|
|
359
360
|
| `title` | string | ✅ | Human label (Dev Hub dropdown, platform pickers) |
|
|
360
|
-
| `kind` | `"contextual"` \| `"standalone"` | ✅ | Context-aware (tag-tap) vs full-screen, non-contextual |
|
|
361
361
|
| `route` | string | ❌ | Hash route within the public bundle (defaults to `"/"`) |
|
|
362
362
|
| `set` | object | ❌ | Query params this view PINS (e.g. `{ "tvMode": "true" }`), merged under caller params |
|
|
363
|
-
| `params` | `{ required?: string[]; optional?: string[] }` | ❌ | The params the caller supplies |
|
|
364
|
-
|
|
363
|
+
| `params` | `{ required?: string[]; optional?: string[] }` | ❌ | The params the caller supplies via the URL |
|
|
364
|
+
|
|
365
|
+
Read the URL params with **`SL.readContext()`** (merges hash → search) instead of hand-rolling it.
|
|
366
|
+
|
|
367
|
+
##### Public views vs the two portal surfaces
|
|
368
|
+
|
|
369
|
+
An app can have any combination of three setup styles. Only public views are external:
|
|
365
370
|
|
|
366
|
-
|
|
367
|
-
|
|
371
|
+
| Style | Declared by | Lives | Context |
|
|
372
|
+
|-------|-------------|-------|---------|
|
|
373
|
+
| **Portal components** — where the app renders inside portal (collection / product / batch / variant / proof) | module registry `components.*` (set at publish) | Inside portal | Physical twin (QR/NFC scan) |
|
|
374
|
+
| **Portal deep links** — the entry points portal menus/tabs/side-menus link to (e.g. list view vs calendar view) | `linkable` / `DeepLinkEntry` | Inside portal | Portal (menu picks the entry) |
|
|
375
|
+
| **Public views** — standalone external screens | `publicViews` (this block) | Outside portal | URL params only |
|
|
368
376
|
|
|
369
377
|
#### `records`
|
|
370
378
|
|
package/openapi.yaml
CHANGED
|
@@ -18480,8 +18480,6 @@ components:
|
|
|
18480
18480
|
type: string
|
|
18481
18481
|
title:
|
|
18482
18482
|
type: string
|
|
18483
|
-
kind:
|
|
18484
|
-
$ref: "#/components/schemas/PublicViewKind"
|
|
18485
18483
|
route:
|
|
18486
18484
|
type: string
|
|
18487
18485
|
set:
|
|
@@ -18490,12 +18488,9 @@ components:
|
|
|
18490
18488
|
type: string
|
|
18491
18489
|
params:
|
|
18492
18490
|
$ref: "#/components/schemas/PublicViewParams"
|
|
18493
|
-
default:
|
|
18494
|
-
type: boolean
|
|
18495
18491
|
required:
|
|
18496
18492
|
- id
|
|
18497
18493
|
- title
|
|
18498
|
-
- kind
|
|
18499
18494
|
AppManifest:
|
|
18500
18495
|
type: object
|
|
18501
18496
|
properties:
|
|
@@ -18635,11 +18630,6 @@ components:
|
|
|
18635
18630
|
enum:
|
|
18636
18631
|
- caller
|
|
18637
18632
|
- collection
|
|
18638
|
-
PublicViewKind:
|
|
18639
|
-
type: string
|
|
18640
|
-
enum:
|
|
18641
|
-
- contextual
|
|
18642
|
-
- standalone
|
|
18643
18633
|
PaginatedResponse:
|
|
18644
18634
|
type: object
|
|
18645
18635
|
properties:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proveanything/smartlinks",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.26",
|
|
4
4
|
"description": "Official JavaScript/TypeScript SDK for the Smartlinks API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -65,8 +65,7 @@
|
|
|
65
65
|
"author": "Glenn Shoosmith",
|
|
66
66
|
"license": "MIT",
|
|
67
67
|
"publishConfig": {
|
|
68
|
-
"access": "public"
|
|
69
|
-
"tag": "next"
|
|
68
|
+
"access": "public"
|
|
70
69
|
},
|
|
71
70
|
"dependencies": {
|
|
72
71
|
"cross-fetch": "^3.1.5",
|