@proxima-nexus/openapi 2.0.1 → 2.1.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/CHANGELOG.md CHANGED
@@ -5,6 +5,27 @@ All notable changes to the Proxima Nexus OpenAPI specification are documented in
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.1.0] - 2026-03-02
9
+
10
+ ### Added
11
+
12
+ - **Event series API**
13
+ - `POST /event-series`: create an event series from an RRULE and pre-generate all event instances. The creating user (or associated group) becomes the OWNER.
14
+ - `GET /event-series/{seriesId}`: fetch an event series definition.
15
+ - `PUT /event-series/{seriesId}`: update a series and propagate metadata changes to upcoming instances (per-instance overrides are preserved).
16
+ - `DELETE /event-series/{seriesId}`: delete a series and all upcoming event instances; past instances are preserved.
17
+ - `GET /event-series/{seriesId}/events`: list all event instances in a series, ordered by start time.
18
+ - **New schemas**: `CreateEventSeriesDto`, `EventSeriesDto`, and `UpdateEventSeriesDto` for creating, returning, and updating event series.
19
+ - **Event instances**: `EventDto` now includes an optional `seriesId` linking an instance back to its series.
20
+
21
+ ### Changed
22
+
23
+ - **Event updates**: `PUT /event/{eventId}` summary clarifies how updates behave for instances in a series—fields supplied in the request body are treated as per-instance overrides and no longer follow series-level updates.
24
+ - **Validation**
25
+ - `UpdateUserDto`: `displayName` is no longer required; only `gender` and `birthDate` remain required.
26
+ - `CreateEventDto`: schema no longer requires `displayName`, `startTime`, `endTime`, or `type` (server-side validation may still enforce business rules).
27
+ - Group create/update DTOs that previously required `displayName` now only require `type`.
28
+
8
29
  ## [2.0.1] - 2026-02-04
9
30
 
10
31
  ### Changed
package/openapi.json CHANGED
@@ -880,7 +880,7 @@
880
880
  },
881
881
  "put": {
882
882
  "operationId": "EventController_update",
883
- "summary": "Update an event",
883
+ "summary": "Update an event. For series instances, only the fields provided in the request body will be marked as overridden and will no longer be propagated by series-level updates.",
884
884
  "parameters": [
885
885
  {
886
886
  "name": "eventId",
@@ -1820,6 +1820,245 @@
1820
1820
  }
1821
1821
  ]
1822
1822
  }
