@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 +21 -0
- package/openapi.json +514 -10
- package/openapi.yaml +358 -8
- package/package.json +1 -1
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:
|
|
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
|