@proxima-nexus/openapi 2.1.0 → 2.3.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,33 @@ 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.3.0] - 2026-03-04
9
+
10
+ ### Added
11
+
12
+ - **Group event series**
13
+ - `GET /group/{groupId}/event-series`: list event series associated with a group, returned as `EventSeriesEntityConnectionDto` objects (including connection `type`, `state`, and `seriesId`).
14
+ - **Event series batch lookup**
15
+ - `POST /event-series/batch`: fetch multiple event series in a single call using `GetEventSeriesDto.seriesIds`.
16
+ - **Schemas**
17
+ - `EventSeriesEntityConnectionDto`: describes a user/group connection to an event series (timestamps, connection `type`/`state`, and `seriesId`).
18
+ - `GetEventSeriesDto`: request body for batch series lookup by IDs.
19
+
20
+ ## [2.2.0] - 2026-03-02
21
+
22
+ ### Added
23
+
24
+ - **Event time range filters**
25
+ - `GET /event`: optional `from` / `to` query params to filter events by time window (`from` = events ending after this instant, `to` = events starting before this instant).
26
+ - `GET /user/{userId}/events`: optional `from` / `to` range filters with the same semantics; `from` defaults to “now” when omitted.
27
+ - `GET /group/{groupId}/events`: optional `from` / `to` range filters with the same semantics.
28
+ - `GET /events/search`: optional `from` / `to` range filters with the same semantics.
29
+ - `GET /event-series/{seriesId}/events`: optional `from` / `to` range filters with the same semantics.
30
+
31
+ ### Changed
32
+
33
+ - **Event series instances**: `GET /event-series/{seriesId}/events` summary/description now clarify that the endpoint returns instances ordered by start time and **defaults to only ongoing/upcoming instances** unless a custom `from` / `to` window is provided.
34
+
8
35
  ## [2.1.0] - 2026-03-02
9
36
 
10
37
  ### Added
package/openapi.json CHANGED
@@ -132,6 +132,26 @@
132
132
  "type": "number"
133
133
  }
134
134
  },
135
+ {
136
+ "name": "from",
137
+ "required": false,
138
+ "in": "query",
139
+ "description": "ISO 8601 date — filter events ending after this time",
140
+ "schema": {
141
+ "example": "2025-01-01T00:00:00Z",
142
+ "type": "string"
143
+ }
144
+ },
145
+ {
146
+ "name": "to",
147
+ "required": false,
148
+ "in": "query",
149
+ "description": "ISO 8601 date — filter events starting before this time",
150
+ "schema": {
151
+ "example": "2025-12-31T23:59:59Z",
152
+ "type": "string"
153
+ }
154
+ },
135
155
  {
136
156
  "name": "X-Proxima-Nexus-Requester-User-Id",
137
157
  "in": "header",
@@ -618,6 +638,24 @@
618
638
  "type": "string"
619
639
  }
620
640
  },
641
+ {
642
+ "name": "from",
643
+ "required": false,
644
+ "in": "query",
645
+ "description": "ISO 8601 start of range (events ending after this time). Default: NOW()",
646
+ "schema": {
647
+ "type": "string"
648
+ }
649
+ },
650
+ {
651
+ "name": "to",
652
+ "required": false,
653
+ "in": "query",
654
+ "description": "ISO 8601 end of range (events starting before this time)",
655
+ "schema": {
656
+ "type": "string"
657
+ }
658
+ },
621
659
  {
622
660
  "name": "X-Proxima-Nexus-Requester-User-Id",
623
661
  "in": "header",
@@ -799,6 +837,26 @@
799
837
  "type": "number"
800
838
  }
801
839
  },
840
+ {
841
+ "name": "from",
842
+ "required": false,
843
+ "in": "query",
844
+ "description": "ISO 8601 date — filter events ending after this time",
845
+ "schema": {
846
+ "example": "2025-01-01T00:00:00Z",
847
+ "type": "string"
848
+ }
849
+ },
850
+ {
851
+ "name": "to",
852
+ "required": false,
853
+ "in": "query",
854
+ "description": "ISO 8601 date — filter events starting before this time",
855
+ "schema": {
856
+ "example": "2025-12-31T23:59:59Z",
857
+ "type": "string"
858
+ }
859
+ },
802
860
  {
803
861
  "name": "X-Proxima-Nexus-Requester-User-Id",
804
862
  "in": "header",
@@ -1341,6 +1399,26 @@
1341
1399
  "type": "number"
1342
1400
  }
