@go-labs-sg/rsvp 0.5.0 → 0.8.1

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,463 @@
1
+ {
2
+ "eventId": "cmthccwii000501lgluebz2v2",
3
+ "organizationId": "kh27TwiqDX8OJ1a28GJVW4oG9bhP7Ld5",
4
+ "expectedRevision": 20,
5
+ "definition": {
6
+ "authentication": {
7
+ "mode": "EMPLOYEE_ID_EMAIL_OTP",
8
+ "stepUpFor": []
9
+ },
10
+ "communications": {
11
+ "internal": {
12
+ "enabled": true,
13
+ "includeResponseDetails": true,
14
+ "notifyOn": ["CREATED", "CHANGED", "DECLINED"],
15
+ "recipients": ["events@getout.sg"]
16
+ },
17
+ "participant": {
18
+ "enabled": true,
19
+ "includeResponseDetails": true,
20
+ "replyTo": "events@getout.sg",
21
+ "supportEmail": "events@getout.sg",
22
+ "templates": [
23
+ {
24
+ "body": "Your registration has been received. This is your registration receipt. Check-in QR codes will be sent to your email address by 13Nov2026. Contact events@getout.sg if you need help.",
25
+ "outcomeId": "attending",
26
+ "subject": "D&D 2026 registration received"
27
+ },
28
+ {
29
+ "body": "Your response has been received. Contact events@getout.sg if you need help.",
30
+ "outcomeId": "declined",
31
+ "subject": "D&D 2026 response received"
32
+ }
33
+ ]
34
+ }
35
+ },
36
+ "contextVariables": [
37
+ {
38
+ "key": "canBringGuest",
39
+ "kind": "CAPABILITY",
40
+ "valueKind": "BOOLEAN"
41
+ },
42
+ {
43
+ "key": "canChangeRegistration",
44
+ "kind": "CAPABILITY",
45
+ "valueKind": "BOOLEAN"
46
+ },
47
+ {
48
+ "key": "canSelectSeats",
49
+ "kind": "CAPABILITY",
50
+ "valueKind": "BOOLEAN"
51
+ },
52
+ {
53
+ "key": "department",
54
+ "kind": "IDENTITY",
55
+ "valueKind": "STRING"
56
+ },
57
+ {
58
+ "key": "displayName",
59
+ "kind": "IDENTITY",
60
+ "valueKind": "STRING"
61
+ },
62
+ {
63
+ "key": "email",
64
+ "kind": "IDENTITY",
65
+ "valueKind": "STRING"
66
+ },
67
+ {
68
+ "key": "employeeId",
69
+ "kind": "IDENTITY",
70
+ "valueKind": "STRING"
71
+ },
72
+ {
73
+ "key": "organization",
74
+ "kind": "IDENTITY",
75
+ "valueKind": "STRING"
76
+ },
77
+ {
78
+ "key": "audienceTier",
79
+ "kind": "INVITEE",
80
+ "valueKind": "STRING"
81
+ },
82
+ {
83
+ "key": "guestLimit",
84
+ "kind": "INVITEE",
85
+ "valueKind": "NUMBER"
86
+ },
87
+ {
88
+ "key": "status",
89
+ "kind": "INVITEE",
90
+ "valueKind": "STRING"
91
+ }
92
+ ],
93
+ "name": "D&D 2026 registration",
94
+ "outcomes": [
95
+ {
96
+ "blocks": [
97
+ {
98
+ "id": "attendingCompletion",
99
+ "contactEmail": "events@getout.sg",
100
+ "kind": "COMPLETION",
101
+ "message": "Your registration has been received. Your registration receipt will include your response summary. Check-in QR codes will be sent to your email address by 13Nov2026.",
102
+ "showResponseDetails": true
103
+ }
104
+ ],
105
+ "id": "attending",
106
+ "registrationStatus": "ATTENDING",
107
+ "title": "Registration received"
108
+ },
109
+ {
110
+ "blocks": [
111
+ {
112
+ "id": "declinedCompletion",
113
+ "contactEmail": "events@getout.sg",
114
+ "kind": "COMPLETION",
115
+ "message": "Your response has been received.",
116
+ "showResponseDetails": true
117
+ }
118
+ ],
119
+ "id": "declined",
120
+ "registrationStatus": "NOT_ATTENDING",
121
+ "title": "Response received"
122
+ }
123
+ ],
124
+ "pages": [
125
+ {
126
+ "blocks": [
127
+ {
128
+ "id": "staffIdentity",
129
+ "title": "Your staff record",
130
+ "displayFields": ["EMPLOYEE_ID", "DISPLAY_NAME"],
131
+ "kind": "VERIFIED_IDENTITY"
132
+ }
133
+ ],
134
+ "id": "identity",
135
+ "routes": [],
136
+ "title": "Identity"
137
+ },
138
+ {
139
+ "blocks": [
140
+ {
141
+ "id": "attendanceQuestion",
142
+ "attendingLabel": "Yes",
143
+ "decliningLabel": "No",
144
+ "kind": "ATTENDANCE",
145
+ "outputKey": "attendance",
146
+ "question": "Are you attending D&D on 27 November 2026?"
147
+ }
148
+ ],
149
+ "id": "attendance",
150
+ "routes": [],
151
+ "title": "Attendance"
152
+ },
153
+ {
154
+ "blocks": [
155
+ {
156
+ "id": "declineReason",
157
+ "visibleWhen": {
158
+ "combinator": "ALL",
159
+ "items": [
160
+ {
161
+ "operator": "EQUALS",
162
+ "source": {
163
+ "key": "attendance",
164
+ "kind": "ANSWER"
165
+ },
166
+ "value": "NOT_ATTENDING"
167
+ }
168
+ ]
169
+ },
170
+ "dataBinding": "REGISTRATION_DECLINE_REASON",
171
+ "field": {
172
+ "label": "What is your reason for not attending?",
173
+ "outputKey": "declineReason",
174
+ "required": true,
175
+ "choices": [
176
+ {
177
+ "label": "On shift / business exigency / business trip",
178
+ "value": "BUSINESS"
179
+ },
180
+ {
181
+ "label": "Paternity leave / maternity leave / hospitalization leave / NS leave",
182
+ "value": "STATUTORY_LEAVE"
183
+ },
184
+ {
185
+ "label": "Annual leave / family care leave / childcare leave",
186
+ "value": "LEAVE"
187
+ },
188
+ {
189
+ "label": "LOA",
190
+ "value": "LOA"
191
+ },
192
+ {
193
+ "label": "Personal reason",
194
+ "value": "PERSONAL"
195
+ }
196
+ ],
197
+ "fieldType": "SINGLE_SELECT"
198
+ },
199
+ "kind": "CUSTOM_FIELD",
200
+ "subject": "REGISTRATION"
201
+ },
202
+ {
203
+ "id": "staffMenu",
204
+ "title": "What is your menu selection?",
205
+ "visibleWhen": {
206
+ "combinator": "ALL",
207
+ "items": [
208
+ {
209
+ "operator": "EQUALS",
210
+ "source": {
211
+ "key": "attendance",
212
+ "kind": "ANSWER"
213
+ },
214
+ "value": "ATTENDING"
215
+ }
216
+ ]
217
+ },
218
+ "kind": "MENU_SELECTION",
219
+ "menuVersionId": "cmtst9b5d000k01mmvfohxv2i",
220
+ "outputKey": "staffMenuSelection",
221
+ "required": true,
222
+ "scope": "PRIMARY_ATTENDEE"
223
+ },
224
+ {
225
+ "id": "hasDietaryRestrictions",
226
+ "kind": "CUSTOM_FIELD",
227
+ "subject": "PRIMARY_ATTENDEE",
228
+ "sensitiveCategory": "DIETARY",
229
+ "visibleWhen": {
230
+ "combinator": "ALL",
231
+ "items": [
232
+ {
233
+ "operator": "EQUALS",
234
+ "source": {
235
+ "key": "attendance",
236
+ "kind": "ANSWER"
237
+ },
238
+ "value": "ATTENDING"
239
+ }
240
+ ]
241
+ },
242
+ "field": {
243
+ "label": "Do you have any dietary restrictions?",
244
+ "outputKey": "hasDietaryRestrictions",
245
+ "required": true,
246
+ "fieldType": "BOOLEAN"
247
+ }
248
+ },
249
+ {
250
+ "id": "dietaryRestrictions",
251
+ "kind": "CUSTOM_FIELD",
252
+ "subject": "PRIMARY_ATTENDEE",
253
+ "sensitiveCategory": "DIETARY",
254
+ "visibleWhen": {
255
+ "combinator": "ALL",
256
+ "items": [
257
+ {
258
+ "operator": "EQUALS",
259
+ "source": {
260
+ "key": "attendance",
261
+ "kind": "ANSWER"
262
+ },
263
+ "value": "ATTENDING"
264
+ },
265
+ {
266
+ "operator": "EQUALS",
267
+ "source": {
268
+ "key": "hasDietaryRestrictions",
269
+ "kind": "ANSWER"
270
+ },
271
+ "value": true
272
+ }
273
+ ]
274
+ },
275
+ "field": {
276
+ "label": "Please describe your dietary restrictions",
277
+ "outputKey": "dietaryRestrictions",
278
+ "required": true,
279
+ "fieldType": "TEXTAREA",
280
+ "validation": {
281
+ "maxLength": 500
282
+ }
283
+ }
284
+ }
285
+ ],
286
+ "id": "responseDetails",
287
+ "routes": [],
288
+ "title": "Response details"
289
+ },
290
+ {
291
+ "blocks": [
292
+ {
293
+ "id": "bringingGuest",
294
+ "field": {
295
+ "label": "Are you bringing a guest?",
296
+ "outputKey": "bringingGuest",
297
+ "required": true,
298
+ "fieldType": "BOOLEAN"
299
+ },
300
+ "kind": "CUSTOM_FIELD",
301
+ "subject": "REGISTRATION"
302
+ },
303
+ {
304
+ "id": "guestDetails",
305
+ "visibleWhen": {
306
+ "combinator": "ALL",
307
+ "items": [
308
+ {
309
+ "operator": "EQUALS",
310
+ "source": {
311
+ "key": "bringingGuest",
312
+ "kind": "ANSWER"
313
+ },
314
+ "value": true
315
+ }
316
+ ]
317
+ },
318
+ "collectDisplayName": true,
319
+ "guestPolicyKey": "eventGuestPolicy",
320
+ "kind": "GUESTS",
321
+ "outputKey": "guests"
322
+ },
323
+ {
324
+ "id": "guestMenu",
325
+ "title": "What is your guest's menu selection?",
326
+ "visibleWhen": {
327
+ "combinator": "ALL",
328
+ "items": [
329
+ {
330
+ "operator": "EQUALS",
331
+ "source": {
332
+ "key": "bringingGuest",
333
+ "kind": "ANSWER"
334
+ },
335
+ "value": true
336
+ }
337
+ ]
338
+ },
339
+ "kind": "MENU_SELECTION",
340
+ "menuVersionId": "cmtst9b5d000k01mmvfohxv2i",
341
+ "outputKey": "guestMenuSelection",
342
+ "required": true,
343
+ "scope": "EACH_GUEST"
344
+ }
345
+ ],
346
+ "id": "guest",
347
+ "routes": [],
348
+ "title": "Guest",
349
+ "visibleWhen": {
350
+ "combinator": "ALL",
351
+ "items": [
352
+ {
353
+ "operator": "EQUALS",
354
+ "source": {
355
+ "key": "attendance",
356
+ "kind": "ANSWER"
357
+ },
358
+ "value": "ATTENDING"
359
+ }
360
+ ]
361
+ }
362
+ },
363
+ {
364
+ "blocks": [
365
+ {
366
+ "id": "partySeats",
367
+ "title": "Select table seats for you and your guest",
368
+ "assignment": "ATTENDEE",
369
+ "kind": "SEATING",
370
+ "outputKey": "seatIds",
371
+ "seatMapId": "cmthccwkf000g01lg5y6z343r",
372
+ "scope": "PARTY"
373
+ }
374
+ ],
375
+ "id": "seating",
376
+ "routes": [],
377
+ "title": "Seating",
378
+ "visibleWhen": {
379
+ "combinator": "ALL",
380
+ "items": [
381
+ {
382
+ "operator": "EQUALS",
383
+ "source": {
384
+ "key": "attendance",
385
+ "kind": "ANSWER"
386
+ },
387
+ "value": "ATTENDING"
388
+ }
389
+ ]
390
+ }
391
+ },
392
+ {
393
+ "blocks": [
394
+ {
395
+ "id": "indemnity",
396
+ "title": "Indemnity disclaimer",
397
+ "consentVersionId": "cmtqnizdg000s01lk8efvtqyt",
398
+ "kind": "CONSENT",
399
+ "outputKey": "indemnityAccepted",
400
+ "requireSignature": false,
401
+ "required": true,
402
+ "scope": "PRIMARY_ATTENDEE"
403
+ }
404
+ ],
405
+ "id": "indemnity",
406
+ "routes": [],
407
+ "title": "Indemnity",
408
+ "visibleWhen": {
409
+ "combinator": "ALL",
410
+ "items": [
411
+ {
412
+ "operator": "EQUALS",
413
+ "source": {
414
+ "key": "attendance",
415
+ "kind": "ANSWER"
416
+ },
417
+ "value": "ATTENDING"
418
+ }
419
+ ]
420
+ }
421
+ },
422
+ {
423
+ "blocks": [
424
+ {
425
+ "id": "review",
426
+ "includeIdentity": true,
427
+ "includeResponses": true,
428
+ "kind": "REVIEW"
429
+ }
430
+ ],
431
+ "defaultDestination": {
432
+ "kind": "OUTCOME",
433
+ "outcomeId": "attending"
434
+ },
435
+ "id": "review",
436
+ "routes": [
437
+ {
438
+ "condition": {
439
+ "combinator": "ALL",
440
+ "items": [
441
+ {
442
+ "operator": "EQUALS",
443
+ "source": {
444
+ "key": "attendance",
445
+ "kind": "ANSWER"
446
+ },
447
+ "value": "NOT_ATTENDING"
448
+ }
449
+ ]
450
+ },
451
+ "destination": {
452
+ "kind": "OUTCOME",
453
+ "outcomeId": "declined"
454
+ },
455
+ "id": "declinedOutcome"
456
+ }
457
+ ],
458
+ "title": "Review"
459
+ }
460
+ ],
461
+ "schemaVersion": 1
462
+ }
463
+ }
@@ -0,0 +1,29 @@
1
+ # Synthetic Amgen registration sample
2
+
3
+ **All values below are fabricated test data. No employee or live registration data is included. This is a sample of the stored registration/review fields, not a downloaded production export.** Table and seat examples use the applied table numbering; these synthetic assignments are not bookings.
4
+
5
+ | Field | SYN-REG-001 | SYN-REG-002 | SYN-REG-003 |
6
+ | --- | --- | --- | --- |
7
+ | Participant name | Synthetic Participant A | Synthetic Participant B | Synthetic Participant C |
8
+ | Email | participant-a@example.test | participant-b@example.test | participant-c@example.test |
9
+ | Staff ID | SYN-001 | SYN-002 | SYN-003 |
10
+ | Attendance | Yes | Yes | No |
11
+ | Registration status | SUBMITTED | SUBMITTED | NOT_ATTENDING |
12
+ | Participant menu | 4 - Course Western Set Dinner MENU | 4-Course Malay Set Dinner MENU | Not applicable |
13
+ | Dietary restrictions? | Yes | No | Not applicable |
14
+ | Dietary details | Synthetic example: no peanuts | Not applicable | Not applicable |
15
+ | Bringing a guest? | Yes | No | Not applicable |
16
+ | Guest name | Synthetic Guest A | Not applicable | Not applicable |
17
+ | Guest menu | 4 - Course Western Set Vegetarian Dinner MENU | Not applicable | Not applicable |
18
+ | Participant table / seat | Table 3 / Seat 1 | Table 4 / Seat 1 | Not applicable |
19
+ | Guest table / seat | Table 3 / Seat 2 | Not applicable | Not applicable |
20
+ | Indemnity accepted | Yes | Yes | Not applicable |
21
+ | Decline reason | Not applicable | Not applicable | Personal reason |
22
+
23
+ ## What existing reports actually support
24
+
25
+ The dashboard supplies aggregate registration and attendance counts. Its queued RSVP export supplies Registration ID, Invitee ID, Status, Attendee count, Decline reason, Submitted at, Version and Created at. Guest and seating exports are separate datasets; seating includes table, seat, registration/attendee IDs and authorized display names.
26
+
27
+ The older direct registration CSV includes participant identity/contact/staff ID, guest names, and table/seat labels, subject to access grants. It exports legacy field definitions from attendee/registration metadata. It does **not** join the V2 published response answers or immutable menu choices, so it cannot currently produce all of the menu and new dietary columns above. The queued RSVP export cannot either.
28
+
29
+ The V2 registration response and receipt model support these fields, but producing a single protected operational report with all of them requires extending the export projection and its sensitive-category checks. That gap is identified here; no reporting feature expansion or live export was performed. Do not present this sample as evidence that those columns already appear in the current export.