1823
+ },
1824
+ "/event-series": {
1825
+ "post": {
1826
+ "operationId": "EventSeriesController_create",
1827
+ "summary": "Create an event series",
1828
+ "description": "Creates a series definition and pre-generates all event instances based on the RRULE. The creating user (or associated group) becomes the OWNER.",
1829
+ "parameters": [
1830
+ {
1831
+ "name": "X-Proxima-Nexus-Requester-User-Id",
1832
+ "in": "header",
1833
+ "description": "ID of the user creating the series",
1834
+ "required": true,
1835
+ "schema": {
1836
+ "type": "string"
1837
+ }
1838
+ }
1839
+ ],
1840
+ "requestBody": {
1841
+ "required": true,
1842
+ "content": {
1843
+ "application/json": {
1844
+ "schema": {
1845
+ "$ref": "#/components/schemas/CreateEventSeriesDto"
1846
+ }
1847
+ }
1848
+ }
1849
+ },
1850
+ "responses": {
1851
+ "201": {
1852
+ "description": "Created series ID",
1853
+ "content": {
1854
+ "application/json": {
1855
+ "schema": {
1856
+ "type": "string"
1857
+ }
1858
+ }
1859
+ }
1860
+ },
1861
+ "400": {
1862
+ "description": "Requester user ID missing, or associated group not found"
1863
+ },
1864
+ "401": {
1865
+ "description": "User cannot create series for the associated group"
1866
+ }
1867
+ },
1868
+ "tags": [
1869
+ "event-series"
1870
+ ],
1871
+ "security": [
1872
+ {
1873
+ "api_key": []
1874
+ }
1875
+ ]
1876
+ }
1877
+ },
1878
+ "/event-series/{seriesId}": {
1879
+ "get": {
1880
+ "operationId": "EventSeriesController_get",
1881
+ "summary": "Get an event series by ID",
1882
+ "parameters": [
1883
+ {
1884
+ "name": "seriesId",
1885
+ "required": true,
1886
+ "in": "path",
1887
+ "schema": {
1888
+ "type": "string"
1889
+ }
1890
+ }
1891
+ ],
1892
+ "responses": {
1893
+ "200": {
1894
+ "description": "Event series returned",
1895
+ "content": {
1896
+ "application/json": {
1897
+ "schema": {
1898
+ "$ref": "#/components/schemas/EventSeriesDto"
1899
+ }
1900
+ }
1901
+ }
1902
+ },
1903
+ "404": {
1904
+ "description": "Series not found"
1905
+ }
1906
+ },
1907
+ "tags": [
1908
+ "event-series"
1909
+ ],
1910
+ "security": [
1911
+ {
1912
+ "api_key": []
1913
+ }
1914
+ ]
1915
+ },
1916
+ "put": {
1917
+ "operationId": "EventSeriesController_update",
1918
+ "summary": "Update an event series",
1919
+ "description": "Updates the series definition and propagates metadata changes to all upcoming event instances. Fields that were individually overridden on a specific instance will not be overwritten.",
1920
+ "parameters": [
1921
+ {
1922
+ "name": "seriesId",
1923
+ "required": true,
1924
+ "in": "path",
1925
+ "schema": {
1926
+ "type": "string"
1927
+ }
1928
+ },
1929
+ {
1930
+ "name": "X-Proxima-Nexus-Requester-User-Id",
1931
+ "in": "header",
1932
+ "description": "ID of the user updating the series",
1933
+ "required": true,
1934
+ "schema": {
1935
+ "type": "string"
1936
+ }
1937
+ }
1938
+ ],
1939
+ "requestBody": {
1940
+ "required": true,
1941
+ "content": {
1942
+ "application/json": {
1943
+ "schema": {
1944
+ "$ref": "#/components/schemas/UpdateEventSeriesDto"
1945
+ }
1946
+ }
1947
+ }
1948
+ },
1949
+ "responses": {
1950
+ "200": {
1951
+ "description": "Updated series ID",
1952
+ "content": {
1953
+ "application/json": {
1954
+ "schema": {
1955
+ "type": "string"
1956
+ }
1957
+ }
1958
+ }
1959
+ },
1960
+ "401": {
1961
+ "description": "User cannot edit this series"
1962
+ },
1963
+ "404": {
1964
+ "description": "Series not found"
1965
+ }
1966
+ },
1967
+ "tags": [
1968
+ "event-series"
1969
+ ],
1970
+ "security": [
1971
+ {
1972
+ "api_key": []
1973
+ }
1974
+ ]
1975
+ },
1976
+ "delete": {
1977
+ "operationId": "EventSeriesController_remove",
1978
+ "summary": "Delete an event series",
1979
+ "description": "Deletes the series and all upcoming event instances. Past instances (already started) are preserved.",
1980
+ "parameters": [
1981
+ {
1982
+ "name": "seriesId",
1983
+ "required": true,
1984
+ "in": "path",
1985
+ "schema": {
1986
+ "type": "string"
1987
+ }
1988
+ },
1989
+ {
1990
+ "name": "X-Proxima-Nexus-Requester-User-Id",
1991
+ "in": "header",
1992
+ "description": "ID of the user deleting the series",
1993
+ "required": true,
1994
+ "schema": {
1995
+ "type": "string"
1996
+ }
1997
+ }
1998
+ ],
1999
+ "responses": {
2000
+ "204": {
2001
+ "description": "Series deleted"
2002
+ },
2003
+ "401": {
2004
+ "description": "User cannot delete this series"
2005
+ },
2006
+ "404": {
2007
+ "description": "Series not found"
2008
+ }
2009
+ },
2010
+ "tags": [
2011
+ "event-series"
2012
+ ],
2013
+ "security": [
2014
+ {
2015
+ "api_key": []
2016
+ }
2017
+ ]
2018
+ }
2019
+ },
2020
+ "/event-series/{seriesId}/events": {
2021
+ "get": {
2022
+ "operationId": "EventSeriesController_getInstances",
2023
+ "summary": "List all event instances in a series",
2024
+ "description": "Returns all event instances (past and upcoming) belonging to this series, ordered by start time.",
2025
+ "parameters": [
2026
+ {
2027
+ "name": "seriesId",
2028
+ "required": true,
2029
+ "in": "path",
2030
+ "schema": {
2031
+ "type": "string"
2032
+ }
2033
+ }
2034
+ ],
2035
+ "responses": {
2036
+ "200": {
2037
+ "description": "Event instances returned",
2038
+ "content": {
2039
+ "application/json": {
2040
+ "schema": {
2041
+ "type": "array",
2042
+ "items": {
2043
+ "$ref": "#/components/schemas/EventDto"
2044
+ }
2045
+ }
2046
+ }
2047
+ }
2048
+ },
2049
+ "404": {
2050
+ "description": "Series not found"
2051
+ }
2052
+ },
2053
+ "tags": [
2054
+ "event-series"
2055
+ ],
2056
+ "security": [
2057
+ {
2058
+ "api_key": []
2059
+ }
2060
+ ]
2061
+ }
1823
2062
  }