1343
1401
  },
1402
+ {
1403
+ "name": "from",
1404
+ "required": false,
1405
+ "in": "query",
1406
+ "description": "ISO 8601 date — filter events ending after this time",
1407
+ "schema": {
1408
+ "example": "2025-01-01T00:00:00Z",
1409
+ "type": "string"
1410
+ }
1411
+ },
1412
+ {
1413
+ "name": "to",
1414
+ "required": false,
1415
+ "in": "query",
1416
+ "description": "ISO 8601 date — filter events starting before this time",
1417
+ "schema": {
1418
+ "example": "2025-12-31T23:59:59Z",
1419
+ "type": "string"
1420
+ }
1421
+ },
1344
1422
  {
1345
1423
  "name": "X-Proxima-Nexus-Requester-User-Id",
1346
1424
  "in": "header",
@@ -1736,6 +1814,24 @@
1736
1814
  "type": "string"
1737
1815
  }
1738
1816
  },
1817
+ {
1818
+ "name": "from",
1819
+ "required": false,
1820
+ "in": "query",
1821
+ "description": "ISO 8601 start of range (events ending after this time). Default: NOW()",
1822
+ "schema": {
1823
+ "type": "string"
1824
+ }
1825
+ },
1826
+ {
1827
+ "name": "to",
1828
+ "required": false,
1829
+ "in": "query",
1830
+ "description": "ISO 8601 end of range (events starting before this time)",
1831
+ "schema": {
1832
+ "type": "string"
1833
+ }
1834
+ },
1739
1835
  {
1740
1836
  "name": "X-Proxima-Nexus-Requester-User-Id",
1741
1837
  "in": "header",
@@ -1771,6 +1867,45 @@
1771
1867
  ]
1772
1868
  }
1773
1869
  },
1870
+ "/group/{groupId}/event-series": {
1871
+ "get": {
1872
+ "operationId": "GroupController_getEventSeries",
1873
+ "summary": "Get event series of a group",
1874
+ "parameters": [
1875
+ {
1876
+ "name": "groupId",
1877
+ "required": true,
1878
+ "in": "path",
1879
+ "schema": {
1880
+ "type": "string"
1881
+ }
1882
+ }
1883
+ ],
1884
+ "responses": {
1885
+ "200": {
1886
+ "description": "Event series returned",
1887
+ "content": {
1888
+ "application/json": {
1889
+ "schema": {
1890
+ "type": "array",
1891
+ "items": {
1892
+ "$ref": "#/components/schemas/EventSeriesEntityConnectionDto"
1893
+ }
1894
+ }
1895
+ }
1896
+ }
1897
+ }
1898
+ },
1899
+ "tags": [
1900
+ "group"
1901
+ ],
1902
+ "security": [
1903
+ {
1904
+ "api_key": []
1905
+ }
1906
+ ]
1907
+ }
1908
+ },
1774
1909
  "/group/batch": {
1775
1910
  "post": {
1776
1911
  "operationId": "GroupController_getBatch",
@@ -2017,11 +2152,51 @@
2017
2152
  ]
2018
2153
  }
2019
2154
  },
