@go-labs-sg/rsvp 0.10.3 → 0.12.0
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 +65 -0
- package/dist/index.js +19 -0
- package/examples/event-page-template.json +65 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -67,6 +67,38 @@ automation can still record arguments independently of the CLI's error output.
|
|
|
67
67
|
|
|
68
68
|
Use `rsvp help` for the command catalogue. Every response is a JSON envelope on stdout; errors and diagnostics go to stderr. `rsvp manifest` emits the machine-readable command reference for tooling.
|
|
69
69
|
|
|
70
|
+
## Public event page and images
|
|
71
|
+
|
|
72
|
+
Use `rsvp event get --organization-id <id> --event-id <id>` to inspect the
|
|
73
|
+
current `configurationVersion`, page content in `metadataJson.detailsPage`, and
|
|
74
|
+
the separate `bannerImageKey` and `publicTheme.backgroundImageKey`. To update
|
|
75
|
+
the public details page, copy `examples/event-page-template.json`, replace the
|
|
76
|
+
organization ID, event ID, and version, then edit its rich text and timeline
|
|
77
|
+
items. The version must match the event's current `configurationVersion`.
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
rsvp event page update \
|
|
81
|
+
--allow-state-change \
|
|
82
|
+
--target evt_123 \
|
|
83
|
+
--payload "$(cat event-page.json)"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The command supplies `section: "DETAILS_PAGE"` to the revision-checked setup
|
|
87
|
+
API. One `TIMELINE` section contains many ordered `timelineItems`; each item
|
|
88
|
+
has a time, rich title, and optional rich details. Other sections use
|
|
89
|
+
`layout: "STANDARD"` and their own rich heading and content. The existing
|
|
90
|
+
`event setup step update` command can send the same data when its payload
|
|
91
|
+
includes `section: "DETAILS_PAGE"`.
|
|
92
|
+
|
|
93
|
+
Banner and background images are separate event assets. Use
|
|
94
|
+
`event banner upload create` or `event background upload create` to get the
|
|
95
|
+
corresponding upload URL and key, upload the image to that URL, then set the
|
|
96
|
+
key with `event banner update` or `event background update`. These update
|
|
97
|
+
commands also require the current configuration version and accept a null
|
|
98
|
+
key to clear the image. The public event guide reuses both assets. Campaign
|
|
99
|
+
HTML can link to the guide with `{{eventDetailsUrl}}`; `{{eventUrl}}` still
|
|
100
|
+
points to the registration page.
|
|
101
|
+
|
|
70
102
|
For a read-only registration-journey diagnosis, inspect the event, draft,
|
|
71
103
|
published versions, and event-owned resources together:
|
|
72
104
|
|
|
@@ -77,6 +109,39 @@ rsvp event flow versions list --organization-id org_123 --event-id evt_123
|
|
|
77
109
|
rsvp event flow resources get --organization-id org_123 --event-id evt_123
|
|
78
110
|
```
|
|
79
111
|
|
|
112
|
+
## Administrator registration for an invitee
|
|
113
|
+
|
|
114
|
+
Inspect the invitee's active registration form and current registration version
|
|
115
|
+
before submitting. The context includes the published flow definition, invitee,
|
|
116
|
+
and existing registration (if any):
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
rsvp event flow admin registration context get \
|
|
120
|
+
--ack-sensitive-data \
|
|
121
|
+
--payload '{"organizationId":"org_123","eventId":"evt_123","inviteeId":"invitee_123"}'
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Use the returned `flowVersionId` and `expectedRegistrationVersion` in the
|
|
125
|
+
submission. Set `expectedOutcomeId` to the outcome selected by the answers in
|
|
126
|
+
the published definition, and provide answers keyed by each field's `outputKey`.
|
|
127
|
+
A new UUID `idempotencyKey` identifies this submission. The audit reason records
|
|
128
|
+
why an administrator submitted on the invitee's behalf.
|
|
129
|
+
|
|
130
|
+
```sh
|
|
131
|
+
rsvp event flow admin registration submit \
|
|
132
|
+
--ack-sensitive-data \
|
|
133
|
+
--allow-state-change \
|
|
134
|
+
--target invitee_123 \
|
|
135
|
+
--payload '{"organizationId":"org_123","eventId":"evt_123","inviteeId":"invitee_123","flowVersionId":"flow_version_123","answers":{"attendance":"ATTENDING"},"expectedOutcomeId":"attending","expectedRegistrationVersion":0,"idempotencyKey":"9dd0ba39-b55e-4e65-aa3e-d08242c45b8f","auditReason":"Recorded response by phone"}'
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Replace the example answer key and value with those required by the returned
|
|
139
|
+
definition. If the flow requires a consent override, include a nonempty
|
|
140
|
+
`consentOverrideReason` in the submission payload. The override records the
|
|
141
|
+
administrator's reason in the audit trail; it does not record attendee consent
|
|
142
|
+
or a signature. A stale registration version or flow version is rejected; fetch
|
|
143
|
+
the context again before retrying with a new idempotency key.
|
|
144
|
+
|
|
80
145
|
Create an immutable menu version with an explicit mutation acknowledgement. The
|
|
81
146
|
target is the event ID in the payload:
|
|
82
147
|
|
package/dist/index.js
CHANGED
|
@@ -6046,6 +6046,19 @@ var commands = {
|
|
|
6046
6046
|
scope: "event",
|
|
6047
6047
|
summary: "List the menus, consent documents, images, and seat maps available to the registration flow."
|
|
6048
6048
|
},
|
|
6049
|
+
"event flow admin registration context get": {
|
|
6050
|
+
effects: ["sensitive-data"],
|
|
6051
|
+
operation: (api, input) => api.eventFlow.getAdminRegistrationContext.query(input),
|
|
6052
|
+
payloadOnly: true,
|
|
6053
|
+
summary: "Get an invitee's published flow and registration version (--payload JSON)."
|
|
6054
|
+
},
|
|
6055
|
+
"event flow admin registration submit": {
|
|
6056
|
+
effects: ["sensitive-data", "state-change"],
|
|
6057
|
+
operation: (api, input) => api.eventFlow.adminSubmit.mutate(input),
|
|
6058
|
+
payloadOnly: true,
|
|
6059
|
+
targetKey: "inviteeId",
|
|
6060
|
+
summary: "Register an invitee with flow answers and an audit reason (--payload JSON)."
|
|
6061
|
+
},
|
|
6049
6062
|
"event flow consent version create": {
|
|
6050
6063
|
effects: ["state-change"],
|
|
6051
6064
|
operation: (api, input) => api.eventFlow.createConsentVersion.mutate(input),
|
|
@@ -6319,6 +6332,8 @@ Object.assign(commands, {
|
|
|
6319
6332
|
"admission identity-exception resolve": payloadCommand((api, input) => api.admission.resolveIdentityException.mutate(input), "Resolve an identity exception (--payload JSON).", ["sensitive-data", "state-change"]),
|
|
6320
6333
|
"audit list": payloadCommand((api, input) => api.audit.listEventActivity.query(input), "List event audit activity (--payload JSON).", ["sensitive-data"]),
|
|
6321
6334
|
"event check-in qr": payloadCommand((api, input) => api.event.checkInByQr.mutate(input), "Check in using a QR token (--payload JSON).", ["state-change"]),
|
|
6335
|
+
"event banner upload create": payloadCommand((api, input) => api.event.createBannerUpload.mutate(input), "Create a banner-image upload URL (--payload JSON).", ["external-write", "state-change"], "eventId"),
|
|
6336
|
+
"event banner update": payloadCommand((api, input) => api.event.updateBanner.mutate(input), "Set or clear the event banner image (--payload JSON).", ["state-change"], "eventId"),
|
|
6322
6337
|
"event background upload create": payloadCommand((api, input) => api.event.createBackgroundUpload.mutate(input), "Create a background-image upload URL (--payload JSON).", ["external-write", "state-change"]),
|
|
6323
6338
|
"event background update": payloadCommand((api, input) => api.event.updateBackground.mutate(input), "Set or clear an attendee background image (--payload JSON).", ["state-change"]),
|
|
6324
6339
|
"event walk-in create": payloadCommand((api, input) => api.event.createWalkIn.mutate(input), "Create a walk-in registration (--payload JSON).", ["sensitive-data", "state-change"]),
|
|
@@ -6346,6 +6361,10 @@ Object.assign(commands, {
|
|
|
6346
6361
|
"event reminder list": payloadCommand((api, input) => api.event.listReminderSegments.query(input), "List reminder segments (--payload JSON).", ["sensitive-data"]),
|
|
6347
6362
|
"event rsvp submit": payloadCommand((api, input) => api.event.submitRsvp.mutate(input), "Submit the caller's registration (--payload JSON).", ["sensitive-data", "state-change"]),
|
|
6348
6363
|
"event setup step update": payloadCommand((api, input) => api.event.updateSetupStep.mutate(input), "Update one event setup step (--payload JSON).", ["state-change"]),
|
|
6364
|
+
"event page update": payloadCommand((api, input) => api.event.updateSetupStep.mutate({
|
|
6365
|
+
...input,
|
|
6366
|
+
section: "DETAILS_PAGE"
|
|
6367
|
+
}), "Update the public event details page (--payload JSON).", ["state-change"], "eventId"),
|
|
6349
6368
|
"organization access check": payloadCommand((api, input) => api.organization.checkOrganizationAccess.query(input), "Check organization access (--payload JSON)."),
|
|
6350
6369
|
"organization manage-access check": payloadCommand((api, input) => api.organization.checkOrganizationManageAccess.query(input), "Check organization management access (--payload JSON)."),
|
|
6351
6370
|
"organization slug check": payloadCommand((api, input) => api.organization.checkSlug.mutate(input), "Check an organization slug (--payload JSON)."),
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"organizationId": "replace-with-organization-id",
|
|
3
|
+
"eventId": "replace-with-event-id",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"detailsPage": {
|
|
6
|
+
"titleRichText": {
|
|
7
|
+
"html": "<p>Annual Awards 2026</p>",
|
|
8
|
+
"json": {
|
|
9
|
+
"type": "doc",
|
|
10
|
+
"content": [
|
|
11
|
+
{
|
|
12
|
+
"type": "paragraph",
|
|
13
|
+
"content": [{ "type": "text", "text": "Annual Awards 2026" }]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"sections": [
|
|
19
|
+
{
|
|
20
|
+
"id": "a9e5ea4a-3c9b-424e-b153-7ad8c4c0d2eb",
|
|
21
|
+
"layout": "TIMELINE",
|
|
22
|
+
"titleRichText": {
|
|
23
|
+
"html": "<p>Programme</p>",
|
|
24
|
+
"json": {
|
|
25
|
+
"type": "doc",
|
|
26
|
+
"content": [
|
|
27
|
+
{
|
|
28
|
+
"type": "paragraph",
|
|
29
|
+
"content": [{ "type": "text", "text": "Programme" }]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"contentRichText": {
|
|
35
|
+
"html": "<p></p>",
|
|
36
|
+
"json": { "type": "doc", "content": [{ "type": "paragraph" }] }
|
|
37
|
+
},
|
|
38
|
+
"timelineItems": [
|
|
39
|
+
{
|
|
40
|
+
"id": "218745a9-4464-4085-836a-393533c4180d",
|
|
41
|
+
"time": "5:30 PM",
|
|
42
|
+
"titleRichText": {
|
|
43
|
+
"html": "<p>Registration and photos</p>",
|
|
44
|
+
"json": {
|
|
45
|
+
"type": "doc",
|
|
46
|
+
"content": [
|
|
47
|
+
{
|
|
48
|
+
"type": "paragraph",
|
|
49
|
+
"content": [
|
|
50
|
+
{ "type": "text", "text": "Registration and photos" }
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"contentRichText": {
|
|
57
|
+
"html": "<p></p>",
|
|
58
|
+
"json": { "type": "doc", "content": [{ "type": "paragraph" }] }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
}
|