1824
2063
  },
1825
2064
  "info": {
@@ -2114,7 +2353,6 @@
2114
2353
  }
2115
2354
  },
2116
2355
  "required": [
2117
- "displayName",
2118
2356
  "gender",
2119
2357
  "birthDate"
2120
2358
  ]
@@ -2474,6 +2712,11 @@
2474
2712
  "type": "number",
2475
2713
  "description": "Maximum number of attendees allowed (null = unlimited)",
2476
2714
  "example": 100
2715
+ },
2716
+ "seriesId": {
2717
+ "type": "string",
2718
+ "description": "ID of the event series this instance belongs to, if any",
2719
+ "example": "series-weekly-standup"
2477
2720
  }
2478
2721
  },
2479
2722
  "required": [
@@ -2544,13 +2787,7 @@
2544
2787
  "description": "Maximum number of attendees allowed (null = unlimited)",
2545
2788
  "example": 100
2546
2789
  }
2547
- },
2548
- "required": [
2549
- "displayName",
2550
- "startTime",
2551
- "endTime",
2552
- "type"
2553
- ]
2790
+ }
2554
2791
  },
2555
2792
  "MutateEventEntityConnectionDto": {
2556
2793
  "type": "object",
@@ -2791,7 +3028,6 @@
2791
3028
  }
2792
3029
  },
2793
3030
  "required": [
2794
- "displayName",
2795
3031
  "type"
2796
3032
  ]
2797
3033
  },
@@ -2830,6 +3066,274 @@
2830
3066
  "required": [
2831
3067
  "groupIds"
2832
3068
  ]