2155
+ "/event-series/batch": {
2156
+ "post": {
2157
+ "operationId": "EventSeriesController_getBatch",
2158
+ "summary": "Get a batch of event series by IDs",
2159
+ "parameters": [],
2160
+ "requestBody": {
2161
+ "required": true,
2162
+ "content": {
2163
+ "application/json": {
2164
+ "schema": {
2165
+ "$ref": "#/components/schemas/GetEventSeriesDto"
2166
+ }
2167
+ }
2168
+ }
2169
+ },
2170
+ "responses": {
2171
+ "200": {
2172
+ "description": "Event series returned",
2173
+ "content": {
2174
+ "application/json": {
2175
+ "schema": {
2176
+ "type": "array",
2177
+ "items": {
2178
+ "$ref": "#/components/schemas/EventSeriesDto"
2179
+ }
2180
+ }
2181
+ }
2182
+ }
2183
+ }
2184
+ },
2185
+ "tags": [
2186
+ "event-series"
2187
+ ],
2188
+ "security": [
2189
+ {
2190
+ "api_key": []
2191
+ }
2192
+ ]
2193
+ }
2194
+ },
2020
2195
  "/event-series/{seriesId}/events": {
2021
2196
  "get": {
2022
2197
  "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.",
2198
+ "summary": "List event instances in a series",
2199
+ "description": "Returns event instances belonging to this series, ordered by start time. Defaults to only ongoing/upcoming instances.",
2025
2200
  "parameters": [
2026
2201
  {
2027
2202
  "name": "seriesId",
@@ -2030,6 +2205,24 @@
2030
2205
  "schema": {
2031
2206
  "type": "string"
2032
2207
  }
2208
+ },
2209
+ {
2210
+ "name": "from",
2211
+ "required": false,
2212
+ "in": "query",
2213
+ "description": "ISO 8601 start of range (events ending after this time). Default: NOW()",
2214
+ "schema": {
2215
+ "type": "string"
2216
+ }
2217
+ },
2218
+ {
2219
+ "name": "to",
2220
+ "required": false,
2221
+ "in": "query",
2222
+ "description": "ISO 8601 end of range (events starting before this time)",
2223
+ "schema": {
2224
+ "type": "string"
2225
+ }
2033
2226
  }
2034
2227
  ],
2035
2228
  "responses": {
@@ -3048,6 +3241,54 @@
3048
3241
  "type"
3049
3242
  ]
3050
3243
  },
3244
+ "EventSeriesEntityConnectionDto": {
3245
+ "type": "object",
3246
+ "properties": {
3247
+ "createdAt": {
3248
+ "type": "string",
3249
+ "description": "Date/time the connection was created (ISO string)",
3250
+ "example": "2024-05-01T12:34:56.789Z"
3251
+ },
3252
+ "updatedAt": {
3253
+ "type": "string",
3254
+ "description": "Date/time the connection was last updated (ISO string)",
3255
+ "example": "2024-05-02T12:34:56.789Z"
3256
+ },
3257
+ "type": {
3258
+ "type": "string",
3259
+ "description": "Connection type",
3260
+ "enum": [
3261
+ "attendee",
3262
+ "admin",
3263
+ "owner",
3264
+ "member",
3265
+ "friend",
3266
+ "blocked",
3267
+ "none"
3268
+ ]
3269
+ },
3270
+ "state": {
3271
+ "type": "string",
3272
+ "description": "Connection state",
3273
+ "enum": [
3274
+ "incoming_request",
3275
+ "outgoing_request",
3276
+ "active",
3277
+ "requested",
3278
+ "invited"
3279
+ ]
3280
+ },
3281
+ "seriesId": {
3282
+ "type": "string",
3283
+ "description": "Event series ID",
3284
+ "example": "series-123"
3285
+ }
3286
+ },
3287
+ "required": [
3288
+ "type",
3289
+ "seriesId"
3290
+ ]
3291
+ },
3051
3292
  "GetGroupsDto": {
3052
3293
  "type": "object",
3053
3294
  "properties": {
@@ -3334,6 +3575,25 @@
3334
3575
  "example": 50
3335
3576
  }
3336
3577
  }
3578
+ },
3579
+ "GetEventSeriesDto": {
3580
+ "type": "object",
3581
+ "properties": {
3582
+ "seriesIds": {
3583
+ "description": "The IDs of the event series",
3584
+ "example": [
3585
+ "series-123",
3586
+ "series-456"
3587
+ ],
3588
+ "type": "array",
3589
+ "items": {
3590
+ "type": "string"
3591
+ }
3592
+ }
3593
+ },
3594
+ "required": [
3595
+ "seriesIds"
3596
+ ]
3337
3597
  }
3338
3598
  }
