@proxima-nexus/openapi 2.0.0 → 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/openapi.json CHANGED
@@ -448,10 +448,9 @@
448
448
  "items": {
449
449
  "type": "string",
450
450
  "enum": [
451
- "requested",
452
- "active",
453
- "rejected",
454
- "blocked"
451
+ "incoming_request",
452
+ "outgoing_request",
453
+ "active"
455
454
  ]
456
455
  }
457
456
  }
@@ -881,7 +880,7 @@
881
880
  },
882
881
  "put": {
883
882
  "operationId": "EventController_update",
884
- "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.",
885
884
  "parameters": [
886
885
  {
887
886
  "name": "eventId",
@@ -1663,8 +1662,7 @@
1663
1662
  "enum": [
1664
1663
  "requested",
1665
1664
  "active",
1666
- "rejected",
1667
- "blocked"
1665
+ "invited"
1668
1666
  ]
1669
1667
  }
1670
1668
  }
@@ -1822,6 +1820,245 @@
1822
1820
  }
1823
1821
  ]
1824
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
+ }
1825
2062
  }
1826
2063
  },
1827
2064
  "info": {
@@ -1953,16 +2190,6 @@
1953
2190
  "description": "Date/time the connection was last updated (ISO string)",
1954
2191
  "example": "2024-05-02T12:34:56.789Z"
1955
2192
  },
1956
- "state": {
1957
- "type": "string",
1958
- "description": "Connection state",
1959
- "enum": [
1960
- "requested",
1961
- "active",
1962
- "rejected",
1963
- "blocked"
1964
- ]
1965
- },
1966
2193
  "type": {
1967
2194
  "type": "string",
1968
2195
  "description": "Connection type",
@@ -1971,16 +2198,24 @@
1971
2198
  "admin",
1972
2199
  "owner",
1973
2200
  "member",
1974
- "admin",
1975
- "owner",
1976
2201
  "friend",
1977
2202
  "blocked",
1978
2203
  "none"
1979
2204
  ]
2205
+ },
2206
+ "state": {
2207
+ "type": "string",
2208
+ "description": "Connection state",
2209
+ "enum": [
2210
+ "incoming_request",
2211
+ "outgoing_request",
2212
+ "active",
2213
+ "requested",
2214
+ "invited"
2215
+ ]
1980
2216
  }
1981
2217
  },
1982
2218
  "required": [
1983
- "state",
1984
2219
  "type"
1985
2220
  ]
1986
2221
  },
@@ -2118,7 +2353,6 @@
2118
2353
  }
2119
2354
  },
2120
2355
  "required": [
2121
- "displayName",
2122
2356
  "gender",
2123
2357
  "birthDate"
2124
2358
  ]
@@ -2153,16 +2387,6 @@
2153
2387
  "description": "Date/time the connection was last updated (ISO string)",
2154
2388
  "example": "2024-05-02T12:34:56.789Z"
2155
2389
  },
2156
- "state": {
2157
- "type": "string",
2158
- "description": "Connection state",
2159
- "enum": [
2160
- "requested",
2161
- "active",
2162
- "rejected",
2163
- "blocked"
2164
- ]
2165
- },
2166
2390
  "type": {
2167
2391
  "type": "string",
2168
2392
  "description": "Connection type",
@@ -2171,13 +2395,22 @@
2171
2395
  "admin",
2172
2396
  "owner",
2173
2397
  "member",
2174
- "admin",
2175
- "owner",
2176
2398
  "friend",
2177
2399
  "blocked",
2178
2400
  "none"
2179
2401
  ]
2180
2402
  },
2403
+ "state": {
2404
+ "type": "string",
2405
+ "description": "Connection state",
2406
+ "enum": [
2407
+ "incoming_request",
2408
+ "outgoing_request",
2409
+ "active",
2410
+ "requested",
2411
+ "invited"
2412
+ ]
2413
+ },
2181
2414
  "userId": {
2182
2415
  "type": "string",
2183
2416
  "description": "User ID",
@@ -2185,7 +2418,6 @@
2185
2418
  }
2186
2419
  },
2187
2420
  "required": [
2188
- "state",
2189
2421
  "type",
2190
2422
  "userId"
2191
2423
  ]