3069
+ },
3070
+ "CreateEventSeriesDto": {
3071
+ "type": "object",
3072
+ "properties": {
3073
+ "displayName": {
3074
+ "type": "string",
3075
+ "description": "Display name",
3076
+ "example": "Display Name"
3077
+ },
3078
+ "visibility": {
3079
+ "type": "string",
3080
+ "description": "Visibility of the entity",
3081
+ "enum": [
3082
+ "public",
3083
+ "connections",
3084
+ "hidden"
3085
+ ],
3086
+ "example": "public"
3087
+ },
3088
+ "location": {
3089
+ "description": "Optional location information",
3090
+ "allOf": [
3091
+ {
3092
+ "$ref": "#/components/schemas/LocationDto"
3093
+ }
3094
+ ]
3095
+ },
3096
+ "description": {
3097
+ "type": "string",
3098
+ "description": "Entity description",
3099
+ "example": "A description of the entity"
3100
+ },
3101
+ "tags": {
3102
+ "description": "Entity tags",
3103
+ "example": [
3104
+ "tag1",
3105
+ "tag2"
3106
+ ],
3107
+ "type": "array",
3108
+ "items": {
3109
+ "type": "string"
3110
+ }
3111
+ },
3112
+ "seriesId": {
3113
+ "type": "string",
3114
+ "description": "Unique series identifier",
3115
+ "example": "series-weekly-standup"
3116
+ },
3117
+ "type": {
3118
+ "type": "string",
3119
+ "description": "Event type",
3120
+ "example": "standup"
3121
+ },
3122
+ "rrule": {
3123
+ "type": "string",
3124
+ "description": "iCal RRULE string (without DTSTART). Defines the recurrence pattern.",
3125
+ "example": "FREQ=WEEKLY;BYDAY=TH;UNTIL=20261231T000000Z"
3126
+ },
3127
+ "startDate": {
3128
+ "type": "string",
3129
+ "description": "Date of the first occurrence in YYYY-MM-DD format (local date in the given timezone)",
3130
+ "example": "2026-01-08"
3131
+ },
3132
+ "instanceStartTime": {
3133
+ "type": "string",
3134
+ "description": "Start time of each instance in HH:MM format (local time in the given timezone)",
3135
+ "example": "10:00"
3136
+ },
3137
+ "instanceEndTime": {
3138
+ "type": "string",
3139
+ "description": "End time of each instance in HH:MM format (local time in the given timezone)",
3140
+ "example": "11:00"
3141
+ },
3142
+ "timezone": {
3143
+ "type": "string",
3144
+ "description": "IANA timezone for interpreting times and generating instances",
3145
+ "example": "America/New_York"
3146
+ },
3147
+ "associatedGroupId": {
3148
+ "type": "string",
3149
+ "description": "Identifier of the associated group. Owners/admins of the group will be admins of the series.",
3150
+ "example": "group-engineering"
3151
+ },
3152
+ "maxNumAttendees": {
3153
+ "type": "number",
3154
+ "description": "Maximum number of attendees per event instance (null = unlimited)",
3155
+ "example": 50
3156
+ }
3157
+ },
3158
+ "required": [
3159
+ "displayName",
3160
+ "visibility",
3161
+ "seriesId",
3162
+ "type",
3163
+ "rrule",
3164
+ "startDate",
3165
+ "instanceStartTime",
3166
+ "instanceEndTime",
3167
+ "timezone"
3168
+ ]
3169
+ },
3170
+ "EventSeriesDto": {
3171
+ "type": "object",
3172
+ "properties": {
3173
+ "entityId": {
3174
+ "type": "string",
3175
+ "description": "Unique identifier for the entity",
3176
+ "example": "entity-123"
3177
+ },
3178
+ "displayName": {
3179
+ "type": "string",
3180
+ "description": "Display name of the entity",
3181
+ "example": "Sample Entity"
3182
+ },
3183
+ "visibility": {
3184
+ "type": "string",
3185
+ "description": "Visibility of the entity",
3186
+ "enum": [
3187
+ "PUBLIC",
3188
+ "PRIVATE"
3189
+ ],
3190
+ "example": "PUBLIC"
3191
+ },
3192
+ "description": {
3193
+ "type": "string",
3194
+ "description": "Description of the entity",
3195
+ "example": "A description of the entity"
3196
+ },
3197
+ "tags": {
3198
+ "description": "Tags associated with the entity",
3199
+ "example": [
3200
+ "tag1",
3201
+ "tag2"
3202
+ ],
3203
+ "type": "array",
3204
+ "items": {
3205
+ "type": "string"
3206
+ }
3207
+ },
3208
+ "createdAt": {
3209
+ "type": "string",
3210
+ "description": "Date/time the entity was created (ISO string)",
3211
+ "example": "2024-05-01T12:34:56.789Z"
3212
+ },
3213
+ "updatedAt": {
3214
+ "type": "string",
3215
+ "description": "Date/time the entity was last updated (ISO string)",
3216
+ "example": "2024-05-02T12:34:56.789Z"
3217
+ },
3218
+ "location": {
3219
+ "description": "Required location information",
3220
+ "allOf": [
3221
+ {
3222
+ "$ref": "#/components/schemas/LocationDto"
3223
+ }
3224
+ ]
3225
+ },
3226
+ "requesterConnection": {
3227
+ "description": "Connection to the requester",
3228
+ "allOf": [
3229
+ {
3230
+ "$ref": "#/components/schemas/EntityConnectionDto"
3231
+ }
3232
+ ]
3233
+ },
3234
+ "type": {
3235
+ "type": "string",
3236
+ "description": "Event type",
3237
+ "example": "standup"
3238
+ },
3239
+ "rrule": {
3240
+ "type": "string",
3241
+ "description": "iCal RRULE string defining the recurrence pattern",
3242
+ "example": "FREQ=WEEKLY;BYDAY=TH;UNTIL=20261231T000000Z"
3243
+ },
3244
+ "startDate": {
3245
+ "type": "string",
3246
+ "description": "Date of the first occurrence (YYYY-MM-DD, local in timezone)",
3247
+ "example": "2026-01-08"
3248
+ },
3249
+ "instanceStartTime": {
3250
+ "type": "string",
3251
+ "description": "Start time of each instance in HH:MM format",
3252
+ "example": "10:00"
3253
+ },
3254
+ "instanceEndTime": {
3255
+ "type": "string",
3256
+ "description": "End time of each instance in HH:MM format",
3257
+ "example": "11:00"
3258
+ },
3259
+ "timezone": {
3260
+ "type": "string",
3261
+ "description": "IANA timezone for all instances",
3262
+ "example": "America/New_York"
3263
+ },
3264
+ "associatedGroupId": {
3265
+ "type": "string",
3266
+ "description": "Identifier of the associated group",
3267
+ "example": "group-engineering"
3268
+ },
3269
+ "maxNumAttendees": {
3270
+ "type": "number",
3271
+ "description": "Maximum number of attendees per event instance",
3272
+ "example": 50
3273
+ }
3274
+ },
3275
+ "required": [
3276
+ "type",
3277
+ "rrule",
3278
+ "startDate",
3279
+ "instanceStartTime",
3280
+ "instanceEndTime",
3281
+ "timezone"
3282
+ ]
3283
+ },
3284
+ "UpdateEventSeriesDto": {
3285
+ "type": "object",
3286
+ "properties": {
3287
+ "visibility": {
3288
+ "type": "string",
3289
+ "description": "Visibility of the entity",
3290
+ "enum": [
3291
+ "public",
3292
+ "connections",
3293
+ "hidden"
3294
+ ],
3295
+ "example": "public"
3296
+ },
3297
+ "displayName": {
3298
+ "type": "string",
3299
+ "description": "Display name",
3300
+ "example": "Display Name"
3301
+ },
3302
+ "location": {
3303
+ "description": "Optional location information",
3304
+ "allOf": [
3305
+ {
3306
+ "$ref": "#/components/schemas/LocationDto"
3307
+ }
3308
+ ]
3309
+ },
3310
+ "description": {
3311
+ "type": "string",
3312
+ "description": "Entity description",
3313
+ "example": "A description of the entity"
3314
+ },
3315
+ "tags": {
3316
+ "description": "Entity tags",
3317
+ "example": [
3318
+ "tag1",
3319
+ "tag2"
3320
+ ],
3321
+ "type": "array",
3322
+ "items": {
3323
+ "type": "string"
3324
+ }
3325
+ },
3326
+ "type": {
3327
+ "type": "string",
3328
+ "description": "Event type",
3329
+ "example": "standup"
3330
+ },
3331
+ "maxNumAttendees": {
3332
+ "type": "number",
3333
+ "description": "Maximum number of attendees per event instance (null = unlimited)",
3334
+ "example": 50
3335
+ }
3336
+ }
2833
3337
  }