3339
3599
  }
package/openapi.yaml CHANGED
@@ -93,6 +93,20 @@ paths:
93
93
  schema:
94
94
  example: 100
95
95
  type: number
96
+ - name: from
97
+ required: false
98
+ in: query
99
+ description: ISO 8601 date — filter events ending after this time
100
+ schema:
101
+ example: '2025-01-01T00:00:00Z'
102
+ type: string
103
+ - name: to
104
+ required: false
105
+ in: query
106
+ description: ISO 8601 date — filter events starting before this time
107
+ schema:
108
+ example: '2025-12-31T23:59:59Z'
109
+ type: string
96
110
  - name: X-Proxima-Nexus-Requester-User-Id
97
111
  in: header
98
112
  description: >-
@@ -411,6 +425,18 @@ paths:
411
425
  in: path
412
426
  schema:
413
427
  type: string
428
+ - name: from
429
+ required: false
430
+ in: query
431
+ description: 'ISO 8601 start of range (events ending after this time). Default: NOW()'
432
+ schema:
433
+ type: string
434
+ - name: to
435
+ required: false
436
+ in: query
437
+ description: ISO 8601 end of range (events starting before this time)
438
+ schema:
439
+ type: string
414
440
  - name: X-Proxima-Nexus-Requester-User-Id
415
441
  in: header
416
442
  description: >-
@@ -531,6 +557,20 @@ paths:
531
557
  schema:
532
558
  example: 100
533
559
  type: number
560
+ - name: from
561
+ required: false
562
+ in: query
563
+ description: ISO 8601 date — filter events ending after this time
564
+ schema:
565
+ example: '2025-01-01T00:00:00Z'
566
+ type: string
567
+ - name: to
568
+ required: false
569
+ in: query
570
+ description: ISO 8601 date — filter events starting before this time
571
+ schema:
572
+ example: '2025-12-31T23:59:59Z'
573
+ type: string
534
574
  - name: X-Proxima-Nexus-Requester-User-Id
535
575
  in: header
536
576
  description: >-
@@ -879,6 +919,20 @@ paths:
879
919
  schema:
880
920
  example: 100
881
921
  type: number
922
+ - name: from
923
+ required: false
924
+ in: query
925
+ description: ISO 8601 date — filter events ending after this time
926
+ schema:
927
+ example: '2025-01-01T00:00:00Z'
928
+ type: string
929
+ - name: to
930
+ required: false
931
+ in: query
932
+ description: ISO 8601 date — filter events starting before this time
933
+ schema:
934
+ example: '2025-12-31T23:59:59Z'
935
+ type: string
882
936
  - name: X-Proxima-Nexus-Requester-User-Id
883
937
  in: header
884
938
  description: >-
@@ -1129,6 +1183,18 @@ paths:
1129
1183
  in: path
1130
1184
  schema:
1131
1185
  type: string
1186
+ - name: from
1187
+ required: false
1188
+ in: query
1189
+ description: 'ISO 8601 start of range (events ending after this time). Default: NOW()'
1190
+ schema:
1191
+ type: string
1192
+ - name: to
1193
+ required: false
1194
+ in: query
1195
+ description: ISO 8601 end of range (events starting before this time)
1196
+ schema:
1197
+ type: string
1132
1198
  - name: X-Proxima-Nexus-Requester-User-Id
1133
1199
  in: header
1134
1200
  description: >-
@@ -1150,6 +1216,29 @@ paths:
1150
1216
  - group
1151
1217
  security:
1152
1218
  - api_key: []
1219
+ /group/{groupId}/event-series:
1220
+ get:
1221
+ operationId: GroupController_getEventSeries
1222
+ summary: Get event series of a group
1223
+ parameters:
1224
+ - name: groupId
1225
+ required: true
1226
+ in: path
1227
+ schema:
1228
+ type: string
1229
+ responses:
1230
+ '200':
1231
+ description: Event series returned
1232
+ content:
1233
+ application/json:
1234
+ schema:
1235
+ type: array
1236
+ items:
1237
+ $ref: '#/components/schemas/EventSeriesEntityConnectionDto'
1238
+ tags:
1239
+ - group
1240
+ security:
1241
+ - api_key: []
1153
1242
  /group/batch:
