@proxima-nexus/openapi 1.0.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/openapi.json ADDED
@@ -0,0 +1,2262 @@
1
+ {
2
+ "openapi": "3.0.0",
3
+ "paths": {
4
+ "/user": {
5
+ "post": {
6
+ "operationId": "UserController_create",
7
+ "summary": "Create a user",
8
+ "parameters": [],
9
+ "requestBody": {
10
+ "required": true,
11
+ "content": {
12
+ "application/json": {
13
+ "schema": {
14
+ "$ref": "#/components/schemas/CreateUserDto"
15
+ }
16
+ }
17
+ }
18
+ },
19
+ "responses": {
20
+ "201": {
21
+ "description": "Created user ID",
22
+ "content": {
23
+ "application/json": {
24
+ "schema": {
25
+ "$ref": "#/components/schemas/MutateUserResponseDto"
26
+ }
27
+ }
28
+ }
29
+ }
30
+ },
31
+ "tags": [
32
+ "user"
33
+ ],
34
+ "security": [
35
+ {
36
+ "api_key": []
37
+ }
38
+ ]
39
+ },
40
+ "get": {
41
+ "operationId": "UserController_search",
42
+ "summary": "Search users",
43
+ "parameters": [
44
+ {
45
+ "name": "displayName",
46
+ "required": false,
47
+ "in": "query",
48
+ "description": "Display name search (ILIKE)",
49
+ "schema": {
50
+ "example": "Keyword",
51
+ "type": "string"
52
+ }
53
+ },
54
+ {
55
+ "name": "latitude",
56
+ "required": false,
57
+ "in": "query",
58
+ "description": "Latitude for radius search",
59
+ "schema": {
60
+ "example": 40.7128,
61
+ "type": "number"
62
+ }
63
+ },
64
+ {
65
+ "name": "longitude",
66
+ "required": false,
67
+ "in": "query",
68
+ "description": "Longitude for radius search",
69
+ "schema": {
70
+ "example": -74.006,
71
+ "type": "number"
72
+ }
73
+ },
74
+ {
75
+ "name": "radius",
76
+ "required": false,
77
+ "in": "query",
78
+ "description": "Radius in meters for radius search",
79
+ "schema": {
80
+ "example": 5000,
81
+ "type": "number"
82
+ }
83
+ },
84
+ {
85
+ "name": "minLatitude",
86
+ "required": false,
87
+ "in": "query",
88
+ "description": "Minimum latitude for bounding box",
89
+ "schema": {
90
+ "example": 40,
91
+ "type": "number"
92
+ }
93
+ },
94
+ {
95
+ "name": "maxLatitude",
96
+ "required": false,
97
+ "in": "query",
98
+ "description": "Maximum latitude for bounding box",
99
+ "schema": {
100
+ "example": 41,
101
+ "type": "number"
102
+ }
103
+ },
104
+ {
105
+ "name": "minLongitude",
106
+ "required": false,
107
+ "in": "query",
108
+ "description": "Minimum longitude for bounding box",
109
+ "schema": {
110
+ "example": -75,
111
+ "type": "number"
112
+ }
113
+ },
114
+ {
115
+ "name": "maxLongitude",
116
+ "required": false,
117
+ "in": "query",
118
+ "description": "Maximum longitude for bounding box",
119
+ "schema": {
120
+ "example": -73,
121
+ "type": "number"
122
+ }
123
+ },
124
+ {
125
+ "name": "limit",
126
+ "required": false,
127
+ "in": "query",
128
+ "description": "Limit results (1-1000)",
129
+ "schema": {
130
+ "example": 100,
131
+ "type": "number"
132
+ }
133
+ }
134
+ ],
135
+ "responses": {
136
+ "200": {
137
+ "description": "Users returned",
138
+ "content": {
139
+ "application/json": {
140
+ "schema": {
141
+ "type": "array",
142
+ "items": {
143
+ "$ref": "#/components/schemas/UserDto"
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ },
150
+ "tags": [
151
+ "user"
152
+ ],
153
+ "security": [
154
+ {
155
+ "api_key": []
156
+ }
157
+ ]
158
+ }
159
+ },
160
+ "/user/{userId}": {
161
+ "get": {
162
+ "operationId": "UserController_findOne",
163
+ "summary": "Get a user by ID",
164
+ "parameters": [
165
+ {
166
+ "name": "userId",
167
+ "required": true,
168
+ "in": "path",
169
+ "schema": {
170
+ "type": "string"
171
+ }
172
+ }
173
+ ],
174
+ "responses": {
175
+ "200": {
176
+ "description": "User returned",
177
+ "content": {
178
+ "application/json": {
179
+ "schema": {
180
+ "$ref": "#/components/schemas/UserDto"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "tags": [
187
+ "user"
188
+ ],
189
+ "security": [
190
+ {
191
+ "api_key": []
192
+ }
193
+ ]
194
+ },
195
+ "patch": {
196
+ "operationId": "UserController_update",
197
+ "summary": "Update a user",
198
+ "parameters": [
199
+ {
200
+ "name": "userId",
201
+ "required": true,
202
+ "in": "path",
203
+ "schema": {
204
+ "type": "string"
205
+ }
206
+ }
207
+ ],
208
+ "requestBody": {
209
+ "required": true,
210
+ "content": {
211
+ "application/json": {
212
+ "schema": {
213
+ "$ref": "#/components/schemas/UpdateUserDto"
214
+ }
215
+ }
216
+ }
217
+ },
218
+ "responses": {
219
+ "200": {
220
+ "description": "Updated user ID",
221
+ "content": {
222
+ "application/json": {
223
+ "schema": {
224
+ "$ref": "#/components/schemas/MutateUserResponseDto"
225
+ }
226
+ }
227
+ }
228
+ }
229
+ },
230
+ "tags": [
231
+ "user"
232
+ ],
233
+ "security": [
234
+ {
235
+ "api_key": []
236
+ }
237
+ ]
238
+ },
239
+ "delete": {
240
+ "operationId": "UserController_remove",
241
+ "summary": "Delete a user",
242
+ "parameters": [
243
+ {
244
+ "name": "userId",
245
+ "required": true,
246
+ "in": "path",
247
+ "schema": {
248
+ "type": "string"
249
+ }
250
+ }
251
+ ],
252
+ "responses": {
253
+ "204": {
254
+ "description": "User deleted"
255
+ }
256
+ },
257
+ "tags": [
258
+ "user"
259
+ ],
260
+ "security": [
261
+ {
262
+ "api_key": []
263
+ }
264
+ ]
265
+ }
266
+ },
267
+ "/user/{userId}/friends/{friendUserId}": {
268
+ "put": {
269
+ "operationId": "UserController_addFriend",
270
+ "summary": "Add a friend to a user",
271
+ "parameters": [
272
+ {
273
+ "name": "userId",
274
+ "required": true,
275
+ "in": "path",
276
+ "schema": {
277
+ "type": "string"
278
+ }
279
+ },
280
+ {
281
+ "name": "friendUserId",
282
+ "required": true,
283
+ "in": "path",
284
+ "schema": {
285
+ "type": "string"
286
+ }
287
+ }
288
+ ],
289
+ "responses": {
290
+ "200": {
291
+ "description": "Friend added",
292
+ "content": {
293
+ "application/json": {
294
+ "schema": {
295
+ "$ref": "#/components/schemas/EntityConnectionDto"
296
+ }
297
+ }
298
+ }
299
+ }
300
+ },
301
+ "tags": [
302
+ "user"
303
+ ],
304
+ "security": [
305
+ {
306
+ "api_key": []
307
+ }
308
+ ]
309
+ },
310
+ "delete": {
311
+ "operationId": "UserController_removeFriend",
312
+ "summary": "Remove a friend from a user",
313
+ "parameters": [
314
+ {
315
+ "name": "userId",
316
+ "required": true,
317
+ "in": "path",
318
+ "schema": {
319
+ "type": "string"
320
+ }
321
+ },
322
+ {
323
+ "name": "friendUserId",
324
+ "required": true,
325
+ "in": "path",
326
+ "schema": {
327
+ "type": "string"
328
+ }
329
+ }
330
+ ],
331
+ "responses": {
332
+ "200": {
333
+ "description": "Friend removed"
334
+ }
335
+ },
336
+ "tags": [
337
+ "user"
338
+ ],
339
+ "security": [
340
+ {
341
+ "api_key": []
342
+ }
343
+ ]
344
+ }
345
+ },
346
+ "/user/{userId}/friends": {
347
+ "get": {
348
+ "operationId": "UserController_getFriends",
349
+ "summary": "Get friends of a user",
350
+ "parameters": [
351
+ {
352
+ "name": "userId",
353
+ "required": true,
354
+ "in": "path",
355
+ "schema": {
356
+ "type": "string"
357
+ }
358
+ }
359
+ ],
360
+ "responses": {
361
+ "200": {
362
+ "description": "Friends returned",
363
+ "content": {
364
+ "application/json": {
365
+ "schema": {
366
+ "type": "array",
367
+ "items": {
368
+ "$ref": "#/components/schemas/UserEntityConnectionDto"
369
+ }
370
+ }
371
+ }
372
+ }
373
+ }
374
+ },
375
+ "tags": [
376
+ "user"
377
+ ],
378
+ "security": [
379
+ {
380
+ "api_key": []
381
+ }
382
+ ]
383
+ }
384
+ },
385
+ "/user/batch": {
386
+ "post": {
387
+ "operationId": "UserController_getBatch",
388
+ "summary": "Get a batch of users by IDs",
389
+ "parameters": [],
390
+ "requestBody": {
391
+ "required": true,
392
+ "content": {
393
+ "application/json": {
394
+ "schema": {
395
+ "$ref": "#/components/schemas/GetUsersDto"
396
+ }
397
+ }
398
+ }
399
+ },
400
+ "responses": {
401
+ "200": {
402
+ "description": "Users returned",
403
+ "content": {
404
+ "application/json": {
405
+ "schema": {
406
+ "type": "array",
407
+ "items": {
408
+ "$ref": "#/components/schemas/UserDto"
409
+ }
410
+ }
411
+ }
412
+ }
413
+ }
414
+ },
415
+ "tags": [
416
+ "user"
417
+ ],
418
+ "security": [
419
+ {
420
+ "api_key": []
421
+ }
422
+ ]
423
+ }
424
+ },
425
+ "/user/{userId}/groups": {
426
+ "get": {
427
+ "operationId": "UserController_getGroups",
428
+ "summary": "Get groups of a user",
429
+ "parameters": [
430
+ {
431
+ "name": "userId",
432
+ "required": true,
433
+ "in": "path",
434
+ "schema": {
435
+ "type": "string"
436
+ }
437
+ }
438
+ ],
439
+ "responses": {
440
+ "200": {
441
+ "description": "Groups returned",
442
+ "content": {
443
+ "application/json": {
444
+ "schema": {
445
+ "type": "array",
446
+ "items": {
447
+ "$ref": "#/components/schemas/GroupEntityConnectionDto"
448
+ }
449
+ }
450
+ }
451
+ }
452
+ }
453
+ },
454
+ "tags": [
455
+ "user"
456
+ ],
457
+ "security": [
458
+ {
459
+ "api_key": []
460
+ }
461
+ ]
462
+ }
463
+ },
464
+ "/user/{userId}/events": {
465
+ "get": {
466
+ "operationId": "UserController_getEvents",
467
+ "summary": "Get events of a user",
468
+ "parameters": [
469
+ {
470
+ "name": "userId",
471
+ "required": true,
472
+ "in": "path",
473
+ "schema": {
474
+ "type": "string"
475
+ }
476
+ }
477
+ ],
478
+ "responses": {
479
+ "200": {
480
+ "description": "Events returned",
481
+ "content": {
482
+ "application/json": {
483
+ "schema": {
484
+ "type": "array",
485
+ "items": {
486
+ "$ref": "#/components/schemas/EventEntityConnectionDto"
487
+ }
488
+ }
489
+ }
490
+ }
491
+ }
492
+ },
493
+ "tags": [
494
+ "user"
495
+ ],
496
+ "security": [
497
+ {
498
+ "api_key": []
499
+ }
500
+ ]
501
+ }
502
+ },
503
+ "/event": {
504
+ "post": {
505
+ "operationId": "EventController_create",
506
+ "summary": "Create an event",
507
+ "parameters": [],
508
+ "requestBody": {
509
+ "required": true,
510
+ "content": {
511
+ "application/json": {
512
+ "schema": {
513
+ "$ref": "#/components/schemas/CreateEventDto"
514
+ }
515
+ }
516
+ }
517
+ },
518
+ "responses": {
519
+ "201": {
520
+ "description": "Created event ID",
521
+ "content": {
522
+ "application/json": {
523
+ "schema": {
524
+ "type": "string"
525
+ }
526
+ }
527
+ }
528
+ }
529
+ },
530
+ "tags": [
531
+ "event"
532
+ ],
533
+ "security": [
534
+ {
535
+ "bearer": []
536
+ }
537
+ ]
538
+ },
539
+ "get": {
540
+ "operationId": "EventController_search",
541
+ "summary": "Search events",
542
+ "parameters": [
543
+ {
544
+ "name": "displayName",
545
+ "required": false,
546
+ "in": "query",
547
+ "description": "Display name search (ILIKE)",
548
+ "schema": {
549
+ "example": "Keyword",
550
+ "type": "string"
551
+ }
552
+ },
553
+ {
554
+ "name": "latitude",
555
+ "required": false,
556
+ "in": "query",
557
+ "description": "Latitude for radius search",
558
+ "schema": {
559
+ "example": 40.7128,
560
+ "type": "number"
561
+ }
562
+ },
563
+ {
564
+ "name": "longitude",
565
+ "required": false,
566
+ "in": "query",
567
+ "description": "Longitude for radius search",
568
+ "schema": {
569
+ "example": -74.006,
570
+ "type": "number"
571
+ }
572
+ },
573
+ {
574
+ "name": "radius",
575
+ "required": false,
576
+ "in": "query",
577
+ "description": "Radius in meters for radius search",
578
+ "schema": {
579
+ "example": 5000,
580
+ "type": "number"
581
+ }
582
+ },
583
+ {
584
+ "name": "minLatitude",
585
+ "required": false,
586
+ "in": "query",
587
+ "description": "Minimum latitude for bounding box",
588
+ "schema": {
589
+ "example": 40,
590
+ "type": "number"
591
+ }
592
+ },
593
+ {
594
+ "name": "maxLatitude",
595
+ "required": false,
596
+ "in": "query",
597
+ "description": "Maximum latitude for bounding box",
598
+ "schema": {
599
+ "example": 41,
600
+ "type": "number"
601
+ }
602
+ },
603
+ {
604
+ "name": "minLongitude",
605
+ "required": false,
606
+ "in": "query",
607
+ "description": "Minimum longitude for bounding box",
608
+ "schema": {
609
+ "example": -75,
610
+ "type": "number"
611
+ }
612
+ },
613
+ {
614
+ "name": "maxLongitude",
615
+ "required": false,
616
+ "in": "query",
617
+ "description": "Maximum longitude for bounding box",
618
+ "schema": {
619
+ "example": -73,
620
+ "type": "number"
621
+ }
622
+ },
623
+ {
624
+ "name": "limit",
625
+ "required": false,
626
+ "in": "query",
627
+ "description": "Limit results (1-1000)",
628
+ "schema": {
629
+ "example": 100,
630
+ "type": "number"
631
+ }
632
+ }
633
+ ],
634
+ "responses": {
635
+ "200": {
636
+ "description": "Events returned",
637
+ "content": {
638
+ "application/json": {
639
+ "schema": {
640
+ "type": "array",
641
+ "items": {
642
+ "$ref": "#/components/schemas/EventDto"
643
+ }
644
+ }
645
+ }
646
+ }
647
+ }
648
+ },
649
+ "tags": [
650
+ "event"
651
+ ],
652
+ "security": [
653
+ {
654
+ "bearer": []
655
+ }
656
+ ]
657
+ }
658
+ },
659
+ "/event/{eventId}": {
660
+ "get": {
661
+ "operationId": "EventController_findOne",
662
+ "summary": "Get an event by ID",
663
+ "parameters": [
664
+ {
665
+ "name": "eventId",
666
+ "required": true,
667
+ "in": "path",
668
+ "schema": {
669
+ "type": "string"
670
+ }
671
+ }
672
+ ],
673
+ "responses": {
674
+ "200": {
675
+ "description": "Event returned",
676
+ "content": {
677
+ "application/json": {
678
+ "schema": {
679
+ "$ref": "#/components/schemas/EventDto"
680
+ }
681
+ }
682
+ }
683
+ }
684
+ },
685
+ "tags": [
686
+ "event"
687
+ ],
688
+ "security": [
689
+ {
690
+ "bearer": []
691
+ }
692
+ ]
693
+ },
694
+ "put": {
695
+ "operationId": "EventController_update",
696
+ "summary": "Update an event",
697
+ "parameters": [
698
+ {
699
+ "name": "eventId",
700
+ "required": true,
701
+ "in": "path",
702
+ "schema": {
703
+ "type": "string"
704
+ }
705
+ }
706
+ ],
707
+ "requestBody": {
708
+ "required": true,
709
+ "content": {
710
+ "application/json": {
711
+ "schema": {
712
+ "$ref": "#/components/schemas/UpdateEventDto"
713
+ }
714
+ }
715
+ }
716
+ },
717
+ "responses": {
718
+ "200": {
719
+ "description": "Updated event ID",
720
+ "content": {
721
+ "application/json": {
722
+ "schema": {
723
+ "type": "string"
724
+ }
725
+ }
726
+ }
727
+ }
728
+ },
729
+ "tags": [
730
+ "event"
731
+ ],
732
+ "security": [
733
+ {
734
+ "bearer": []
735
+ }
736
+ ]
737
+ },
738
+ "delete": {
739
+ "operationId": "EventController_remove",
740
+ "summary": "Delete an event",
741
+ "parameters": [
742
+ {
743
+ "name": "eventId",
744
+ "required": true,
745
+ "in": "path",
746
+ "schema": {
747
+ "type": "string"
748
+ }
749
+ },
750
+ {
751
+ "name": "X-Proxima-Nexus-Requester-User-Id",
752
+ "in": "header",
753
+ "description": "Requester user ID",
754
+ "required": true,
755
+ "schema": {
756
+ "type": "string"
757
+ }
758
+ }
759
+ ],
760
+ "responses": {
761
+ "204": {
762
+ "description": "Event deleted"
763
+ }
764
+ },
765
+ "tags": [
766
+ "event"
767
+ ],
768
+ "security": [
769
+ {
770
+ "bearer": []
771
+ }
772
+ ]
773
+ }
774
+ },
775
+ "/event/{eventId}/attendees/{userId}": {
776
+ "put": {
777
+ "operationId": "EventController_addAttendee",
778
+ "summary": "Add an attendee to an event",
779
+ "parameters": [
780
+ {
781
+ "name": "eventId",
782
+ "required": true,
783
+ "in": "path",
784
+ "schema": {
785
+ "type": "string"
786
+ }
787
+ },
788
+ {
789
+ "name": "userId",
790
+ "required": true,
791
+ "in": "path",
792
+ "schema": {
793
+ "type": "string"
794
+ }
795
+ }
796
+ ],
797
+ "responses": {
798
+ "200": {
799
+ "description": "Attendee added",
800
+ "content": {
801
+ "application/json": {
802
+ "schema": {
803
+ "$ref": "#/components/schemas/EntityConnectionDto"
804
+ }
805
+ }
806
+ }
807
+ }
808
+ },
809
+ "tags": [
810
+ "event"
811
+ ],
812
+ "security": [
813
+ {
814
+ "bearer": []
815
+ }
816
+ ]
817
+ }
818
+ },
819
+ "/event/{eventId}/attendees": {
820
+ "get": {
821
+ "operationId": "EventController_getAttendees",
822
+ "summary": "Get attendees of an event",
823
+ "parameters": [
824
+ {
825
+ "name": "eventId",
826
+ "required": true,
827
+ "in": "path",
828
+ "schema": {
829
+ "type": "string"
830
+ }
831
+ }
832
+ ],
833
+ "responses": {
834
+ "200": {
835
+ "description": "Attendees returned",
836
+ "content": {
837
+ "application/json": {
838
+ "schema": {
839
+ "type": "array",
840
+ "items": {
841
+ "$ref": "#/components/schemas/UserEntityConnectionDto"
842
+ }
843
+ }
844
+ }
845
+ }
846
+ }
847
+ },
848
+ "tags": [
849
+ "event"
850
+ ],
851
+ "security": [
852
+ {
853
+ "bearer": []
854
+ }
855
+ ]
856
+ }
857
+ },
858
+ "/event/batch": {
859
+ "post": {
860
+ "operationId": "EventController_getBatch",
861
+ "summary": "Get a batch of events by IDs",
862
+ "parameters": [],
863
+ "requestBody": {
864
+ "required": true,
865
+ "content": {
866
+ "application/json": {
867
+ "schema": {
868
+ "$ref": "#/components/schemas/GetEventsDto"
869
+ }
870
+ }
871
+ }
872
+ },
873
+ "responses": {
874
+ "200": {
875
+ "description": "Events returned",
876
+ "content": {
877
+ "application/json": {
878
+ "schema": {
879
+ "type": "array",
880
+ "items": {
881
+ "$ref": "#/components/schemas/EventDto"
882
+ }
883
+ }
884
+ }
885
+ }
886
+ }
887
+ },
888
+ "tags": [
889
+ "event"
890
+ ],
891
+ "security": [
892
+ {
893
+ "bearer": []
894
+ }
895
+ ]
896
+ }
897
+ },
898
+ "/group": {
899
+ "post": {
900
+ "operationId": "GroupController_create",
901
+ "summary": "Create a group",
902
+ "parameters": [],
903
+ "requestBody": {
904
+ "required": true,
905
+ "content": {
906
+ "application/json": {
907
+ "schema": {
908
+ "$ref": "#/components/schemas/CreateGroupDto"
909
+ }
910
+ }
911
+ }
912
+ },
913
+ "responses": {
914
+ "201": {
915
+ "description": "Created group ID",
916
+ "content": {
917
+ "application/json": {
918
+ "schema": {
919
+ "type": "string"
920
+ }
921
+ }
922
+ }
923
+ }
924
+ },
925
+ "tags": [
926
+ "group"
927
+ ],
928
+ "security": [
929
+ {
930
+ "bearer": []
931
+ }
932
+ ]
933
+ },
934
+ "get": {
935
+ "operationId": "GroupController_search",
936
+ "summary": "Search groups",
937
+ "parameters": [
938
+ {
939
+ "name": "displayName",
940
+ "required": false,
941
+ "in": "query",
942
+ "description": "Display name search (ILIKE)",
943
+ "schema": {
944
+ "example": "Keyword",
945
+ "type": "string"
946
+ }
947
+ },
948
+ {
949
+ "name": "latitude",
950
+ "required": false,
951
+ "in": "query",
952
+ "description": "Latitude for radius search",
953
+ "schema": {
954
+ "example": 40.7128,
955
+ "type": "number"
956
+ }
957
+ },
958
+ {
959
+ "name": "longitude",
960
+ "required": false,
961
+ "in": "query",
962
+ "description": "Longitude for radius search",
963
+ "schema": {
964
+ "example": -74.006,
965
+ "type": "number"
966
+ }
967
+ },
968
+ {
969
+ "name": "radius",
970
+ "required": false,
971
+ "in": "query",
972
+ "description": "Radius in meters for radius search",
973
+ "schema": {
974
+ "example": 5000,
975
+ "type": "number"
976
+ }
977
+ },
978
+ {
979
+ "name": "minLatitude",
980
+ "required": false,
981
+ "in": "query",
982
+ "description": "Minimum latitude for bounding box",
983
+ "schema": {
984
+ "example": 40,
985
+ "type": "number"
986
+ }
987
+ },
988
+ {
989
+ "name": "maxLatitude",
990
+ "required": false,
991
+ "in": "query",
992
+ "description": "Maximum latitude for bounding box",
993
+ "schema": {
994
+ "example": 41,
995
+ "type": "number"
996
+ }
997
+ },
998
+ {
999
+ "name": "minLongitude",
1000
+ "required": false,
1001
+ "in": "query",
1002
+ "description": "Minimum longitude for bounding box",
1003
+ "schema": {
1004
+ "example": -75,
1005
+ "type": "number"
1006
+ }
1007
+ },
1008
+ {
1009
+ "name": "maxLongitude",
1010
+ "required": false,
1011
+ "in": "query",
1012
+ "description": "Maximum longitude for bounding box",
1013
+ "schema": {
1014
+ "example": -73,
1015
+ "type": "number"
1016
+ }
1017
+ },
1018
+ {
1019
+ "name": "limit",
1020
+ "required": false,
1021
+ "in": "query",
1022
+ "description": "Limit results (1-1000)",
1023
+ "schema": {
1024
+ "example": 100,
1025
+ "type": "number"
1026
+ }
1027
+ }
1028
+ ],
1029
+ "responses": {
1030
+ "200": {
1031
+ "description": "Groups returned",
1032
+ "content": {
1033
+ "application/json": {
1034
+ "schema": {
1035
+ "type": "array",
1036
+ "items": {
1037
+ "$ref": "#/components/schemas/GroupDto"
1038
+ }
1039
+ }
1040
+ }
1041
+ }
1042
+ }
1043
+ },
1044
+ "tags": [
1045
+ "group"
1046
+ ],
1047
+ "security": [
1048
+ {
1049
+ "bearer": []
1050
+ }
1051
+ ]
1052
+ }
1053
+ },
1054
+ "/group/{groupId}": {
1055
+ "get": {
1056
+ "operationId": "GroupController_findOne",
1057
+ "summary": "Get a group by ID",
1058
+ "parameters": [
1059
+ {
1060
+ "name": "groupId",
1061
+ "required": true,
1062
+ "in": "path",
1063
+ "schema": {
1064
+ "type": "string"
1065
+ }
1066
+ }
1067
+ ],
1068
+ "responses": {
1069
+ "200": {
1070
+ "description": "Group returned",
1071
+ "content": {
1072
+ "application/json": {
1073
+ "schema": {
1074
+ "$ref": "#/components/schemas/GroupDto"
1075
+ }
1076
+ }
1077
+ }
1078
+ }
1079
+ },
1080
+ "tags": [
1081
+ "group"
1082
+ ],
1083
+ "security": [
1084
+ {
1085
+ "bearer": []
1086
+ }
1087
+ ]
1088
+ },
1089
+ "patch": {
1090
+ "operationId": "GroupController_update",
1091
+ "summary": "Update a group",
1092
+ "parameters": [
1093
+ {
1094
+ "name": "groupId",
1095
+ "required": true,
1096
+ "in": "path",
1097
+ "schema": {
1098
+ "type": "string"
1099
+ }
1100
+ }
1101
+ ],
1102
+ "requestBody": {
1103
+ "required": true,
1104
+ "content": {
1105
+ "application/json": {
1106
+ "schema": {
1107
+ "$ref": "#/components/schemas/UpdateGroupDto"
1108
+ }
1109
+ }
1110
+ }
1111
+ },
1112
+ "responses": {
1113
+ "200": {
1114
+ "description": "Updated group ID",
1115
+ "content": {
1116
+ "application/json": {
1117
+ "schema": {
1118
+ "type": "string"
1119
+ }
1120
+ }
1121
+ }
1122
+ }
1123
+ },
1124
+ "tags": [
1125
+ "group"
1126
+ ],
1127
+ "security": [
1128
+ {
1129
+ "bearer": []
1130
+ }
1131
+ ]
1132
+ },
1133
+ "delete": {
1134
+ "operationId": "GroupController_remove",
1135
+ "summary": "Delete a group",
1136
+ "parameters": [
1137
+ {
1138
+ "name": "groupId",
1139
+ "required": true,
1140
+ "in": "path",
1141
+ "schema": {
1142
+ "type": "string"
1143
+ }
1144
+ },
1145
+ {
1146
+ "name": "X-Proxima-Nexus-Requester-User-Id",
1147
+ "in": "header",
1148
+ "description": "Requester user ID",
1149
+ "required": true,
1150
+ "schema": {
1151
+ "type": "string"
1152
+ }
1153
+ }
1154
+ ],
1155
+ "responses": {
1156
+ "204": {
1157
+ "description": "Group deleted"
1158
+ }
1159
+ },
1160
+ "tags": [
1161
+ "group"
1162
+ ],
1163
+ "security": [
1164
+ {
1165
+ "bearer": []
1166
+ }
1167
+ ]
1168
+ }
1169
+ },
1170
+ "/group/{groupId}/members/{userId}": {
1171
+ "put": {
1172
+ "operationId": "GroupController_addMember",
1173
+ "summary": "Add a member to a group",
1174
+ "parameters": [
1175
+ {
1176
+ "name": "groupId",
1177
+ "required": true,
1178
+ "in": "path",
1179
+ "schema": {
1180
+ "type": "string"
1181
+ }
1182
+ },
1183
+ {
1184
+ "name": "userId",
1185
+ "required": true,
1186
+ "in": "path",
1187
+ "schema": {
1188
+ "type": "string"
1189
+ }
1190
+ }
1191
+ ],
1192
+ "responses": {
1193
+ "200": {
1194
+ "description": "Member added",
1195
+ "content": {
1196
+ "application/json": {
1197
+ "schema": {
1198
+ "$ref": "#/components/schemas/EntityConnectionDto"
1199
+ }
1200
+ }
1201
+ }
1202
+ }
1203
+ },
1204
+ "tags": [
1205
+ "group"
1206
+ ],
1207
+ "security": [
1208
+ {
1209
+ "bearer": []
1210
+ }
1211
+ ]
1212
+ },
1213
+ "delete": {
1214
+ "operationId": "GroupController_removeMember",
1215
+ "summary": "Remove a member from a group",
1216
+ "parameters": [
1217
+ {
1218
+ "name": "groupId",
1219
+ "required": true,
1220
+ "in": "path",
1221
+ "schema": {
1222
+ "type": "string"
1223
+ }
1224
+ },
1225
+ {
1226
+ "name": "userId",
1227
+ "required": true,
1228
+ "in": "path",
1229
+ "schema": {
1230
+ "type": "string"
1231
+ }
1232
+ }
1233
+ ],
1234
+ "responses": {
1235
+ "200": {
1236
+ "description": "Member removed",
1237
+ "content": {
1238
+ "application/json": {
1239
+ "schema": {
1240
+ "type": "string"
1241
+ }
1242
+ }
1243
+ }
1244
+ }
1245
+ },
1246
+ "tags": [
1247
+ "group"
1248
+ ],
1249
+ "security": [
1250
+ {
1251
+ "bearer": []
1252
+ }
1253
+ ]
1254
+ }
1255
+ },
1256
+ "/group/{groupId}/members": {
1257
+ "get": {
1258
+ "operationId": "GroupController_getMembers",
1259
+ "summary": "Get members of a group",
1260
+ "parameters": [
1261
+ {
1262
+ "name": "groupId",
1263
+ "required": true,
1264
+ "in": "path",
1265
+ "schema": {
1266
+ "type": "string"
1267
+ }
1268
+ }
1269
+ ],
1270
+ "responses": {
1271
+ "200": {
1272
+ "description": "Members returned",
1273
+ "content": {
1274
+ "application/json": {
1275
+ "schema": {
1276
+ "type": "array",
1277
+ "items": {
1278
+ "$ref": "#/components/schemas/UserEntityConnectionDto"
1279
+ }
1280
+ }
1281
+ }
1282
+ }
1283
+ }
1284
+ },
1285
+ "tags": [
1286
+ "group"
1287
+ ],
1288
+ "security": [
1289
+ {
1290
+ "bearer": []
1291
+ }
1292
+ ]
1293
+ }
1294
+ },
1295
+ "/group/{groupId}/events": {
1296
+ "get": {
1297
+ "operationId": "GroupController_getEvents",
1298
+ "summary": "Get events of a group",
1299
+ "parameters": [
1300
+ {
1301
+ "name": "groupId",
1302
+ "required": true,
1303
+ "in": "path",
1304
+ "schema": {
1305
+ "type": "string"
1306
+ }
1307
+ }
1308
+ ],
1309
+ "responses": {
1310
+ "200": {
1311
+ "description": "Events returned",
1312
+ "content": {
1313
+ "application/json": {
1314
+ "schema": {
1315
+ "type": "array",
1316
+ "items": {
1317
+ "$ref": "#/components/schemas/EventEntityConnectionDto"
1318
+ }
1319
+ }
1320
+ }
1321
+ }
1322
+ }
1323
+ },
1324
+ "tags": [
1325
+ "group"
1326
+ ],
1327
+ "security": [
1328
+ {
1329
+ "bearer": []
1330
+ }
1331
+ ]
1332
+ }
1333
+ },
1334
+ "/group/batch": {
1335
+ "post": {
1336
+ "operationId": "GroupController_getBatch",
1337
+ "summary": "Get a batch of groups by IDs",
1338
+ "parameters": [],
1339
+ "requestBody": {
1340
+ "required": true,
1341
+ "content": {
1342
+ "application/json": {
1343
+ "schema": {
1344
+ "$ref": "#/components/schemas/GetGroupsDto"
1345
+ }
1346
+ }
1347
+ }
1348
+ },
1349
+ "responses": {
1350
+ "200": {
1351
+ "description": "Groups returned",
1352
+ "content": {
1353
+ "application/json": {
1354
+ "schema": {
1355
+ "type": "array",
1356
+ "items": {
1357
+ "$ref": "#/components/schemas/GroupDto"
1358
+ }
1359
+ }
1360
+ }
1361
+ }
1362
+ }
1363
+ },
1364
+ "tags": [
1365
+ "group"
1366
+ ],
1367
+ "security": [
1368
+ {
1369
+ "bearer": []
1370
+ }
1371
+ ]
1372
+ }
1373
+ }
1374
+ },
1375
+ "info": {
1376
+ "title": "proxima-nexus-data-plane-api",
1377
+ "description": "Proxima Nexus Data Plane API",
1378
+ "version": "1.0.0",
1379
+ "contact": {}
1380
+ },
1381
+ "tags": [],
1382
+ "servers": [],
1383
+ "components": {
1384
+ "securitySchemes": {
1385
+ "api_key": {
1386
+ "type": "apiKey",
1387
+ "in": "header",
1388
+ "name": "X-Proxima-Nexus-Api-Key"
1389
+ }
1390
+ },
1391
+ "schemas": {
1392
+ "LocationDto": {
1393
+ "type": "object",
1394
+ "properties": {
1395
+ "latitude": {
1396
+ "type": "number",
1397
+ "description": "Latitude in decimal degrees",
1398
+ "example": 40.7128
1399
+ },
1400
+ "longitude": {
1401
+ "type": "number",
1402
+ "description": "Longitude in decimal degrees",
1403
+ "example": -74.006
1404
+ },
1405
+ "name": {
1406
+ "type": "string",
1407
+ "description": "Human-readable location name",
1408
+ "example": "New York, NY"
1409
+ }
1410
+ }
1411
+ },
1412
+ "CreateUserDto": {
1413
+ "type": "object",
1414
+ "properties": {
1415
+ "displayName": {
1416
+ "type": "string",
1417
+ "description": "Display name",
1418
+ "example": "Display Name"
1419
+ },
1420
+ "requesterUserId": {
1421
+ "type": "string",
1422
+ "description": "User ID of the requester",
1423
+ "example": "user-123"
1424
+ },
1425
+ "visibility": {
1426
+ "type": "string",
1427
+ "description": "Visibility of the entity",
1428
+ "enum": [
1429
+ "public",
1430
+ "connections",
1431
+ "hidden"
1432
+ ],
1433
+ "example": "public"
1434
+ },
1435
+ "location": {
1436
+ "description": "Optional location information",
1437
+ "allOf": [
1438
+ {
1439
+ "$ref": "#/components/schemas/LocationDto"
1440
+ }
1441
+ ]
1442
+ },
1443
+ "description": {
1444
+ "type": "string",
1445
+ "description": "Entity description",
1446
+ "example": "A description of the entity"
1447
+ },
1448
+ "tags": {
1449
+ "description": "Entity tags",
1450
+ "example": [
1451
+ "tag1",
1452
+ "tag2"
1453
+ ],
1454
+ "type": "array",
1455
+ "items": {
1456
+ "type": "string"
1457
+ }
1458
+ },
1459
+ "userId": {
1460
+ "type": "string",
1461
+ "description": "Unique user identifier",
1462
+ "example": "user-123"
1463
+ },
1464
+ "gender": {
1465
+ "type": "string",
1466
+ "description": "Gender",
1467
+ "example": "female"
1468
+ },
1469
+ "birthDate": {
1470
+ "type": "string",
1471
+ "description": "Birth date (ISO 8601)",
1472
+ "example": "1990-01-01"
1473
+ }
1474
+ },
1475
+ "required": [
1476
+ "displayName",
1477
+ "requesterUserId",
1478
+ "visibility",
1479
+ "userId",
1480
+ "gender",
1481
+ "birthDate"
1482
+ ]
1483
+ },
1484
+ "MutateUserResponseDto": {
1485
+ "type": "object",
1486
+ "properties": {
1487
+ "userId": {
1488
+ "type": "string",
1489
+ "description": "User ID",
1490
+ "example": "user-123"
1491
+ }
1492
+ },
1493
+ "required": [
1494
+ "userId"
1495
+ ]
1496
+ },
1497
+ "UserDto": {
1498
+ "type": "object",
1499
+ "properties": {
1500
+ "entityId": {
1501
+ "type": "string",
1502
+ "description": "Unique identifier for the entity",
1503
+ "example": "entity-123"
1504
+ },
1505
+ "tenantId": {
1506
+ "type": "string",
1507
+ "description": "Tenant identifier the entity belongs to",
1508
+ "example": "tenant-abc"
1509
+ },
1510
+ "displayName": {
1511
+ "type": "string",
1512
+ "description": "Display name of the entity",
1513
+ "example": "Sample Entity"
1514
+ },
1515
+ "visibility": {
1516
+ "type": "string",
1517
+ "description": "Visibility of the entity",
1518
+ "enum": [
1519
+ "PUBLIC",
1520
+ "PRIVATE"
1521
+ ],
1522
+ "example": "PUBLIC"
1523
+ },
1524
+ "description": {
1525
+ "type": "string",
1526
+ "description": "Description of the entity",
1527
+ "example": "A description of the entity"
1528
+ },
1529
+ "tags": {
1530
+ "description": "Tags associated with the entity",
1531
+ "example": [
1532
+ "tag1",
1533
+ "tag2"
1534
+ ],
1535
+ "type": "array",
1536
+ "items": {
1537
+ "type": "string"
1538
+ }
1539
+ },
1540
+ "createdAt": {
1541
+ "type": "string",
1542
+ "description": "Date/time the entity was created (ISO string)",
1543
+ "example": "2024-05-01T12:34:56.789Z"
1544
+ },
1545
+ "updatedAt": {
1546
+ "type": "string",
1547
+ "description": "Date/time the entity was last updated (ISO string)",
1548
+ "example": "2024-05-02T12:34:56.789Z"
1549
+ },
1550
+ "location": {
1551
+ "description": "Required location information",
1552
+ "allOf": [
1553
+ {
1554
+ "$ref": "#/components/schemas/LocationDto"
1555
+ }
1556
+ ]
1557
+ },
1558
+ "gender": {
1559
+ "type": "string",
1560
+ "description": "Gender",
1561
+ "example": "female"
1562
+ },
1563
+ "birthDate": {
1564
+ "type": "string",
1565
+ "description": "Birth date (ISO 8601)",
1566
+ "example": "1990-01-01"
1567
+ }
1568
+ },
1569
+ "required": [
1570
+ "gender",
1571
+ "birthDate"
1572
+ ]
1573
+ },
1574
+ "UpdateUserDto": {
1575
+ "type": "object",
1576
+ "properties": {
1577
+ "requesterUserId": {
1578
+ "type": "string",
1579
+ "description": "User ID of the requester",
1580
+ "example": "user-123"
1581
+ },
1582
+ "visibility": {
1583
+ "type": "string",
1584
+ "description": "Visibility of the entity",
1585
+ "enum": [
1586
+ "public",
1587
+ "connections",
1588
+ "hidden"
1589
+ ],
1590
+ "example": "public"
1591
+ },
1592
+ "displayName": {
1593
+ "type": "string",
1594
+ "description": "Display name",
1595
+ "example": "Display Name"
1596
+ },
1597
+ "location": {
1598
+ "description": "Optional location information",
1599
+ "allOf": [
1600
+ {
1601
+ "$ref": "#/components/schemas/LocationDto"
1602
+ }
1603
+ ]
1604
+ },
1605
+ "description": {
1606
+ "type": "string",
1607
+ "description": "Entity description",
1608
+ "example": "A description of the entity"
1609
+ },
1610
+ "tags": {
1611
+ "description": "Entity tags",
1612
+ "example": [
1613
+ "tag1",
1614
+ "tag2"
1615
+ ],
1616
+ "type": "array",
1617
+ "items": {
1618
+ "type": "string"
1619
+ }
1620
+ },
1621
+ "gender": {
1622
+ "type": "string",
1623
+ "description": "Gender",
1624
+ "example": "female"
1625
+ },
1626
+ "birthDate": {
1627
+ "type": "string",
1628
+ "description": "Birth date (ISO 8601)",
1629
+ "example": "1990-01-01"
1630
+ }
1631
+ },
1632
+ "required": [
1633
+ "requesterUserId",
1634
+ "displayName",
1635
+ "gender",
1636
+ "birthDate"
1637
+ ]
1638
+ },
1639
+ "EntityConnectionDto": {
1640
+ "type": "object",
1641
+ "properties": {
1642
+ "createdAt": {
1643
+ "type": "string",
1644
+ "description": "Date/time the connection was created (ISO string)",
1645
+ "example": "2024-05-01T12:34:56.789Z"
1646
+ },
1647
+ "updatedAt": {
1648
+ "type": "string",
1649
+ "description": "Date/time the connection was last updated (ISO string)",
1650
+ "example": "2024-05-02T12:34:56.789Z"
1651
+ },
1652
+ "state": {
1653
+ "type": "string",
1654
+ "description": "Connection state",
1655
+ "enum": [
1656
+ "requested",
1657
+ "active",
1658
+ "rejected"
1659
+ ]
1660
+ }
1661
+ },
1662
+ "required": [
1663
+ "state"
1664
+ ]
1665
+ },
1666
+ "UserEntityConnectionDto": {
1667
+ "type": "object",
1668
+ "properties": {
1669
+ "createdAt": {
1670
+ "type": "string",
1671
+ "description": "Date/time the connection was created (ISO string)",
1672
+ "example": "2024-05-01T12:34:56.789Z"
1673
+ },
1674
+ "updatedAt": {
1675
+ "type": "string",
1676
+ "description": "Date/time the connection was last updated (ISO string)",
1677
+ "example": "2024-05-02T12:34:56.789Z"
1678
+ },
1679
+ "state": {
1680
+ "type": "string",
1681
+ "description": "Connection state",
1682
+ "enum": [
1683
+ "requested",
1684
+ "active",
1685
+ "rejected"
1686
+ ]
1687
+ },
1688
+ "userId": {
1689
+ "type": "string",
1690
+ "description": "User ID",
1691
+ "example": "user-123"
1692
+ }
1693
+ },
1694
+ "required": [
1695
+ "state",
1696
+ "userId"
1697
+ ]
1698
+ },
1699
+ "GetUsersDto": {
1700
+ "type": "object",
1701
+ "properties": {
1702
+ "userIds": {
1703
+ "description": "The IDs of the users",
1704
+ "example": [
1705
+ "123e4567-e89b-12d3-a456-426614174000",
1706
+ "123e4567-e89b-12d3-a456-426614174001"
1707
+ ],
1708
+ "type": "array",
1709
+ "items": {
1710
+ "type": "string"
1711
+ }
1712
+ }
1713
+ },
1714
+ "required": [
1715
+ "userIds"
1716
+ ]
1717
+ },
1718
+ "GroupEntityConnectionDto": {
1719
+ "type": "object",
1720
+ "properties": {
1721
+ "createdAt": {
1722
+ "type": "string",
1723
+ "description": "Date/time the connection was created (ISO string)",
1724
+ "example": "2024-05-01T12:34:56.789Z"
1725
+ },
1726
+ "updatedAt": {
1727
+ "type": "string",
1728
+ "description": "Date/time the connection was last updated (ISO string)",
1729
+ "example": "2024-05-02T12:34:56.789Z"
1730
+ },
1731
+ "state": {
1732
+ "type": "string",
1733
+ "description": "Connection state",
1734
+ "enum": [
1735
+ "requested",
1736
+ "active",
1737
+ "rejected"
1738
+ ]
1739
+ },
1740
+ "groupId": {
1741
+ "type": "string",
1742
+ "description": "Group ID",
1743
+ "example": "group-123"
1744
+ }
1745
+ },
1746
+ "required": [
1747
+ "state",
1748
+ "groupId"
1749
+ ]
1750
+ },
1751
+ "EventEntityConnectionDto": {
1752
+ "type": "object",
1753
+ "properties": {
1754
+ "createdAt": {
1755
+ "type": "string",
1756
+ "description": "Date/time the connection was created (ISO string)",
1757
+ "example": "2024-05-01T12:34:56.789Z"
1758
+ },
1759
+ "updatedAt": {
1760
+ "type": "string",
1761
+ "description": "Date/time the connection was last updated (ISO string)",
1762
+ "example": "2024-05-02T12:34:56.789Z"
1763
+ },
1764
+ "state": {
1765
+ "type": "string",
1766
+ "description": "Connection state",
1767
+ "enum": [
1768
+ "requested",
1769
+ "active",
1770
+ "rejected"
1771
+ ]
1772
+ },
1773
+ "eventId": {
1774
+ "type": "string",
1775
+ "description": "Event ID",
1776
+ "example": "event-123"
1777
+ }
1778
+ },
1779
+ "required": [
1780
+ "state",
1781
+ "eventId"
1782
+ ]
1783
+ },
1784
+ "CreateEventDto": {
1785
+ "type": "object",
1786
+ "properties": {
1787
+ "displayName": {
1788
+ "type": "string",
1789
+ "description": "Display name",
1790
+ "example": "Display Name"
1791
+ },
1792
+ "requesterUserId": {
1793
+ "type": "string",
1794
+ "description": "User ID of the requester",
1795
+ "example": "user-123"
1796
+ },
1797
+ "visibility": {
1798
+ "type": "string",
1799
+ "description": "Visibility of the entity",
1800
+ "enum": [
1801
+ "public",
1802
+ "connections",
1803
+ "hidden"
1804
+ ],
1805
+ "example": "public"
1806
+ },
1807
+ "location": {
1808
+ "description": "Optional location information",
1809
+ "allOf": [
1810
+ {
1811
+ "$ref": "#/components/schemas/LocationDto"
1812
+ }
1813
+ ]
1814
+ },
1815
+ "description": {
1816
+ "type": "string",
1817
+ "description": "Entity description",
1818
+ "example": "A description of the entity"
1819
+ },
1820
+ "tags": {
1821
+ "description": "Entity tags",
1822
+ "example": [
1823
+ "tag1",
1824
+ "tag2"
1825
+ ],
1826
+ "type": "array",
1827
+ "items": {
1828
+ "type": "string"
1829
+ }
1830
+ },
1831
+ "eventId": {
1832
+ "type": "string",
1833
+ "description": "Unique event identifier",
1834
+ "example": "event-123"
1835
+ },
1836
+ "startTime": {
1837
+ "type": "string",
1838
+ "description": "Start time (ISO 8601)",
1839
+ "example": "2024-07-15T18:00:00Z"
1840
+ },
1841
+ "endTime": {
1842
+ "type": "string",
1843
+ "description": "End time (ISO 8601)",
1844
+ "example": "2024-07-15T22:00:00Z"
1845
+ },
1846
+ "type": {
1847
+ "type": "string",
1848
+ "description": "Event type",
1849
+ "example": "concert"
1850
+ },
1851
+ "associatedGroupId": {
1852
+ "type": "string",
1853
+ "description": "Identifier of associated group which owns the event. Owners/admins of the group will be admins of the event.",
1854
+ "example": "group-123"
1855
+ }
1856
+ },
1857
+ "required": [
1858
+ "displayName",
1859
+ "requesterUserId",
1860
+ "visibility",
1861
+ "eventId",
1862
+ "startTime",
1863
+ "endTime",
1864
+ "type"
1865
+ ]
1866
+ },
1867
+ "EventDto": {
1868
+ "type": "object",
1869
+ "properties": {
1870
+ "entityId": {
1871
+ "type": "string",
1872
+ "description": "Unique identifier for the entity",
1873
+ "example": "entity-123"
1874
+ },
1875
+ "tenantId": {
1876
+ "type": "string",
1877
+ "description": "Tenant identifier the entity belongs to",
1878
+ "example": "tenant-abc"
1879
+ },
1880
+ "displayName": {
1881
+ "type": "string",
1882
+ "description": "Display name of the entity",
1883
+ "example": "Sample Entity"
1884
+ },
1885
+ "visibility": {
1886
+ "type": "string",
1887
+ "description": "Visibility of the entity",
1888
+ "enum": [
1889
+ "PUBLIC",
1890
+ "PRIVATE"
1891
+ ],
1892
+ "example": "PUBLIC"
1893
+ },
1894
+ "description": {
1895
+ "type": "string",
1896
+ "description": "Description of the entity",
1897
+ "example": "A description of the entity"
1898
+ },
1899
+ "tags": {
1900
+ "description": "Tags associated with the entity",
1901
+ "example": [
1902
+ "tag1",
1903
+ "tag2"
1904
+ ],
1905
+ "type": "array",
1906
+ "items": {
1907
+ "type": "string"
1908
+ }
1909
+ },
1910
+ "createdAt": {
1911
+ "type": "string",
1912
+ "description": "Date/time the entity was created (ISO string)",
1913
+ "example": "2024-05-01T12:34:56.789Z"
1914
+ },
1915
+ "updatedAt": {
1916
+ "type": "string",
1917
+ "description": "Date/time the entity was last updated (ISO string)",
1918
+ "example": "2024-05-02T12:34:56.789Z"
1919
+ },
1920
+ "location": {
1921
+ "description": "Required location information",
1922
+ "allOf": [
1923
+ {
1924
+ "$ref": "#/components/schemas/LocationDto"
1925
+ }
1926
+ ]
1927
+ },
1928
+ "startTime": {
1929
+ "type": "string",
1930
+ "description": "Start time (ISO 8601)",
1931
+ "example": "2024-07-15T18:00:00Z"
1932
+ },
1933
+ "endTime": {
1934
+ "type": "string",
1935
+ "description": "End time (ISO 8601)",
1936
+ "example": "2024-07-15T22:00:00Z"
1937
+ },
1938
+ "type": {
1939
+ "type": "string",
1940
+ "description": "Event type",
1941
+ "example": "concert"
1942
+ },
1943
+ "associatedGroupId": {
1944
+ "type": "string",
1945
+ "description": "Identifier of associated group which owns the event. Owners/admins of the group will be admins of the event.",
1946
+ "example": "group-123"
1947
+ }
1948
+ },
1949
+ "required": [
1950
+ "startTime",
1951
+ "endTime",
1952
+ "type"
1953
+ ]
1954
+ },
1955
+ "UpdateEventDto": {
1956
+ "type": "object",
1957
+ "properties": {
1958
+ "requesterUserId": {
1959
+ "type": "string",
1960
+ "description": "User ID of the requester",
1961
+ "example": "user-123"
1962
+ },
1963
+ "visibility": {
1964
+ "type": "string",
1965
+ "description": "Visibility of the entity",
1966
+ "enum": [
1967
+ "public",
1968
+ "connections",
1969
+ "hidden"
1970
+ ],
1971
+ "example": "public"
1972
+ },
1973
+ "displayName": {
1974
+ "type": "string",
1975
+ "description": "Display name",
1976
+ "example": "Display Name"
1977
+ },
1978
+ "location": {
1979
+ "description": "Optional location information",
1980
+ "allOf": [
1981
+ {
1982
+ "$ref": "#/components/schemas/LocationDto"
1983
+ }
1984
+ ]
1985
+ },
1986
+ "description": {
1987
+ "type": "string",
1988
+ "description": "Entity description",
1989
+ "example": "A description of the entity"
1990
+ },
1991
+ "tags": {
1992
+ "description": "Entity tags",
1993
+ "example": [
1994
+ "tag1",
1995
+ "tag2"
1996
+ ],
1997
+ "type": "array",
1998
+ "items": {
1999
+ "type": "string"
2000
+ }
2001
+ },
2002
+ "startTime": {
2003
+ "type": "string",
2004
+ "description": "Start time (ISO 8601)",
2005
+ "example": "2024-07-15T18:00:00Z"
2006
+ },
2007
+ "endTime": {
2008
+ "type": "string",
2009
+ "description": "End time (ISO 8601)",
2010
+ "example": "2024-07-15T22:00:00Z"
2011
+ },
2012
+ "type": {
2013
+ "type": "string",
2014
+ "description": "Event type",
2015
+ "example": "concert"
2016
+ }
2017
+ },
2018
+ "required": [
2019
+ "requesterUserId",
2020
+ "displayName",
2021
+ "startTime",
2022
+ "endTime",
2023
+ "type"
2024
+ ]
2025
+ },
2026
+ "GetEventsDto": {
2027
+ "type": "object",
2028
+ "properties": {
2029
+ "eventIds": {
2030
+ "description": "The IDs of the events",
2031
+ "example": [
2032
+ "123e4567-e89b-12d3-a456-426614174000",
2033
+ "123e4567-e89b-12d3-a456-426614174001"
2034
+ ],
2035
+ "type": "array",
2036
+ "items": {
2037
+ "type": "string"
2038
+ }
2039
+ }
2040
+ },
2041
+ "required": [
2042
+ "eventIds"
2043
+ ]
2044
+ },
2045
+ "CreateGroupDto": {
2046
+ "type": "object",
2047
+ "properties": {
2048
+ "displayName": {
2049
+ "type": "string",
2050
+ "description": "Display name",
2051
+ "example": "Display Name"
2052
+ },
2053
+ "requesterUserId": {
2054
+ "type": "string",
2055
+ "description": "User ID of the requester",
2056
+ "example": "user-123"
2057
+ },
2058
+ "visibility": {
2059
+ "type": "string",
2060
+ "description": "Visibility of the entity",
2061
+ "enum": [
2062
+ "public",
2063
+ "connections",
2064
+ "hidden"
2065
+ ],
2066
+ "example": "public"
2067
+ },
2068
+ "location": {
2069
+ "description": "Optional location information",
2070
+ "allOf": [
2071
+ {
2072
+ "$ref": "#/components/schemas/LocationDto"
2073
+ }
2074
+ ]
2075
+ },
2076
+ "description": {
2077
+ "type": "string",
2078
+ "description": "Entity description",
2079
+ "example": "A description of the entity"
2080
+ },
2081
+ "tags": {
2082
+ "description": "Entity tags",
2083
+ "example": [
2084
+ "tag1",
2085
+ "tag2"
2086
+ ],
2087
+ "type": "array",
2088
+ "items": {
2089
+ "type": "string"
2090
+ }
2091
+ },
2092
+ "groupId": {
2093
+ "type": "string",
2094
+ "description": "Unique group identifier",
2095
+ "example": "group-123"
2096
+ },
2097
+ "type": {
2098
+ "type": "string",
2099
+ "description": "Group type",
2100
+ "example": "club"
2101
+ }
2102
+ },
2103
+ "required": [
2104
+ "displayName",
2105
+ "requesterUserId",
2106
+ "visibility",
2107
+ "groupId",
2108
+ "type"
2109
+ ]
2110
+ },
2111
+ "GroupDto": {
2112
+ "type": "object",
2113
+ "properties": {
2114
+ "entityId": {
2115
+ "type": "string",
2116
+ "description": "Unique identifier for the entity",
2117
+ "example": "entity-123"
2118
+ },
2119
+ "tenantId": {
2120
+ "type": "string",
2121
+ "description": "Tenant identifier the entity belongs to",
2122
+ "example": "tenant-abc"
2123
+ },
2124
+ "displayName": {
2125
+ "type": "string",
2126
+ "description": "Display name of the entity",
2127
+ "example": "Sample Entity"
2128
+ },
2129
+ "visibility": {
2130
+ "type": "string",
2131
+ "description": "Visibility of the entity",
2132
+ "enum": [
2133
+ "PUBLIC",
2134
+ "PRIVATE"
2135
+ ],
2136
+ "example": "PUBLIC"
2137
+ },
2138
+ "description": {
2139
+ "type": "string",
2140
+ "description": "Description of the entity",
2141
+ "example": "A description of the entity"
2142
+ },
2143
+ "tags": {
2144
+ "description": "Tags associated with the entity",
2145
+ "example": [
2146
+ "tag1",
2147
+ "tag2"
2148
+ ],
2149
+ "type": "array",
2150
+ "items": {
2151
+ "type": "string"
2152
+ }
2153
+ },
2154
+ "createdAt": {
2155
+ "type": "string",
2156
+ "description": "Date/time the entity was created (ISO string)",
2157
+ "example": "2024-05-01T12:34:56.789Z"
2158
+ },
2159
+ "updatedAt": {
2160
+ "type": "string",
2161
+ "description": "Date/time the entity was last updated (ISO string)",
2162
+ "example": "2024-05-02T12:34:56.789Z"
2163
+ },
2164
+ "location": {
2165
+ "description": "Required location information",
2166
+ "allOf": [
2167
+ {
2168
+ "$ref": "#/components/schemas/LocationDto"
2169
+ }
2170
+ ]
2171
+ },
2172
+ "type": {
2173
+ "type": "string",
2174
+ "description": "Group type",
2175
+ "example": "club"
2176
+ }
2177
+ },
2178
+ "required": [
2179
+ "type"
2180
+ ]
2181
+ },
2182
+ "UpdateGroupDto": {
2183
+ "type": "object",
2184
+ "properties": {
2185
+ "requesterUserId": {
2186
+ "type": "string",
2187
+ "description": "User ID of the requester",
2188
+ "example": "user-123"
2189
+ },
2190
+ "visibility": {
2191
+ "type": "string",
2192
+ "description": "Visibility of the entity",
2193
+ "enum": [
2194
+ "public",
2195
+ "connections",
2196
+ "hidden"
2197
+ ],
2198
+ "example": "public"
2199
+ },
2200
+ "displayName": {
2201
+ "type": "string",
2202
+ "description": "Display name",
2203
+ "example": "Display Name"
2204
+ },
2205
+ "location": {
2206
+ "description": "Optional location information",
2207
+ "allOf": [
2208
+ {
2209
+ "$ref": "#/components/schemas/LocationDto"
2210
+ }
2211
+ ]
2212
+ },
2213
+ "description": {
2214
+ "type": "string",
2215
+ "description": "Entity description",
2216
+ "example": "A description of the entity"
2217
+ },
2218
+ "tags": {
2219
+ "description": "Entity tags",
2220
+ "example": [
2221
+ "tag1",
2222
+ "tag2"
2223
+ ],
2224
+ "type": "array",
2225
+ "items": {
2226
+ "type": "string"
2227
+ }
2228
+ },
2229
+ "type": {
2230
+ "type": "string",
2231
+ "description": "Group type",
2232
+ "example": "club"
2233
+ }
2234
+ },
2235
+ "required": [
2236
+ "requesterUserId",
2237
+ "displayName",
2238
+ "type"
2239
+ ]
2240
+ },
2241
+ "GetGroupsDto": {
2242
+ "type": "object",
2243
+ "properties": {
2244
+ "groupIds": {
2245
+ "description": "The IDs of the groups",
2246
+ "example": [
2247
+ "123e4567-e89b-12d3-a456-426614174000",
2248
+ "123e4567-e89b-12d3-a456-426614174001"
2249
+ ],
2250
+ "type": "array",
2251
+ "items": {
2252
+ "type": "string"
2253
+ }
2254
+ }
2255
+ },
2256
+ "required": [
2257
+ "groupIds"
2258
+ ]
2259
+ }
2260
+ }
2261
+ }
2262
+ }