2834
3338
  }
2835
3339
  }
package/openapi.yaml CHANGED
@@ -583,7 +583,9 @@ paths:
583
583
  - api_key: []
584
584
  put:
585
585
  operationId: EventController_update
586
- summary: Update an event
586
+ summary: >-
587
+ Update an event. For series instances, only the fields provided in the request body will be marked as overridden
588
+ and will no longer be propagated by series-level updates.
587
589
  parameters:
588
590
  - name: eventId
589
591
  required: true
@@ -1180,6 +1182,156 @@ paths:
1180
1182
  - group
1181
1183
  security:
1182
1184
  - api_key: []
1185
+ /event-series:
1186
+ post:
1187
+ operationId: EventSeriesController_create
1188
+ summary: Create an event series
1189
+ description: >-
1190
+ Creates a series definition and pre-generates all event instances based on the RRULE. The creating user (or
1191
+ associated group) becomes the OWNER.
1192
+ parameters:
1193
+ - name: X-Proxima-Nexus-Requester-User-Id
1194
+ in: header
1195
+ description: ID of the user creating the series
1196
+ required: true
1197
+ schema:
1198
+ type: string
1199
+ requestBody:
1200
+ required: true
1201
+ content:
1202
+ application/json:
1203
+ schema:
1204
+ $ref: '#/components/schemas/CreateEventSeriesDto'
1205
+ responses:
1206
+ '201':
1207
+ description: Created series ID
1208
+ content:
1209
+ application/json:
1210
+ schema:
1211
+ type: string
1212
+ '400':
1213
+ description: Requester user ID missing, or associated group not found
1214
+ '401':
1215
+ description: User cannot create series for the associated group
1216
+ tags:
1217
+ - event-series
1218
+ security:
1219
+ - api_key: []
1220
+ /event-series/{seriesId}:
1221
+ get:
1222
+ operationId: EventSeriesController_get
1223
+ summary: Get an event series by ID
1224
+ parameters:
1225
+ - name: seriesId
1226
+ required: true
1227
+ in: path
1228
+ schema:
1229
+ type: string
1230
+ responses:
1231
+ '200':
1232
+ description: Event series returned
1233
+ content:
1234
+ application/json:
1235
+ schema:
1236
+ $ref: '#/components/schemas/EventSeriesDto'
1237
+ '404':
1238
+ description: Series not found
1239
+ tags:
1240
+ - event-series
1241
+ security:
1242
+ - api_key: []
1243
+ put:
1244
+ operationId: EventSeriesController_update
1245
+ summary: Update an event series
1246
+ description: >-
1247
+ Updates the series definition and propagates metadata changes to all upcoming event instances. Fields that were
1248
+ individually overridden on a specific instance will not be overwritten.
1249
+ parameters:
1250
+ - name: seriesId
1251
+ required: true
1252
+ in: path
1253
+ schema:
1254
+ type: string
1255
+ - name: X-Proxima-Nexus-Requester-User-Id
1256
+ in: header
1257
+ description: ID of the user updating the series
1258
+ required: true
1259
+ schema:
1260
+ type: string
1261
+ requestBody:
1262
+ required: true
1263
+ content:
1264
+ application/json:
1265
+ schema:
1266
+ $ref: '#/components/schemas/UpdateEventSeriesDto'
1267
+ responses:
1268
+ '200':
1269
+ description: Updated series ID
1270
+ content:
1271
+ application/json:
1272
+ schema:
1273
+ type: string
1274
+ '401':
1275
+ description: User cannot edit this series
1276
+ '404':
1277
+ description: Series not found
1278
+ tags:
1279
+ - event-series
1280
+ security:
1281
+ - api_key: []
1282
+ delete:
1283
+ operationId: EventSeriesController_remove
1284
+ summary: Delete an event series
1285
+ description: Deletes the series and all upcoming event instances. Past instances (already started) are preserved.
1286
+ parameters:
1287
+ - name: seriesId
1288
+ required: true
1289
+ in: path
1290
+ schema:
1291
+ type: string
1292
+ - name: X-Proxima-Nexus-Requester-User-Id
1293
+ in: header
1294
+ description: ID of the user deleting the series
1295
+ required: true
1296
+ schema:
1297
+ type: string
1298
+ responses:
1299
+ '204':
1300
+ description: Series deleted
1301
+ '401':
1302
+ description: User cannot delete this series
1303
+ '404':
1304
+ description: Series not found
1305
+ tags:
1306
+ - event-series
1307
+ security:
1308
+ - api_key: []
1309
+ /event-series/{seriesId}/events:
1310
+ get:
1311
+ operationId: EventSeriesController_getInstances
1312
+ summary: List all event instances in a series
1313
+ description: Returns all event instances (past and upcoming) belonging to this series, ordered by start time.
1314
+ parameters:
1315
+ - name: seriesId
1316
+ required: true
1317
+ in: path
1318
+ schema:
1319
+ type: string
1320
+ responses:
1321
+ '200':
1322
+ description: Event instances returned
1323
+ content:
1324
+ application/json:
1325
+ schema:
1326
+ type: array
1327
+ items:
1328
+ $ref: '#/components/schemas/EventDto'
1329
+ '404':
1330
+ description: Series not found
1331
+ tags:
1332
+ - event-series
1333
+ security:
1334
+ - api_key: []
1183
1335
  info:
