@proveanything/smartlinks 1.9.17 → 1.9.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/appObjects.d.ts +56 -2
- package/dist/api/appObjects.js +58 -0
- package/dist/containers/types.d.ts +77 -0
- package/dist/containers/types.js +1 -0
- package/dist/docs/API_SUMMARY.md +90 -14
- package/dist/docs/app-objects.md +187 -36
- package/dist/openapi.yaml +141 -10
- package/dist/types/appObjects.d.ts +105 -12
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/widgets.d.ts +71 -0
- package/dist/types/widgets.js +2 -0
- package/docs/API_SUMMARY.md +90 -14
- package/docs/app-objects.md +187 -36
- package/openapi.yaml +141 -10
- package/package.json +1 -1
package/dist/openapi.yaml
CHANGED
|
@@ -12417,6 +12417,54 @@ paths:
|
|
|
12417
12417
|
description: Unauthorized
|
|
12418
12418
|
404:
|
|
12419
12419
|
description: Not found
|
|
12420
|
+
/{zone}/collection/{collectionId}/app/{appId}/recordse)}/{recordId}:
|
|
12421
|
+
patch:
|
|
12422
|
+
tags:
|
|
12423
|
+
- records
|
|
12424
|
+
summary: records.updateWithToken
|
|
12425
|
+
operationId: records_updateWithToken
|
|
12426
|
+
security: []
|
|
12427
|
+
parameters:
|
|
12428
|
+
- name: zone
|
|
12429
|
+
in: path
|
|
12430
|
+
required: true
|
|
12431
|
+
schema:
|
|
12432
|
+
type: string
|
|
12433
|
+
- name: collectionId
|
|
12434
|
+
in: path
|
|
12435
|
+
required: true
|
|
12436
|
+
schema:
|
|
12437
|
+
type: string
|
|
12438
|
+
- name: appId
|
|
12439
|
+
in: path
|
|
12440
|
+
required: true
|
|
12441
|
+
schema:
|
|
12442
|
+
type: string
|
|
12443
|
+
- name: recordId
|
|
12444
|
+
in: path
|
|
12445
|
+
required: true
|
|
12446
|
+
schema:
|
|
12447
|
+
type: string
|
|
12448
|
+
responses:
|
|
12449
|
+
200:
|
|
12450
|
+
description: Success
|
|
12451
|
+
content:
|
|
12452
|
+
application/json:
|
|
12453
|
+
schema:
|
|
12454
|
+
$ref: "#/components/schemas/AppRecord"
|
|
12455
|
+
400:
|
|
12456
|
+
description: Bad request
|
|
12457
|
+
401:
|
|
12458
|
+
description: Unauthorized
|
|
12459
|
+
404:
|
|
12460
|
+
description: Not found
|
|
12461
|
+
requestBody:
|
|
12462
|
+
required: true
|
|
12463
|
+
content:
|
|
12464
|
+
application/json:
|
|
12465
|
+
schema:
|
|
12466
|
+
type: object
|
|
12467
|
+
additionalProperties: true
|
|
12420
12468
|
/{zone}/collection/{collectionId}/app/{appId}/recordsn)}/aggregate:
|
|
12421
12469
|
post:
|
|
12422
12470
|
tags:
|
|
@@ -12550,7 +12598,7 @@ paths:
|
|
|
12550
12598
|
get:
|
|
12551
12599
|
tags:
|
|
12552
12600
|
- records
|
|
12553
|
-
summary: "
|
|
12601
|
+
summary: "List records with optional query parameters GET /records / export async function list( collectionId: string, appId: stri"
|
|
12554
12602
|
operationId: records_get
|
|
12555
12603
|
security: []
|
|
12556
12604
|
parameters:
|
|
@@ -15602,26 +15650,49 @@ components:
|
|
|
15602
15650
|
type: object
|
|
15603
15651
|
properties:
|
|
15604
15652
|
cases:
|
|
15605
|
-
$ref: "#/components/schemas/
|
|
15653
|
+
$ref: "#/components/schemas/PublicCreateObjectRule"
|
|
15606
15654
|
threads:
|
|
15607
|
-
$ref: "#/components/schemas/
|
|
15655
|
+
$ref: "#/components/schemas/PublicCreateObjectRule"
|
|
15608
15656
|
records:
|
|
15609
|
-
$ref: "#/components/schemas/
|
|
15610
|
-
|
|
15657
|
+
$ref: "#/components/schemas/PublicCreateObjectRule"
|
|
15658
|
+
PublicCreateObjectRule:
|
|
15611
15659
|
type: object
|
|
15612
15660
|
properties:
|
|
15613
|
-
allow:
|
|
15614
|
-
type: object
|
|
15615
|
-
additionalProperties: true
|
|
15616
15661
|
anonymous:
|
|
15617
|
-
$ref: "#/components/schemas/
|
|
15662
|
+
$ref: "#/components/schemas/PublicCreateBranch"
|
|
15618
15663
|
authenticated:
|
|
15619
|
-
$ref: "#/components/schemas/
|
|
15664
|
+
$ref: "#/components/schemas/PublicCreateBranch"
|
|
15665
|
+
PublicCreateBranch:
|
|
15666
|
+
type: object
|
|
15667
|
+
properties:
|
|
15668
|
+
allow:
|
|
15669
|
+
type: boolean
|
|
15620
15670
|
enforce:
|
|
15621
15671
|
type: object
|
|
15622
15672
|
additionalProperties: true
|
|
15673
|
+
visibility:
|
|
15674
|
+
type: string
|
|
15675
|
+
enum:
|
|
15676
|
+
- public
|
|
15677
|
+
- owner
|
|
15678
|
+
- admin
|
|
15679
|
+
status:
|
|
15680
|
+
type: string
|
|
15681
|
+
edit:
|
|
15682
|
+
type: object
|
|
15683
|
+
additionalProperties: true
|
|
15684
|
+
editToken:
|
|
15685
|
+
type: boolean
|
|
15686
|
+
windowMinutes:
|
|
15687
|
+
type: number
|
|
15623
15688
|
required:
|
|
15624
15689
|
- allow
|
|
15690
|
+
- editToken
|
|
15691
|
+
CreateRecordResponse:
|
|
15692
|
+
type: object
|
|
15693
|
+
properties:
|
|
15694
|
+
editToken:
|
|
15695
|
+
type: string
|
|
15625
15696
|
Asset:
|
|
15626
15697
|
type: object
|
|
15627
15698
|
properties:
|
|
@@ -22544,6 +22615,66 @@ components:
|
|
|
22544
22615
|
metadata:
|
|
22545
22616
|
type: object
|
|
22546
22617
|
additionalProperties: true
|
|
22618
|
+
NavigationRequest:
|
|
22619
|
+
type: object
|
|
22620
|
+
properties:
|
|
22621
|
+
appId:
|
|
22622
|
+
type: string
|
|
22623
|
+
deepLink:
|
|
22624
|
+
type: string
|
|
22625
|
+
params:
|
|
22626
|
+
type: object
|
|
22627
|
+
additionalProperties:
|
|
22628
|
+
type: string
|
|
22629
|
+
productId:
|
|
22630
|
+
type: string
|
|
22631
|
+
proofId:
|
|
22632
|
+
type: string
|
|
22633
|
+
required:
|
|
22634
|
+
- appId
|
|
22635
|
+
SmartLinksWidgetProps:
|
|
22636
|
+
type: object
|
|
22637
|
+
properties:
|
|
22638
|
+
collectionId:
|
|
22639
|
+
type: string
|
|
22640
|
+
appId:
|
|
22641
|
+
type: string
|
|
22642
|
+
productId:
|
|
22643
|
+
type: string
|
|
22644
|
+
proofId:
|
|
22645
|
+
type: string
|
|
22646
|
+
user:
|
|
22647
|
+
type: object
|
|
22648
|
+
additionalProperties: true
|
|
22649
|
+
id:
|
|
22650
|
+
type: string
|
|
22651
|
+
email:
|
|
22652
|
+
type: string
|
|
22653
|
+
name:
|
|
22654
|
+
type: string
|
|
22655
|
+
admin:
|
|
22656
|
+
type: boolean
|
|
22657
|
+
SL:
|
|
22658
|
+
type: object
|
|
22659
|
+
additionalProperties: true
|
|
22660
|
+
publicPortalUrl:
|
|
22661
|
+
type: string
|
|
22662
|
+
size:
|
|
22663
|
+
type: string
|
|
22664
|
+
enum:
|
|
22665
|
+
- compact
|
|
22666
|
+
- standard
|
|
22667
|
+
- large
|
|
22668
|
+
lang:
|
|
22669
|
+
type: string
|
|
22670
|
+
translations:
|
|
22671
|
+
type: object
|
|
22672
|
+
additionalProperties:
|
|
22673
|
+
type: string
|
|
22674
|
+
required:
|
|
22675
|
+
- collectionId
|
|
22676
|
+
- appId
|
|
22677
|
+
- SL
|
|
22547
22678
|
AppConfigOptions:
|
|
22548
22679
|
type: object
|
|
22549
22680
|
properties:
|
|
@@ -369,23 +369,116 @@ export interface RelatedResponse {
|
|
|
369
369
|
records: AppRecord[];
|
|
370
370
|
}
|
|
371
371
|
/**
|
|
372
|
-
*
|
|
372
|
+
* Top-level public-create policy stored under the `publicCreate` key of an
|
|
373
|
+
* app config document. Controls which caller types may create objects on
|
|
374
|
+
* **public** App Objects endpoints.
|
|
375
|
+
*
|
|
376
|
+
* Set via `POST /api/v1/admin/collection/:collectionId/apps/:appId` with the
|
|
377
|
+
* policy as the request body (merged over any existing config).
|
|
378
|
+
*
|
|
379
|
+
* The server reads this document at request time — no cache invalidation or
|
|
380
|
+
* service restart is required after changing it.
|
|
373
381
|
*/
|
|
374
382
|
export interface PublicCreatePolicy {
|
|
375
|
-
cases?:
|
|
376
|
-
threads?:
|
|
377
|
-
records?:
|
|
383
|
+
cases?: PublicCreateObjectRule;
|
|
384
|
+
threads?: PublicCreateObjectRule;
|
|
385
|
+
records?: PublicCreateObjectRule;
|
|
378
386
|
}
|
|
379
387
|
/**
|
|
380
|
-
*
|
|
388
|
+
* Per-object-type rule within a {@link PublicCreatePolicy}.
|
|
389
|
+
* Each caller class (`anonymous`, `authenticated`) has its own independent
|
|
390
|
+
* branch so you can apply different enforcement for each.
|
|
381
391
|
*/
|
|
382
|
-
export interface
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
392
|
+
export interface PublicCreateObjectRule {
|
|
393
|
+
/** Rules for unauthenticated (anonymous) callers */
|
|
394
|
+
anonymous?: PublicCreateBranch;
|
|
395
|
+
/** Rules for authenticated (signed-in contact) callers */
|
|
396
|
+
authenticated?: PublicCreateBranch;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Policy branch for a single caller class.
|
|
400
|
+
*
|
|
401
|
+
* ### Visibility enforcement guard-rails
|
|
402
|
+
*
|
|
403
|
+
* The server silently corrects misconfigured visibility values:
|
|
404
|
+
*
|
|
405
|
+
* | Caller type | `enforce.visibility` supplied | Server overrides to |
|
|
406
|
+
* |-----------------|-------------------------------|----------------------|
|
|
407
|
+
* | `anonymous` | `'owner'` | `'admin'` |
|
|
408
|
+
* | `authenticated` | `'public'` | `'owner'` |
|
|
409
|
+
*
|
|
410
|
+
* These guards exist because anonymous callers have no identity to own a
|
|
411
|
+
* record, and `'public'` visibility for authenticated-only objects would be
|
|
412
|
+
* a misconfiguration.
|
|
413
|
+
*/
|
|
414
|
+
export interface PublicCreateBranch {
|
|
415
|
+
/** Whether creation is permitted for this caller class */
|
|
416
|
+
allow: boolean;
|
|
417
|
+
/**
|
|
418
|
+
* Field values merged **over** the caller's request body before writing.
|
|
419
|
+
* Use this to lock down `visibility` and `status` regardless of what the
|
|
420
|
+
* client sends.
|
|
421
|
+
*/
|
|
387
422
|
enforce?: {
|
|
388
|
-
|
|
389
|
-
|
|
423
|
+
visibility?: 'public' | 'owner' | 'admin';
|
|
424
|
+
status?: string;
|
|
425
|
+
};
|
|
426
|
+
/**
|
|
427
|
+
* Anonymous edit-token configuration.
|
|
428
|
+
* **Records only** — ignored for cases and threads.
|
|
429
|
+
*
|
|
430
|
+
* When `editToken: true`, the server generates a one-time 256-bit hex token
|
|
431
|
+
* on anonymous record creation, stores it in `admin.editToken` (never
|
|
432
|
+
* exposed to public / owner responses), and returns it **once** in the
|
|
433
|
+
* creation response under the `editToken` key.
|
|
434
|
+
*
|
|
435
|
+
* The client can then pass that token as the `X-Edit-Token` header on
|
|
436
|
+
* `PATCH /records/:recordId` to amend the `data` zone without
|
|
437
|
+
* authentication.
|
|
438
|
+
*
|
|
439
|
+
* @see {@link CreateRecordResponse} — creation response shape
|
|
440
|
+
* @see {@link records.updateWithToken} — SDK method for the amendment call
|
|
441
|
+
*/
|
|
442
|
+
edit?: {
|
|
443
|
+
/** Enable edit-token generation on anonymous record creation */
|
|
444
|
+
editToken: boolean;
|
|
445
|
+
/**
|
|
446
|
+
* Optional expiry window in minutes from `createdAt`.
|
|
447
|
+
* After this many minutes the token is rejected with HTTP 403
|
|
448
|
+
* `EDIT_WINDOW_EXPIRED`. Omit for no expiry.
|
|
449
|
+
*/
|
|
450
|
+
windowMinutes?: number;
|
|
390
451
|
};
|
|
391
452
|
}
|
|
453
|
+
/**
|
|
454
|
+
* Response from `app.records.create()` when the caller is anonymous and the
|
|
455
|
+
* app's `publicCreate.records.anonymous.edit.editToken` policy is `true`.
|
|
456
|
+
*
|
|
457
|
+
* The `editToken` field is present **only on the creation response** — it is
|
|
458
|
+
* stored in the record's `admin` zone and never returned again. Store it
|
|
459
|
+
* client-side immediately.
|
|
460
|
+
*
|
|
461
|
+
* Use `app.records.updateWithToken()` to amend the record's `data` zone with
|
|
462
|
+
* this token.
|
|
463
|
+
*
|
|
464
|
+
* @example
|
|
465
|
+
* ```ts
|
|
466
|
+
* const response = await app.records.create(collectionId, appId, {
|
|
467
|
+
* recordType: 'payment',
|
|
468
|
+
* visibility: 'public',
|
|
469
|
+
* data: { amount: 9900, currency: 'USD' },
|
|
470
|
+
* })
|
|
471
|
+
* // response.editToken is present when the policy has editToken: true
|
|
472
|
+
* const editToken = response.editToken
|
|
473
|
+
* ```
|
|
474
|
+
*/
|
|
475
|
+
export interface CreateRecordResponse extends AppRecord {
|
|
476
|
+
/**
|
|
477
|
+
* Short-lived edit token. Present only when:
|
|
478
|
+
* 1. The caller is anonymous, AND
|
|
479
|
+
* 2. The app policy has `publicCreate.records.anonymous.edit.editToken: true`
|
|
480
|
+
*
|
|
481
|
+
* This value is returned **once** and cannot be retrieved again.
|
|
482
|
+
*/
|
|
483
|
+
editToken?: string;
|
|
484
|
+
}
|
package/dist/types/index.d.ts
CHANGED
package/dist/types/index.js
CHANGED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured navigation request emitted via the `onNavigate` prop when a
|
|
3
|
+
* widget or container needs to navigate the parent platform shell to another
|
|
4
|
+
* app or to a specific deep-link within an app.
|
|
5
|
+
*
|
|
6
|
+
* The portal orchestrator receives this object and performs the navigation
|
|
7
|
+
* while preserving hierarchy context (`collectionId`, `productId`, etc.).
|
|
8
|
+
*
|
|
9
|
+
* Legacy callers may still pass a plain string path; the `onNavigate`
|
|
10
|
+
* signature accepts both. New widgets and containers should always use the
|
|
11
|
+
* structured form.
|
|
12
|
+
*/
|
|
13
|
+
export interface NavigationRequest {
|
|
14
|
+
/** Target app ID to activate */
|
|
15
|
+
appId: string;
|
|
16
|
+
/** Deep link / page within the target app (forwarded as `pageId`) */
|
|
17
|
+
deepLink?: string;
|
|
18
|
+
/** Extra URL params forwarded to the target app */
|
|
19
|
+
params?: Record<string, string>;
|
|
20
|
+
/** Optionally switch to a specific product before showing the app */
|
|
21
|
+
productId?: string;
|
|
22
|
+
/** Optionally switch to a specific proof before showing the app */
|
|
23
|
+
proofId?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Standard props received by every SmartLinks widget and container.
|
|
27
|
+
*
|
|
28
|
+
* These are passed by the parent platform (portal shell, OrchestratedPortal,
|
|
29
|
+
* or a custom host) when mounting a widget or container component.
|
|
30
|
+
*
|
|
31
|
+
* **`SL` type note:** at runtime `SL` is the fully-initialised
|
|
32
|
+
* `@proveanything/smartlinks` SDK instance. It is typed as
|
|
33
|
+
* `Record<string, unknown>` here to avoid a circular self-import; cast to
|
|
34
|
+
* a more specific type in your app code if needed.
|
|
35
|
+
*/
|
|
36
|
+
export interface SmartLinksWidgetProps {
|
|
37
|
+
/** Collection context — required */
|
|
38
|
+
collectionId: string;
|
|
39
|
+
/** App identifier — required */
|
|
40
|
+
appId: string;
|
|
41
|
+
/** Product context — present when the portal is scoped to a product */
|
|
42
|
+
productId?: string;
|
|
43
|
+
/** Proof (scan/instance) context */
|
|
44
|
+
proofId?: string;
|
|
45
|
+
/** Authenticated user info, if the viewer is logged in */
|
|
46
|
+
user?: {
|
|
47
|
+
id?: string;
|
|
48
|
+
email?: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
admin?: boolean;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Pre-initialised SmartLinks SDK instance provided by the parent platform.
|
|
54
|
+
* At runtime this is `typeof import('@proveanything/smartlinks')`.
|
|
55
|
+
*/
|
|
56
|
+
SL: Record<string, unknown>;
|
|
57
|
+
/**
|
|
58
|
+
* Navigation callback. Emit a `NavigationRequest` to ask the parent
|
|
59
|
+
* platform to navigate to another app. A legacy plain-string path is also
|
|
60
|
+
* accepted for backward compatibility.
|
|
61
|
+
*/
|
|
62
|
+
onNavigate?: (request: NavigationRequest | string) => void;
|
|
63
|
+
/** Base URL of the full public portal, used for constructing deep links */
|
|
64
|
+
publicPortalUrl?: string;
|
|
65
|
+
/** Responsive size hint */
|
|
66
|
+
size?: 'compact' | 'standard' | 'large';
|
|
67
|
+
/** BCP-47 language code (e.g. `'en'`, `'fr'`) */
|
|
68
|
+
lang?: string;
|
|
69
|
+
/** Translation key overrides */
|
|
70
|
+
translations?: Record<string, string>;
|
|
71
|
+
}
|
package/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.19 | Generated: 2026-04-16T12:41:11.180Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -1957,22 +1957,51 @@ interface RelatedResponse {
|
|
|
1957
1957
|
**PublicCreatePolicy** (interface)
|
|
1958
1958
|
```typescript
|
|
1959
1959
|
interface PublicCreatePolicy {
|
|
1960
|
-
cases?:
|
|
1961
|
-
threads?:
|
|
1962
|
-
records?:
|
|
1960
|
+
cases?: PublicCreateObjectRule
|
|
1961
|
+
threads?: PublicCreateObjectRule
|
|
1962
|
+
records?: PublicCreateObjectRule
|
|
1963
1963
|
}
|
|
1964
1964
|
```
|
|
1965
1965
|
|
|
1966
|
-
**
|
|
1966
|
+
**PublicCreateObjectRule** (interface)
|
|
1967
1967
|
```typescript
|
|
1968
|
-
interface
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1968
|
+
interface PublicCreateObjectRule {
|
|
1969
|
+
anonymous?: PublicCreateBranch
|
|
1970
|
+
authenticated?: PublicCreateBranch
|
|
1971
|
+
}
|
|
1972
|
+
```
|
|
1973
|
+
|
|
1974
|
+
**PublicCreateBranch** (interface)
|
|
1975
|
+
```typescript
|
|
1976
|
+
interface PublicCreateBranch {
|
|
1977
|
+
allow: boolean
|
|
1978
|
+
* Field values merged **over** the caller's request body before writing.
|
|
1979
|
+
* Use this to lock down `visibility` and `status` regardless of what the
|
|
1980
|
+
* client sends.
|
|
1973
1981
|
enforce?: {
|
|
1974
|
-
|
|
1975
|
-
|
|
1982
|
+
visibility?: 'public' | 'owner' | 'admin'
|
|
1983
|
+
status?: string
|
|
1984
|
+
}
|
|
1985
|
+
* Anonymous edit-token configuration.
|
|
1986
|
+
* **Records only** — ignored for cases and threads.
|
|
1987
|
+
*
|
|
1988
|
+
* When `editToken: true`, the server generates a one-time 256-bit hex token
|
|
1989
|
+
* on anonymous record creation, stores it in `admin.editToken` (never
|
|
1990
|
+
* exposed to public / owner responses), and returns it **once** in the
|
|
1991
|
+
* creation response under the `editToken` key.
|
|
1992
|
+
*
|
|
1993
|
+
* The client can then pass that token as the `X-Edit-Token` header on
|
|
1994
|
+
* `PATCH /records/:recordId` to amend the `data` zone without
|
|
1995
|
+
* authentication.
|
|
1996
|
+
*
|
|
1997
|
+
* @see {@link CreateRecordResponse} — creation response shape
|
|
1998
|
+
* @see {@link records.updateWithToken} — SDK method for the amendment call
|
|
1999
|
+
edit?: {
|
|
2000
|
+
editToken: boolean
|
|
2001
|
+
* Optional expiry window in minutes from `createdAt`.
|
|
2002
|
+
* After this many minutes the token is rejected with HTTP 403
|
|
2003
|
+
* `EDIT_WINDOW_EXPIRED`. Omit for no expiry.
|
|
2004
|
+
windowMinutes?: number
|
|
1976
2005
|
}
|
|
1977
2006
|
}
|
|
1978
2007
|
```
|
|
@@ -6654,6 +6683,46 @@ interface TranslationUpdateRequest {
|
|
|
6654
6683
|
|
|
6655
6684
|
**VariantUpdateRequest** = `any`
|
|
6656
6685
|
|
|
6686
|
+
### widgets
|
|
6687
|
+
|
|
6688
|
+
**NavigationRequest** (interface)
|
|
6689
|
+
```typescript
|
|
6690
|
+
interface NavigationRequest {
|
|
6691
|
+
appId: string
|
|
6692
|
+
deepLink?: string
|
|
6693
|
+
params?: Record<string, string>
|
|
6694
|
+
productId?: string
|
|
6695
|
+
proofId?: string
|
|
6696
|
+
}
|
|
6697
|
+
```
|
|
6698
|
+
|
|
6699
|
+
**SmartLinksWidgetProps** (interface)
|
|
6700
|
+
```typescript
|
|
6701
|
+
interface SmartLinksWidgetProps {
|
|
6702
|
+
collectionId: string
|
|
6703
|
+
appId: string
|
|
6704
|
+
productId?: string
|
|
6705
|
+
proofId?: string
|
|
6706
|
+
user?: {
|
|
6707
|
+
id?: string
|
|
6708
|
+
email?: string
|
|
6709
|
+
name?: string
|
|
6710
|
+
admin?: boolean
|
|
6711
|
+
}
|
|
6712
|
+
* Pre-initialised SmartLinks SDK instance provided by the parent platform.
|
|
6713
|
+
* At runtime this is `typeof import('@proveanything/smartlinks')`.
|
|
6714
|
+
SL: Record<string, unknown>
|
|
6715
|
+
* Navigation callback. Emit a `NavigationRequest` to ask the parent
|
|
6716
|
+
* platform to navigate to another app. A legacy plain-string path is also
|
|
6717
|
+
* accepted for backward compatibility.
|
|
6718
|
+
onNavigate?: (request: NavigationRequest | string) => void
|
|
6719
|
+
publicPortalUrl?: string
|
|
6720
|
+
size?: 'compact' | 'standard' | 'large'
|
|
6721
|
+
lang?: string
|
|
6722
|
+
translations?: Record<string, string>
|
|
6723
|
+
}
|
|
6724
|
+
```
|
|
6725
|
+
|
|
6657
6726
|
### appConfiguration (api)
|
|
6658
6727
|
|
|
6659
6728
|
**AppConfigOptions** (type)
|
|
@@ -7024,8 +7093,8 @@ General-purpose structured app objects. Use these when a simple scoped data item
|
|
|
7024
7093
|
**create**(collectionId: string,
|
|
7025
7094
|
appId: string,
|
|
7026
7095
|
input: CreateRecordInput,
|
|
7027
|
-
admin: boolean = false) → `Promise<
|
|
7028
|
-
Create a new record POST /records
|
|
7096
|
+
admin: boolean = false) → `Promise<CreateRecordResponse>`
|
|
7097
|
+
Create a new record POST /records When called on the public endpoint (admin = false) with an anonymous caller, and the app's `publicCreate.records.anonymous.edit.editToken` policy is enabled, the response includes a one-time `editToken` string. Store it immediately — it is never returned again.
|
|
7029
7098
|
|
|
7030
7099
|
**list**(collectionId: string,
|
|
7031
7100
|
appId: string,
|
|
@@ -7046,6 +7115,13 @@ Get a single record by ID GET /records/:recordId
|
|
|
7046
7115
|
admin: boolean = false) → `Promise<AppRecord>`
|
|
7047
7116
|
Update a record PATCH /records/:recordId Admin can update any field, public (owner) can only update data and owner
|
|
7048
7117
|
|
|
7118
|
+
**updateWithToken**(collectionId: string,
|
|
7119
|
+
appId: string,
|
|
7120
|
+
recordId: string,
|
|
7121
|
+
data: Record<string, unknown>,
|
|
7122
|
+
editToken: string) → `Promise<AppRecord>`
|
|
7123
|
+
Amend the `data` zone of a record using an anonymous edit token. PATCH /records/:recordId (public endpoint, no auth) This is the follow-up call after an anonymous `create()` that returned an `editToken`. Present the token via `X-Edit-Token` — the server validates it with a constant-time comparison and, if `windowMinutes` is configured in the policy, checks that the token has not expired. **Scope:** only the `data` zone may be modified via this path. `owner`, `admin`, `status`, `visibility`, and indexed fields are immutable to anonymous token holders. ```ts const record = await app.records.create(collectionId, appId, { recordType: 'payment', visibility: 'public', data: { amount: 9900, currency: 'USD' }, }) const { editToken } = record // store this immediately! // Later, once the payment gateway confirms: const updated = await app.records.updateWithToken( collectionId, appId, record.id, { amount: 9900, currency: 'USD', transactionId: 'txn_abc123' }, editToken, ) ``` ### Error codes | HTTP | `errorCode` | Meaning | |------|-----------------------|---------------------------------------------------| | 401 | `UNAUTHORIZED` | No auth token and no `X-Edit-Token` header | | 403 | `FORBIDDEN` | Policy not enabled, or token does not match | | 403 | `EDIT_WINDOW_EXPIRED` | `windowMinutes` elapsed since record creation | | 404 | `NOT_FOUND` | Record does not exist |
|
|
7124
|
+
|
|
7049
7125
|
**remove**(collectionId: string,
|
|
7050
7126
|
appId: string,
|
|
7051
7127
|
recordId: string,
|