@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 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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@go-labs-sg/rsvp",
3
- "version": "0.10.3",
3
+ "version": "0.12.0",
4
4
  "description": "RSVP CLI for authorized event operations.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",