1184
1336
  title: proxima-nexus-data-plane-api
1185
1337
  description: Proxima Nexus Data Plane API
@@ -1397,7 +1549,6 @@ components:
1397
1549
  description: Birth date (ISO 8601)
1398
1550
  example: '1990-01-01'
1399
1551
  required:
1400
- - displayName
1401
1552
  - gender
1402
1553
  - birthDate
1403
1554
  MutateUserConnectionDto:
@@ -1671,6 +1822,10 @@ components:
1671
1822
  type: number
1672
1823
  description: Maximum number of attendees allowed (null = unlimited)
1673
1824
  example: 100
1825
+ seriesId:
1826
+ type: string
1827
+ description: ID of the event series this instance belongs to, if any
1828
+ example: series-weekly-standup
1674
1829
  required:
1675
1830
  - startTime
1676
1831
  - endTime
@@ -1722,11 +1877,6 @@ components:
1722
1877
  type: number
1723
1878
  description: Maximum number of attendees allowed (null = unlimited)
1724
1879
  example: 100
1725
- required:
1726
- - displayName
1727
- - startTime
1728
- - endTime
1729
- - type
1730
1880
  MutateEventEntityConnectionDto:
1731
1881
  type: object
1732
1882
  properties:
@@ -1900,7 +2050,6 @@ components:
1900
2050
  - invite