1154
1243
  post:
1155
1244
  operationId: GroupController_getBatch
@@ -1306,17 +1395,55 @@ paths:
1306
1395
  - event-series
1307
1396
  security:
1308
1397
  - api_key: []
1398
+ /event-series/batch:
1399
+ post:
1400
+ operationId: EventSeriesController_getBatch
1401
+ summary: Get a batch of event series by IDs
1402
+ parameters: []
1403
+ requestBody:
1404
+ required: true
1405
+ content:
1406
+ application/json:
1407
+ schema:
1408
+ $ref: '#/components/schemas/GetEventSeriesDto'
1409
+ responses:
1410
+ '200':
1411
+ description: Event series returned
1412
+ content:
1413
+ application/json:
1414
+ schema:
1415
+ type: array
1416
+ items:
1417
+ $ref: '#/components/schemas/EventSeriesDto'
1418
+ tags:
1419
+ - event-series
1420
+ security:
1421
+ - api_key: []
1309
1422
  /event-series/{seriesId}/events:
1310
1423
  get:
1311
1424
  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.
1425
+ summary: List event instances in a series
1426
+ description: >-
1427
+ Returns event instances belonging to this series, ordered by start time. Defaults to only ongoing/upcoming
1428
+ instances.
1314
1429
  parameters:
1315
1430
  - name: seriesId
1316
1431
  required: true
1317
1432
  in: path
1318
1433
  schema:
1319
1434
  type: string
1435
+ - name: from
1436
+ required: false
1437
+ in: query
1438
+ description: 'ISO 8601 start of range (events ending after this time). Default: NOW()'
1439
+ schema:
1440
+ type: string
1441
+ - name: to
1442
+ required: false
1443
+ in: query
1444
+ description: ISO 8601 end of range (events starting before this time)
1445
+ schema:
1446
+ type: string
1320
1447
  responses:
1321
1448
  '200':
1322
1449
  description: Event instances returned
@@ -2063,6 +2190,44 @@ components:
2063
2190
  - owner
2064
2191
  required:
2065
2192
  - type
2193
+ EventSeriesEntityConnectionDto:
2194
+ type: object
2195
+ properties:
2196
+ createdAt:
2197
+ type: string
2198
+ description: Date/time the connection was created (ISO string)
2199
+ example: '2024-05-01T12:34:56.789Z'
2200
+ updatedAt:
2201
+ type: string
2202
+ description: Date/time the connection was last updated (ISO string)
2203
+ example: '2024-05-02T12:34:56.789Z'
2204
+ type:
2205
+ type: string
2206
+ description: Connection type
2207
+ enum:
2208
+ - attendee
2209
+ - admin
2210
+ - owner
2211
+ - member
2212
+ - friend
2213
+ - blocked
2214
+ - none
2215
+ state:
2216
+ type: string
2217
+ description: Connection state
2218
+ enum:
2219
+ - incoming_request
2220
+ - outgoing_request
2221
+ - active
2222
+ - requested
2223
+ - invited
2224
+ seriesId:
2225
+ type: string
2226
+ description: Event series ID
2227
+ example: series-123
2228
+ required:
2229
+ - type
2230
+ - seriesId
2066
2231
  GetGroupsDto:
2067
2232
  type: object
2068
2233
  properties:
@@ -2277,3 +2442,16 @@ components:
2277
2442
  type: number
2278
2443
  description: Maximum number of attendees per event instance (null = unlimited)
2279
2444
  example: 50
2445
+ GetEventSeriesDto:
2446
+ type: object
2447
+ properties:
2448
+ seriesIds:
2449
+ description: The IDs of the event series
2450
+ example:
2451
+ - series-123
2452
+ - series-456
2453
+ type: array
2454
+ items:
2455
+ type: string
2456
+ required:
2457
+ - seriesIds
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proxima-nexus/openapi",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "OpenAPI specification for Proxima Nexus",
5
5
  "main": "openapi.json",
6
6
  "types": "openapi.json",