@@ -2222,16 +2454,6 @@
2222
2454
  "description": "Date/time the connection was last updated (ISO string)",
2223
2455
  "example": "2024-05-02T12:34:56.789Z"
2224
2456
  },
2225
- "state": {
2226
- "type": "string",
2227
- "description": "Connection state",
2228
- "enum": [
2229
- "requested",
2230
- "active",
2231
- "rejected",
2232
- "blocked"
2233
- ]
2234
- },
2235
2457
  "type": {
2236
2458
  "type": "string",
2237
2459
  "description": "Connection type",
@@ -2240,13 +2462,22 @@
2240
2462
  "admin",
2241
2463
  "owner",
2242
2464
  "member",
2243
- "admin",
2244
- "owner",
2245
2465
  "friend",
2246
2466
  "blocked",
2247
2467
  "none"
2248
2468
  ]
2249
2469
  },
2470
+ "state": {
2471
+ "type": "string",
2472
+ "description": "Connection state",
2473
+ "enum": [
2474
+ "incoming_request",
2475
+ "outgoing_request",
2476
+ "active",
2477
+ "requested",
2478
+ "invited"
2479
+ ]
2480
+ },
2250
2481
  "groupId": {
2251
2482
  "type": "string",
2252
2483
  "description": "Group ID",
@@ -2254,7 +2485,6 @@
2254
2485
  }
2255
2486
  },
2256
2487
  "required": [
2257
- "state",
2258
2488
  "type",
2259
2489
  "groupId"
2260
2490
  ]
@@ -2272,16 +2502,6 @@
2272
2502
  "description": "Date/time the connection was last updated (ISO string)",
2273
2503
  "example": "2024-05-02T12:34:56.789Z"
2274
2504
  },
2275
- "state": {
2276
- "type": "string",
2277
- "description": "Connection state",
2278
- "enum": [
2279
- "requested",
2280
- "active",
2281
- "rejected",
2282
- "blocked"
2283
- ]
2284
- },
2285
2505
  "type": {
2286
2506
  "type": "string",
2287
2507
  "description": "Connection type",
@@ -2290,13 +2510,22 @@
2290
2510
  "admin",
2291
2511
  "owner",
2292
2512
  "member",
2293
- "admin",
2294
- "owner",
2295
2513
  "friend",
2296
2514
  "blocked",
2297
2515
  "none"
2298
2516
  ]
2299
2517
  },
2518
+ "state": {
2519
+ "type": "string",
2520
+ "description": "Connection state",
2521
+ "enum": [
2522
+ "incoming_request",
2523
+ "outgoing_request",
2524
+ "active",
2525
+ "requested",
2526
+ "invited"
2527
+ ]
2528
+ },
2300
2529
  "eventId": {
2301
2530
  "type": "string",
2302
2531
  "description": "Event ID",
@@ -2304,7 +2533,6 @@
2304
2533
  }
2305
2534
  },
2306
2535
  "required": [
2307
- "state",
2308
2536
  "type",
2309
2537
  "eventId"
2310
2538
  ]
@@ -2484,6 +2712,11 @@
2484
2712
  "type": "number",
2485
2713
  "description": "Maximum number of attendees allowed (null = unlimited)",
2486
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"
2487
2720
  }
2488
2721
  },
2489
2722
  "required": [
@@ -2554,13 +2787,7 @@
2554
2787
  "description": "Maximum number of attendees allowed (null = unlimited)",
2555
2788
  "example": 100
2556
2789
  }
2557
- },
2558
- "required": [
2559
- "displayName",
2560
- "startTime",
2561
- "endTime",
2562
- "type"
2563
- ]
2790
+ }
2564
2791
  },
2565
2792
  "MutateEventEntityConnectionDto": {
2566
2793
  "type": "object",
@@ -2801,7 +3028,6 @@
2801
3028
  }
2802
3029
  },
2803
3030
  "required": [
2804
- "displayName",
2805
3031
  "type"
2806
3032
  ]
2807
3033
  },
@@ -2840,6 +3066,274 @@
2840
3066
  "required": [
2841
3067
  "groupIds"
2842
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
+ }
2843
3337
  }
2844
3338
  }
2845
3339
  }