1901
2051
  example: open
1902
2052
  required:
1903
- - displayName
1904
2053
  - type
1905
2054
  MutateGroupEntityConnectionDto:
1906
2055
  type: object
@@ -1927,3 +2076,204 @@ components:
1927
2076
  type: string
1928
2077
  required:
1929
2078
  - groupIds
2079
+ CreateEventSeriesDto:
2080
+ type: object
2081
+ properties:
2082
+ displayName:
2083
+ type: string
2084
+ description: Display name
2085
+ example: Display Name
2086
+ visibility:
2087
+ type: string
2088
+ description: Visibility of the entity
2089
+ enum:
2090
+ - public
2091
+ - connections
2092
+ - hidden
2093
+ example: public
2094
+ location:
2095
+ description: Optional location information
2096
+ allOf:
2097
+ - $ref: '#/components/schemas/LocationDto'
2098
+ description:
2099
+ type: string
2100
+ description: Entity description
2101
+ example: A description of the entity
2102
+ tags:
2103
+ description: Entity tags
2104
+ example:
2105
+ - tag1
2106
+ - tag2
2107
+ type: array
2108
+ items:
2109
+ type: string
2110
+ seriesId:
2111
+ type: string
2112
+ description: Unique series identifier
2113
+ example: series-weekly-standup
2114
+ type:
2115
+ type: string
2116
+ description: Event type
2117
+ example: standup
2118
+ rrule:
2119
+ type: string
2120
+ description: iCal RRULE string (without DTSTART). Defines the recurrence pattern.
2121
+ example: FREQ=WEEKLY;BYDAY=TH;UNTIL=20261231T000000Z
2122
+ startDate:
2123
+ type: string
2124
+ description: Date of the first occurrence in YYYY-MM-DD format (local date in the given timezone)
2125
+ example: '2026-01-08'
2126
+ instanceStartTime:
2127
+ type: string
2128
+ description: Start time of each instance in HH:MM format (local time in the given timezone)
2129
+ example: '10:00'
2130
+ instanceEndTime:
2131
+ type: string
2132
+ description: End time of each instance in HH:MM format (local time in the given timezone)
2133
+ example: '11:00'
2134
+ timezone:
2135
+ type: string
2136
+ description: IANA timezone for interpreting times and generating instances
2137
+ example: America/New_York
2138
+ associatedGroupId:
2139
+ type: string
2140
+ description: Identifier of the associated group. Owners/admins of the group will be admins of the series.
2141
+ example: group-engineering
2142
+ maxNumAttendees:
2143
+ type: number
2144
+ description: Maximum number of attendees per event instance (null = unlimited)
2145
+ example: 50
2146
+ required:
2147
+ - displayName
2148
+ - visibility
2149
+ - seriesId
2150
+ - type
2151
+ - rrule
2152
+ - startDate
2153
+ - instanceStartTime
2154
+ - instanceEndTime
2155
+ - timezone
2156
+ EventSeriesDto:
2157
+ type: object
2158
+ properties:
2159
+ entityId:
2160
+ type: string
2161
+ description: Unique identifier for the entity
2162
+ example: entity-123
2163
+ displayName:
2164
+ type: string
2165
+ description: Display name of the entity
2166
+ example: Sample Entity
2167
+ visibility:
2168
+ type: string
2169
+ description: Visibility of the entity
2170
+ enum:
2171
+ - PUBLIC
2172
+ - PRIVATE
2173
+ example: PUBLIC
2174
+ description:
2175
+ type: string
2176
+ description: Description of the entity
2177
+ example: A description of the entity
2178
+ tags:
2179
+ description: Tags associated with the entity
2180
+ example:
2181
+ - tag1
2182
+ - tag2
2183
+ type: array
2184
+ items:
2185
+ type: string
2186
+ createdAt:
2187
+ type: string
2188
+ description: Date/time the entity was created (ISO string)
2189
+ example: '2024-05-01T12:34:56.789Z'
2190
+ updatedAt:
2191
+ type: string
2192
+ description: Date/time the entity was last updated (ISO string)
2193
+ example: '2024-05-02T12:34:56.789Z'
2194
+ location:
2195
+ description: Required location information
2196
+ allOf:
2197
+ - $ref: '#/components/schemas/LocationDto'
2198
+ requesterConnection:
2199
+ description: Connection to the requester
2200
+ allOf:
2201
+ - $ref: '#/components/schemas/EntityConnectionDto'
2202
+ type:
2203
+ type: string
2204
+ description: Event type
2205
+ example: standup
2206
+ rrule:
2207
+ type: string
2208
+ description: iCal RRULE string defining the recurrence pattern
2209
+ example: FREQ=WEEKLY;BYDAY=TH;UNTIL=20261231T000000Z
2210
+ startDate:
2211
+ type: string
2212
+ description: Date of the first occurrence (YYYY-MM-DD, local in timezone)
2213
+ example: '2026-01-08'
2214
+ instanceStartTime:
2215
+ type: string
2216
+ description: Start time of each instance in HH:MM format
2217
+ example: '10:00'
2218
+ instanceEndTime:
2219
+ type: string
2220
+ description: End time of each instance in HH:MM format
2221
+ example: '11:00'
2222
+ timezone:
2223
+ type: string
2224
+ description: IANA timezone for all instances
2225
+ example: America/New_York
2226
+ associatedGroupId:
2227
+ type: string
2228
+ description: Identifier of the associated group
2229
+ example: group-engineering
2230
+ maxNumAttendees:
2231
+ type: number
2232
+ description: Maximum number of attendees per event instance
2233
+ example: 50
2234
+ required:
2235
+ - type
2236
+ - rrule
2237
+ - startDate
2238
+ - instanceStartTime
2239
+ - instanceEndTime
2240
+ - timezone
2241
+ UpdateEventSeriesDto:
2242
+ type: object
2243
+ properties:
2244
+ visibility:
2245
+ type: string
2246
+ description: Visibility of the entity
2247
+ enum:
2248
+ - public
2249
+ - connections
2250
+ - hidden
2251
+ example: public
2252
+ displayName:
2253
+ type: string
2254
+ description: Display name
2255
+ example: Display Name
2256
+ location:
2257
+ description: Optional location information
2258
+ allOf:
2259
+ - $ref: '#/components/schemas/LocationDto'
2260
+ description:
2261
+ type: string
2262
+ description: Entity description
2263
+ example: A description of the entity
2264
+ tags:
2265
+ description: Entity tags
2266
+ example:
2267
+ - tag1
2268
+ - tag2
2269
+ type: array
2270
+ items:
2271
+ type: string
2272
+ type:
2273
+ type: string
2274
+ description: Event type
2275
+ example: standup
2276
+ maxNumAttendees:
2277
+ type: number
2278
+ description: Maximum number of attendees per event instance (null = unlimited)
2279
+ example: 50
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proxima-nexus/openapi",
3
- "version": "2.0.1",
3
+ "version": "2.1.0",
4
4
  "description": "OpenAPI specification for Proxima Nexus",
5
5
  "main": "openapi.json",
6
6
  "types": "openapi.json",