@andesine/sdk 0.4.0 → 0.5.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
@@ -19,6 +19,12 @@
19
19
  "scheme": "bearer",
20
20
  "bearerFormat": "Andesine API key",
21
21
  "description": "Use an Andesine API key as a Bearer token"
22
+ },
23
+ "extensionToken": {
24
+ "type": "http",
25
+ "scheme": "bearer",
26
+ "bearerFormat": "JWT",
27
+ "description": "An extension JWT signed with the extension's registered key: iss is the registry name, sub the ext_ ID (omitted for app-level operations), aud the instance API URL, and exp at most 5 minutes after iat."
22
28
  }
23
29
  },
24
30
  "schemas": {
@@ -2268,6 +2274,7 @@
2268
2274
  "roles",
2269
2275
  "webhooks",
2270
2276
  "read:webhooks",
2277
+ "extensions",
2271
2278
  "workspace"
2272
2279
  ],
2273
2280
  "type": "string"
@@ -8682,6 +8689,4315 @@
8682
8689
  "x-sdk-example": { "collectionID": "coll_example", "limit": 20 }
8683
8690
  }
8684
8691
  },
8692
+ "/extensions/self": {
8693
+ "get": {
8694
+ "operationId": "extensions.getSelf",
8695
+ "summary": "Get the extension",
8696
+ "description": "Returns the installed extension that the token's subject names, including disabled and uninstalled extensions.",
8697
+ "tags": ["extensions"],
8698
+ "responses": {
8699
+ "200": {
8700
+ "description": "OK",
8701
+ "content": {
8702
+ "application/json": {
8703
+ "schema": {
8704
+ "type": "object",
8705
+ "properties": {
8706
+ "id": {
8707
+ "type": "string",
8708
+ "pattern": "^ext_[A-Za-z\\d]{1,22}$",
8709
+ "description": "ID of the installed extension"
8710
+ },
8711
+ "name": { "type": "string", "description": "Registry name" },
8712
+ "version": { "type": "string", "description": "Active version" },
8713
+ "workspaceID": { "type": "string", "pattern": "^ws_[A-Za-z\\d]{1,22}$" },
8714
+ "state": {
8715
+ "enum": ["active", "disabled", "uninstalled"],
8716
+ "type": "string",
8717
+ "description": "Uninstalled extensions remain readable until their last lifecycle event expires"
8718
+ },
8719
+ "disabledReason": {
8720
+ "anyOf": [
8721
+ {
8722
+ "enum": [
8723
+ "manual",
8724
+ "approval_required",
8725
+ "configuration_required",
8726
+ "revoked"
8727
+ ],
8728
+ "type": "string"
8729
+ },
8730
+ { "type": "null" }
8731
+ ],
8732
+ "description": "Why the extension is disabled; null when it is active or uninstalled"
8733
+ }
8734
+ },
8735
+ "required": ["id", "name", "version", "workspaceID", "state", "disabledReason"]
8736
+ }
8737
+ }
8738
+ }
8739
+ },
8740
+ "400": {
8741
+ "description": "400",
8742
+ "content": {
8743
+ "application/json": {
8744
+ "schema": {
8745
+ "oneOf": [
8746
+ {
8747
+ "type": "object",
8748
+ "properties": {
8749
+ "defined": { "const": true },
8750
+ "code": { "const": "BAD_REQUEST" },
8751
+ "status": { "const": 400 },
8752
+ "message": { "type": "string", "default": "Bad Request" },
8753
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
8754
+ },
8755
+ "required": ["defined", "code", "status", "message"]
8756
+ },
8757
+ {
8758
+ "type": "object",
8759
+ "properties": {
8760
+ "defined": { "const": false },
8761
+ "code": { "type": "string" },
8762
+ "status": { "type": "number" },
8763
+ "message": { "type": "string" },
8764
+ "data": {}
8765
+ },
8766
+ "required": ["defined", "code", "status", "message"]
8767
+ }
8768
+ ]
8769
+ }
8770
+ }
8771
+ }
8772
+ },
8773
+ "401": {
8774
+ "description": "401",
8775
+ "content": {
8776
+ "application/json": {
8777
+ "schema": {
8778
+ "oneOf": [
8779
+ {
8780
+ "type": "object",
8781
+ "properties": {
8782
+ "defined": { "const": true },
8783
+ "code": { "const": "UNAUTHORIZED" },
8784
+ "status": { "const": 401 },
8785
+ "message": { "type": "string", "default": "Unauthorized" },
8786
+ "data": { "$ref": "#/components/schemas/ErrorData" }
8787
+ },
8788
+ "required": ["defined", "code", "status", "message"]
8789
+ },
8790
+ {
8791
+ "type": "object",
8792
+ "properties": {
8793
+ "defined": { "const": false },
8794
+ "code": { "type": "string" },
8795
+ "status": { "type": "number" },
8796
+ "message": { "type": "string" },
8797
+ "data": {}
8798
+ },
8799
+ "required": ["defined", "code", "status", "message"]
8800
+ }
8801
+ ]
8802
+ }
8803
+ }
8804
+ }
8805
+ },
8806
+ "403": {
8807
+ "description": "403",
8808
+ "content": {
8809
+ "application/json": {
8810
+ "schema": {
8811
+ "oneOf": [
8812
+ {
8813
+ "type": "object",
8814
+ "properties": {
8815
+ "defined": { "const": true },
8816
+ "code": { "const": "FORBIDDEN" },
8817
+ "status": { "const": 403 },
8818
+ "message": { "type": "string", "default": "Forbidden" },
8819
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
8820
+ },
8821
+ "required": ["defined", "code", "status", "message"]
8822
+ },
8823
+ {
8824
+ "type": "object",
8825
+ "properties": {
8826
+ "defined": { "const": false },
8827
+ "code": { "type": "string" },
8828
+ "status": { "type": "number" },
8829
+ "message": { "type": "string" },
8830
+ "data": {}
8831
+ },
8832
+ "required": ["defined", "code", "status", "message"]
8833
+ }
8834
+ ]
8835
+ }
8836
+ }
8837
+ }
8838
+ },
8839
+ "404": {
8840
+ "description": "404",
8841
+ "content": {
8842
+ "application/json": {
8843
+ "schema": {
8844
+ "oneOf": [
8845
+ {
8846
+ "type": "object",
8847
+ "properties": {
8848
+ "defined": { "const": true },
8849
+ "code": { "const": "NOT_FOUND" },
8850
+ "status": { "const": 404 },
8851
+ "message": { "type": "string", "default": "Not Found" },
8852
+ "data": { "$ref": "#/components/schemas/ErrorData" }
8853
+ },
8854
+ "required": ["defined", "code", "status", "message"]
8855
+ },
8856
+ {
8857
+ "type": "object",
8858
+ "properties": {
8859
+ "defined": { "const": false },
8860
+ "code": { "type": "string" },
8861
+ "status": { "type": "number" },
8862
+ "message": { "type": "string" },
8863
+ "data": {}
8864
+ },
8865
+ "required": ["defined", "code", "status", "message"]
8866
+ }
8867
+ ]
8868
+ }
8869
+ }
8870
+ }
8871
+ },
8872
+ "409": {
8873
+ "description": "409",
8874
+ "content": {
8875
+ "application/json": {
8876
+ "schema": {
8877
+ "oneOf": [
8878
+ {
8879
+ "type": "object",
8880
+ "properties": {
8881
+ "defined": { "const": true },
8882
+ "code": { "const": "CONFLICT" },
8883
+ "status": { "const": 409 },
8884
+ "message": { "type": "string", "default": "Conflict" },
8885
+ "data": { "$ref": "#/components/schemas/ErrorData" }
8886
+ },
8887
+ "required": ["defined", "code", "status", "message"]
8888
+ },
8889
+ {
8890
+ "type": "object",
8891
+ "properties": {
8892
+ "defined": { "const": false },
8893
+ "code": { "type": "string" },
8894
+ "status": { "type": "number" },
8895
+ "message": { "type": "string" },
8896
+ "data": {}
8897
+ },
8898
+ "required": ["defined", "code", "status", "message"]
8899
+ }
8900
+ ]
8901
+ }
8902
+ }
8903
+ }
8904
+ },
8905
+ "429": {
8906
+ "description": "429",
8907
+ "content": {
8908
+ "application/json": {
8909
+ "schema": {
8910
+ "oneOf": [
8911
+ {
8912
+ "type": "object",
8913
+ "properties": {
8914
+ "defined": { "const": true },
8915
+ "code": { "const": "TOO_MANY_REQUESTS" },
8916
+ "status": { "const": 429 },
8917
+ "message": { "type": "string", "default": "Too Many Requests" },
8918
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
8919
+ },
8920
+ "required": ["defined", "code", "status", "message"]
8921
+ },
8922
+ {
8923
+ "type": "object",
8924
+ "properties": {
8925
+ "defined": { "const": false },
8926
+ "code": { "type": "string" },
8927
+ "status": { "type": "number" },
8928
+ "message": { "type": "string" },
8929
+ "data": {}
8930
+ },
8931
+ "required": ["defined", "code", "status", "message"]
8932
+ }
8933
+ ]
8934
+ }
8935
+ }
8936
+ }
8937
+ },
8938
+ "500": {
8939
+ "description": "500",
8940
+ "content": {
8941
+ "application/json": {
8942
+ "schema": {
8943
+ "oneOf": [
8944
+ {
8945
+ "type": "object",
8946
+ "properties": {
8947
+ "defined": { "const": true },
8948
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
8949
+ "status": { "const": 500 },
8950
+ "message": { "type": "string", "default": "Internal Server Error" },
8951
+ "data": { "$ref": "#/components/schemas/ErrorData" }
8952
+ },
8953
+ "required": ["defined", "code", "status", "message"]
8954
+ },
8955
+ {
8956
+ "type": "object",
8957
+ "properties": {
8958
+ "defined": { "const": false },
8959
+ "code": { "type": "string" },
8960
+ "status": { "type": "number" },
8961
+ "message": { "type": "string" },
8962
+ "data": {}
8963
+ },
8964
+ "required": ["defined", "code", "status", "message"]
8965
+ }
8966
+ ]
8967
+ }
8968
+ }
8969
+ }
8970
+ },
8971
+ "503": {
8972
+ "description": "503",
8973
+ "content": {
8974
+ "application/json": {
8975
+ "schema": {
8976
+ "oneOf": [
8977
+ {
8978
+ "type": "object",
8979
+ "properties": {
8980
+ "defined": { "const": true },
8981
+ "code": { "const": "SERVICE_UNAVAILABLE" },
8982
+ "status": { "const": 503 },
8983
+ "message": { "type": "string", "default": "Service Unavailable" },
8984
+ "data": { "$ref": "#/components/schemas/ErrorData" }
8985
+ },
8986
+ "required": ["defined", "code", "status", "message"]
8987
+ },
8988
+ {
8989
+ "type": "object",
8990
+ "properties": {
8991
+ "defined": { "const": false },
8992
+ "code": { "type": "string" },
8993
+ "status": { "type": "number" },
8994
+ "message": { "type": "string" },
8995
+ "data": {}
8996
+ },
8997
+ "required": ["defined", "code", "status", "message"]
8998
+ }
8999
+ ]
9000
+ }
9001
+ }
9002
+ }
9003
+ }
9004
+ },
9005
+ "security": [{ "extensionToken": [] }]
9006
+ }
9007
+ },
9008
+ "/extensions/self/sessions/verify": {
9009
+ "post": {
9010
+ "operationId": "extensions.verifySession",
9011
+ "summary": "Verify a session token",
9012
+ "description": "Verifies a session token from the extension frontend and returns its member. Tokens of other extensions, expired tokens, and tokens of an earlier extension generation fail with NOT_FOUND.",
9013
+ "tags": ["extensions"],
9014
+ "requestBody": {
9015
+ "required": true,
9016
+ "content": {
9017
+ "application/json": {
9018
+ "schema": {
9019
+ "type": "object",
9020
+ "properties": { "token": { "type": "string", "minLength": 1, "maxLength": 200 } },
9021
+ "required": ["token"]
9022
+ }
9023
+ }
9024
+ }
9025
+ },
9026
+ "responses": {
9027
+ "200": {
9028
+ "description": "OK",
9029
+ "content": {
9030
+ "application/json": {
9031
+ "schema": {
9032
+ "type": "object",
9033
+ "properties": {
9034
+ "workspaceID": { "type": "string", "pattern": "^ws_[A-Za-z\\d]{1,22}$" },
9035
+ "version": {
9036
+ "type": "string",
9037
+ "description": "The extension version the session was issued for"
9038
+ },
9039
+ "member": {
9040
+ "type": "object",
9041
+ "properties": {
9042
+ "id": { "type": "string", "description": "ID of the membership" },
9043
+ "userID": { "type": "string", "description": "ID of the user" },
9044
+ "profile": {
9045
+ "type": "object",
9046
+ "properties": {
9047
+ "id": { "type": "string" },
9048
+ "name": { "type": "string" },
9049
+ "image": { "type": "string" },
9050
+ "email": {
9051
+ "type": "string",
9052
+ "description": "Only with the read:memberships permission"
9053
+ }
9054
+ },
9055
+ "required": ["id"]
9056
+ }
9057
+ },
9058
+ "required": ["id", "userID", "profile"]
9059
+ }
9060
+ },
9061
+ "required": ["workspaceID", "version", "member"]
9062
+ }
9063
+ }
9064
+ }
9065
+ },
9066
+ "400": {
9067
+ "description": "400",
9068
+ "content": {
9069
+ "application/json": {
9070
+ "schema": {
9071
+ "oneOf": [
9072
+ {
9073
+ "type": "object",
9074
+ "properties": {
9075
+ "defined": { "const": true },
9076
+ "code": { "const": "BAD_REQUEST" },
9077
+ "status": { "const": 400 },
9078
+ "message": { "type": "string", "default": "Bad Request" },
9079
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
9080
+ },
9081
+ "required": ["defined", "code", "status", "message"]
9082
+ },
9083
+ {
9084
+ "type": "object",
9085
+ "properties": {
9086
+ "defined": { "const": false },
9087
+ "code": { "type": "string" },
9088
+ "status": { "type": "number" },
9089
+ "message": { "type": "string" },
9090
+ "data": {}
9091
+ },
9092
+ "required": ["defined", "code", "status", "message"]
9093
+ }
9094
+ ]
9095
+ }
9096
+ }
9097
+ }
9098
+ },
9099
+ "401": {
9100
+ "description": "401",
9101
+ "content": {
9102
+ "application/json": {
9103
+ "schema": {
9104
+ "oneOf": [
9105
+ {
9106
+ "type": "object",
9107
+ "properties": {
9108
+ "defined": { "const": true },
9109
+ "code": { "const": "UNAUTHORIZED" },
9110
+ "status": { "const": 401 },
9111
+ "message": { "type": "string", "default": "Unauthorized" },
9112
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9113
+ },
9114
+ "required": ["defined", "code", "status", "message"]
9115
+ },
9116
+ {
9117
+ "type": "object",
9118
+ "properties": {
9119
+ "defined": { "const": false },
9120
+ "code": { "type": "string" },
9121
+ "status": { "type": "number" },
9122
+ "message": { "type": "string" },
9123
+ "data": {}
9124
+ },
9125
+ "required": ["defined", "code", "status", "message"]
9126
+ }
9127
+ ]
9128
+ }
9129
+ }
9130
+ }
9131
+ },
9132
+ "403": {
9133
+ "description": "403",
9134
+ "content": {
9135
+ "application/json": {
9136
+ "schema": {
9137
+ "oneOf": [
9138
+ {
9139
+ "type": "object",
9140
+ "properties": {
9141
+ "defined": { "const": true },
9142
+ "code": { "const": "FORBIDDEN" },
9143
+ "status": { "const": 403 },
9144
+ "message": { "type": "string", "default": "Forbidden" },
9145
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
9146
+ },
9147
+ "required": ["defined", "code", "status", "message"]
9148
+ },
9149
+ {
9150
+ "type": "object",
9151
+ "properties": {
9152
+ "defined": { "const": false },
9153
+ "code": { "type": "string" },
9154
+ "status": { "type": "number" },
9155
+ "message": { "type": "string" },
9156
+ "data": {}
9157
+ },
9158
+ "required": ["defined", "code", "status", "message"]
9159
+ }
9160
+ ]
9161
+ }
9162
+ }
9163
+ }
9164
+ },
9165
+ "404": {
9166
+ "description": "404",
9167
+ "content": {
9168
+ "application/json": {
9169
+ "schema": {
9170
+ "oneOf": [
9171
+ {
9172
+ "type": "object",
9173
+ "properties": {
9174
+ "defined": { "const": true },
9175
+ "code": { "const": "NOT_FOUND" },
9176
+ "status": { "const": 404 },
9177
+ "message": { "type": "string", "default": "Not Found" },
9178
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9179
+ },
9180
+ "required": ["defined", "code", "status", "message"]
9181
+ },
9182
+ {
9183
+ "type": "object",
9184
+ "properties": {
9185
+ "defined": { "const": false },
9186
+ "code": { "type": "string" },
9187
+ "status": { "type": "number" },
9188
+ "message": { "type": "string" },
9189
+ "data": {}
9190
+ },
9191
+ "required": ["defined", "code", "status", "message"]
9192
+ }
9193
+ ]
9194
+ }
9195
+ }
9196
+ }
9197
+ },
9198
+ "409": {
9199
+ "description": "409",
9200
+ "content": {
9201
+ "application/json": {
9202
+ "schema": {
9203
+ "oneOf": [
9204
+ {
9205
+ "type": "object",
9206
+ "properties": {
9207
+ "defined": { "const": true },
9208
+ "code": { "const": "CONFLICT" },
9209
+ "status": { "const": 409 },
9210
+ "message": { "type": "string", "default": "Conflict" },
9211
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9212
+ },
9213
+ "required": ["defined", "code", "status", "message"]
9214
+ },
9215
+ {
9216
+ "type": "object",
9217
+ "properties": {
9218
+ "defined": { "const": false },
9219
+ "code": { "type": "string" },
9220
+ "status": { "type": "number" },
9221
+ "message": { "type": "string" },
9222
+ "data": {}
9223
+ },
9224
+ "required": ["defined", "code", "status", "message"]
9225
+ }
9226
+ ]
9227
+ }
9228
+ }
9229
+ }
9230
+ },
9231
+ "429": {
9232
+ "description": "429",
9233
+ "content": {
9234
+ "application/json": {
9235
+ "schema": {
9236
+ "oneOf": [
9237
+ {
9238
+ "type": "object",
9239
+ "properties": {
9240
+ "defined": { "const": true },
9241
+ "code": { "const": "TOO_MANY_REQUESTS" },
9242
+ "status": { "const": 429 },
9243
+ "message": { "type": "string", "default": "Too Many Requests" },
9244
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
9245
+ },
9246
+ "required": ["defined", "code", "status", "message"]
9247
+ },
9248
+ {
9249
+ "type": "object",
9250
+ "properties": {
9251
+ "defined": { "const": false },
9252
+ "code": { "type": "string" },
9253
+ "status": { "type": "number" },
9254
+ "message": { "type": "string" },
9255
+ "data": {}
9256
+ },
9257
+ "required": ["defined", "code", "status", "message"]
9258
+ }
9259
+ ]
9260
+ }
9261
+ }
9262
+ }
9263
+ },
9264
+ "500": {
9265
+ "description": "500",
9266
+ "content": {
9267
+ "application/json": {
9268
+ "schema": {
9269
+ "oneOf": [
9270
+ {
9271
+ "type": "object",
9272
+ "properties": {
9273
+ "defined": { "const": true },
9274
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
9275
+ "status": { "const": 500 },
9276
+ "message": { "type": "string", "default": "Internal Server Error" },
9277
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9278
+ },
9279
+ "required": ["defined", "code", "status", "message"]
9280
+ },
9281
+ {
9282
+ "type": "object",
9283
+ "properties": {
9284
+ "defined": { "const": false },
9285
+ "code": { "type": "string" },
9286
+ "status": { "type": "number" },
9287
+ "message": { "type": "string" },
9288
+ "data": {}
9289
+ },
9290
+ "required": ["defined", "code", "status", "message"]
9291
+ }
9292
+ ]
9293
+ }
9294
+ }
9295
+ }
9296
+ },
9297
+ "503": {
9298
+ "description": "503",
9299
+ "content": {
9300
+ "application/json": {
9301
+ "schema": {
9302
+ "oneOf": [
9303
+ {
9304
+ "type": "object",
9305
+ "properties": {
9306
+ "defined": { "const": true },
9307
+ "code": { "const": "SERVICE_UNAVAILABLE" },
9308
+ "status": { "const": 503 },
9309
+ "message": { "type": "string", "default": "Service Unavailable" },
9310
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9311
+ },
9312
+ "required": ["defined", "code", "status", "message"]
9313
+ },
9314
+ {
9315
+ "type": "object",
9316
+ "properties": {
9317
+ "defined": { "const": false },
9318
+ "code": { "type": "string" },
9319
+ "status": { "type": "number" },
9320
+ "message": { "type": "string" },
9321
+ "data": {}
9322
+ },
9323
+ "required": ["defined", "code", "status", "message"]
9324
+ }
9325
+ ]
9326
+ }
9327
+ }
9328
+ }
9329
+ }
9330
+ },
9331
+ "security": [{ "extensionToken": [] }]
9332
+ }
9333
+ },
9334
+ "/extensions/self/installations": {
9335
+ "get": {
9336
+ "operationId": "extensions.listInstallations",
9337
+ "summary": "List installations",
9338
+ "description": "Lists the installations of the extension on this instance. Requires an app-level token: an extension JWT without a subject.",
9339
+ "tags": ["extensions"],
9340
+ "parameters": [
9341
+ {
9342
+ "name": "after",
9343
+ "in": "query",
9344
+ "schema": {
9345
+ "type": "string",
9346
+ "pattern": "^ext_[A-Za-z\\d]{1,22}$",
9347
+ "description": "Return installations after this ID"
9348
+ },
9349
+ "allowEmptyValue": true,
9350
+ "allowReserved": true
9351
+ },
9352
+ {
9353
+ "name": "limit",
9354
+ "in": "query",
9355
+ "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 100 },
9356
+ "allowEmptyValue": true,
9357
+ "allowReserved": true
9358
+ }
9359
+ ],
9360
+ "responses": {
9361
+ "200": {
9362
+ "description": "OK",
9363
+ "content": {
9364
+ "application/json": {
9365
+ "schema": {
9366
+ "type": "object",
9367
+ "properties": {
9368
+ "data": {
9369
+ "type": "array",
9370
+ "items": {
9371
+ "type": "object",
9372
+ "properties": {
9373
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" },
9374
+ "workspaceID": { "type": "string", "pattern": "^ws_[A-Za-z\\d]{1,22}$" },
9375
+ "version": { "type": "string" },
9376
+ "state": {
9377
+ "enum": ["active", "disabled", "uninstalled"],
9378
+ "type": "string",
9379
+ "description": "Uninstalled extensions remain readable until their last lifecycle event expires"
9380
+ }
9381
+ },
9382
+ "required": ["id", "workspaceID", "version", "state"]
9383
+ }
9384
+ },
9385
+ "hasMore": { "type": "boolean" }
9386
+ },
9387
+ "required": ["data", "hasMore"]
9388
+ }
9389
+ }
9390
+ }
9391
+ },
9392
+ "400": {
9393
+ "description": "400",
9394
+ "content": {
9395
+ "application/json": {
9396
+ "schema": {
9397
+ "oneOf": [
9398
+ {
9399
+ "type": "object",
9400
+ "properties": {
9401
+ "defined": { "const": true },
9402
+ "code": { "const": "BAD_REQUEST" },
9403
+ "status": { "const": 400 },
9404
+ "message": { "type": "string", "default": "Bad Request" },
9405
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
9406
+ },
9407
+ "required": ["defined", "code", "status", "message"]
9408
+ },
9409
+ {
9410
+ "type": "object",
9411
+ "properties": {
9412
+ "defined": { "const": false },
9413
+ "code": { "type": "string" },
9414
+ "status": { "type": "number" },
9415
+ "message": { "type": "string" },
9416
+ "data": {}
9417
+ },
9418
+ "required": ["defined", "code", "status", "message"]
9419
+ }
9420
+ ]
9421
+ }
9422
+ }
9423
+ }
9424
+ },
9425
+ "401": {
9426
+ "description": "401",
9427
+ "content": {
9428
+ "application/json": {
9429
+ "schema": {
9430
+ "oneOf": [
9431
+ {
9432
+ "type": "object",
9433
+ "properties": {
9434
+ "defined": { "const": true },
9435
+ "code": { "const": "UNAUTHORIZED" },
9436
+ "status": { "const": 401 },
9437
+ "message": { "type": "string", "default": "Unauthorized" },
9438
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9439
+ },
9440
+ "required": ["defined", "code", "status", "message"]
9441
+ },
9442
+ {
9443
+ "type": "object",
9444
+ "properties": {
9445
+ "defined": { "const": false },
9446
+ "code": { "type": "string" },
9447
+ "status": { "type": "number" },
9448
+ "message": { "type": "string" },
9449
+ "data": {}
9450
+ },
9451
+ "required": ["defined", "code", "status", "message"]
9452
+ }
9453
+ ]
9454
+ }
9455
+ }
9456
+ }
9457
+ },
9458
+ "403": {
9459
+ "description": "403",
9460
+ "content": {
9461
+ "application/json": {
9462
+ "schema": {
9463
+ "oneOf": [
9464
+ {
9465
+ "type": "object",
9466
+ "properties": {
9467
+ "defined": { "const": true },
9468
+ "code": { "const": "FORBIDDEN" },
9469
+ "status": { "const": 403 },
9470
+ "message": { "type": "string", "default": "Forbidden" },
9471
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
9472
+ },
9473
+ "required": ["defined", "code", "status", "message"]
9474
+ },
9475
+ {
9476
+ "type": "object",
9477
+ "properties": {
9478
+ "defined": { "const": false },
9479
+ "code": { "type": "string" },
9480
+ "status": { "type": "number" },
9481
+ "message": { "type": "string" },
9482
+ "data": {}
9483
+ },
9484
+ "required": ["defined", "code", "status", "message"]
9485
+ }
9486
+ ]
9487
+ }
9488
+ }
9489
+ }
9490
+ },
9491
+ "404": {
9492
+ "description": "404",
9493
+ "content": {
9494
+ "application/json": {
9495
+ "schema": {
9496
+ "oneOf": [
9497
+ {
9498
+ "type": "object",
9499
+ "properties": {
9500
+ "defined": { "const": true },
9501
+ "code": { "const": "NOT_FOUND" },
9502
+ "status": { "const": 404 },
9503
+ "message": { "type": "string", "default": "Not Found" },
9504
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9505
+ },
9506
+ "required": ["defined", "code", "status", "message"]
9507
+ },
9508
+ {
9509
+ "type": "object",
9510
+ "properties": {
9511
+ "defined": { "const": false },
9512
+ "code": { "type": "string" },
9513
+ "status": { "type": "number" },
9514
+ "message": { "type": "string" },
9515
+ "data": {}
9516
+ },
9517
+ "required": ["defined", "code", "status", "message"]
9518
+ }
9519
+ ]
9520
+ }
9521
+ }
9522
+ }
9523
+ },
9524
+ "409": {
9525
+ "description": "409",
9526
+ "content": {
9527
+ "application/json": {
9528
+ "schema": {
9529
+ "oneOf": [
9530
+ {
9531
+ "type": "object",
9532
+ "properties": {
9533
+ "defined": { "const": true },
9534
+ "code": { "const": "CONFLICT" },
9535
+ "status": { "const": 409 },
9536
+ "message": { "type": "string", "default": "Conflict" },
9537
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9538
+ },
9539
+ "required": ["defined", "code", "status", "message"]
9540
+ },
9541
+ {
9542
+ "type": "object",
9543
+ "properties": {
9544
+ "defined": { "const": false },
9545
+ "code": { "type": "string" },
9546
+ "status": { "type": "number" },
9547
+ "message": { "type": "string" },
9548
+ "data": {}
9549
+ },
9550
+ "required": ["defined", "code", "status", "message"]
9551
+ }
9552
+ ]
9553
+ }
9554
+ }
9555
+ }
9556
+ },
9557
+ "429": {
9558
+ "description": "429",
9559
+ "content": {
9560
+ "application/json": {
9561
+ "schema": {
9562
+ "oneOf": [
9563
+ {
9564
+ "type": "object",
9565
+ "properties": {
9566
+ "defined": { "const": true },
9567
+ "code": { "const": "TOO_MANY_REQUESTS" },
9568
+ "status": { "const": 429 },
9569
+ "message": { "type": "string", "default": "Too Many Requests" },
9570
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
9571
+ },
9572
+ "required": ["defined", "code", "status", "message"]
9573
+ },
9574
+ {
9575
+ "type": "object",
9576
+ "properties": {
9577
+ "defined": { "const": false },
9578
+ "code": { "type": "string" },
9579
+ "status": { "type": "number" },
9580
+ "message": { "type": "string" },
9581
+ "data": {}
9582
+ },
9583
+ "required": ["defined", "code", "status", "message"]
9584
+ }
9585
+ ]
9586
+ }
9587
+ }
9588
+ }
9589
+ },
9590
+ "500": {
9591
+ "description": "500",
9592
+ "content": {
9593
+ "application/json": {
9594
+ "schema": {
9595
+ "oneOf": [
9596
+ {
9597
+ "type": "object",
9598
+ "properties": {
9599
+ "defined": { "const": true },
9600
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
9601
+ "status": { "const": 500 },
9602
+ "message": { "type": "string", "default": "Internal Server Error" },
9603
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9604
+ },
9605
+ "required": ["defined", "code", "status", "message"]
9606
+ },
9607
+ {
9608
+ "type": "object",
9609
+ "properties": {
9610
+ "defined": { "const": false },
9611
+ "code": { "type": "string" },
9612
+ "status": { "type": "number" },
9613
+ "message": { "type": "string" },
9614
+ "data": {}
9615
+ },
9616
+ "required": ["defined", "code", "status", "message"]
9617
+ }
9618
+ ]
9619
+ }
9620
+ }
9621
+ }
9622
+ },
9623
+ "503": {
9624
+ "description": "503",
9625
+ "content": {
9626
+ "application/json": {
9627
+ "schema": {
9628
+ "oneOf": [
9629
+ {
9630
+ "type": "object",
9631
+ "properties": {
9632
+ "defined": { "const": true },
9633
+ "code": { "const": "SERVICE_UNAVAILABLE" },
9634
+ "status": { "const": 503 },
9635
+ "message": { "type": "string", "default": "Service Unavailable" },
9636
+ "data": { "$ref": "#/components/schemas/ErrorData" }
9637
+ },
9638
+ "required": ["defined", "code", "status", "message"]
9639
+ },
9640
+ {
9641
+ "type": "object",
9642
+ "properties": {
9643
+ "defined": { "const": false },
9644
+ "code": { "type": "string" },
9645
+ "status": { "type": "number" },
9646
+ "message": { "type": "string" },
9647
+ "data": {}
9648
+ },
9649
+ "required": ["defined", "code", "status", "message"]
9650
+ }
9651
+ ]
9652
+ }
9653
+ }
9654
+ }
9655
+ }
9656
+ },
9657
+ "security": [{ "extensionToken": [] }]
9658
+ }
9659
+ },
9660
+ "/extensions/self/deliveries/{deliveryID}": {
9661
+ "get": {
9662
+ "operationId": "extensions.getSelfDelivery",
9663
+ "summary": "Get a delivery",
9664
+ "description": "Returns the event of a delivery to one of the extension's webhooks. Disabled and uninstalled extensions can read only lifecycle deliveries.",
9665
+ "tags": ["extensions"],
9666
+ "parameters": [
9667
+ {
9668
+ "name": "deliveryID",
9669
+ "in": "path",
9670
+ "required": true,
9671
+ "schema": { "type": "string", "pattern": "^whdel_[A-Za-z\\d]{1,22}$" }
9672
+ }
9673
+ ],
9674
+ "responses": {
9675
+ "200": {
9676
+ "description": "OK",
9677
+ "content": {
9678
+ "application/json": {
9679
+ "schema": {
9680
+ "type": "object",
9681
+ "properties": {
9682
+ "deliveryID": { "type": "string", "pattern": "^whdel_[A-Za-z\\d]{1,22}$" },
9683
+ "event": {
9684
+ "anyOf": [
9685
+ {
9686
+ "type": "object",
9687
+ "properties": {
9688
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
9689
+ "operationID": {
9690
+ "type": "string",
9691
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
9692
+ },
9693
+ "schemaVersion": { "const": 1 },
9694
+ "occurredAt": { "type": "string", "format": "date-time" },
9695
+ "workspaceID": {
9696
+ "type": "string",
9697
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
9698
+ },
9699
+ "test": { "type": "boolean" },
9700
+ "subject": {
9701
+ "type": "object",
9702
+ "properties": {
9703
+ "kind": { "const": "entry" },
9704
+ "id": { "type": "string", "pattern": "^ent_[A-Za-z\\d]{1,22}$" }
9705
+ },
9706
+ "required": ["kind", "id"],
9707
+ "additionalProperties": false
9708
+ },
9709
+ "type": { "const": "entry.created" },
9710
+ "data": {
9711
+ "type": "object",
9712
+ "properties": {
9713
+ "name": { "type": "string", "minLength": 1, "maxLength": 300 },
9714
+ "collectionID": {
9715
+ "anyOf": [
9716
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
9717
+ { "type": "null" }
9718
+ ]
9719
+ },
9720
+ "contentHash": { "type": "string", "pattern": "^[a-f\\d]{64}$" }
9721
+ },
9722
+ "required": ["name", "collectionID"],
9723
+ "additionalProperties": false
9724
+ }
9725
+ },
9726
+ "required": [
9727
+ "id",
9728
+ "operationID",
9729
+ "schemaVersion",
9730
+ "occurredAt",
9731
+ "workspaceID",
9732
+ "test",
9733
+ "subject",
9734
+ "type",
9735
+ "data"
9736
+ ],
9737
+ "additionalProperties": false
9738
+ },
9739
+ {
9740
+ "type": "object",
9741
+ "properties": {
9742
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
9743
+ "operationID": {
9744
+ "type": "string",
9745
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
9746
+ },
9747
+ "schemaVersion": { "const": 1 },
9748
+ "occurredAt": { "type": "string", "format": "date-time" },
9749
+ "workspaceID": {
9750
+ "type": "string",
9751
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
9752
+ },
9753
+ "test": { "type": "boolean" },
9754
+ "subject": {
9755
+ "type": "object",
9756
+ "properties": {
9757
+ "kind": { "const": "entry" },
9758
+ "id": { "type": "string", "pattern": "^ent_[A-Za-z\\d]{1,22}$" }
9759
+ },
9760
+ "required": ["kind", "id"],
9761
+ "additionalProperties": false
9762
+ },
9763
+ "type": { "const": "entry.updated" },
9764
+ "data": {
9765
+ "type": "object",
9766
+ "properties": {
9767
+ "collectionID": {
9768
+ "anyOf": [
9769
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
9770
+ { "type": "null" }
9771
+ ]
9772
+ },
9773
+ "changedFields": {
9774
+ "type": "array",
9775
+ "minItems": 1,
9776
+ "maxItems": 1,
9777
+ "items": { "const": "name" }
9778
+ }
9779
+ },
9780
+ "required": ["collectionID", "changedFields"],
9781
+ "additionalProperties": false
9782
+ }
9783
+ },
9784
+ "required": [
9785
+ "id",
9786
+ "operationID",
9787
+ "schemaVersion",
9788
+ "occurredAt",
9789
+ "workspaceID",
9790
+ "test",
9791
+ "subject",
9792
+ "type",
9793
+ "data"
9794
+ ],
9795
+ "additionalProperties": false
9796
+ },
9797
+ {
9798
+ "type": "object",
9799
+ "properties": {
9800
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
9801
+ "operationID": {
9802
+ "type": "string",
9803
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
9804
+ },
9805
+ "schemaVersion": { "const": 1 },
9806
+ "occurredAt": { "type": "string", "format": "date-time" },
9807
+ "workspaceID": {
9808
+ "type": "string",
9809
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
9810
+ },
9811
+ "test": { "type": "boolean" },
9812
+ "subject": {
9813
+ "type": "object",
9814
+ "properties": {
9815
+ "kind": { "const": "entry" },
9816
+ "id": { "type": "string", "pattern": "^ent_[A-Za-z\\d]{1,22}$" }
9817
+ },
9818
+ "required": ["kind", "id"],
9819
+ "additionalProperties": false
9820
+ },
9821
+ "type": { "const": "entry.content_saved" },
9822
+ "data": {
9823
+ "type": "object",
9824
+ "properties": {
9825
+ "collectionID": {
9826
+ "anyOf": [
9827
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
9828
+ { "type": "null" }
9829
+ ]
9830
+ },
9831
+ "contentHash": { "type": "string", "pattern": "^[a-f\\d]{64}$" },
9832
+ "savedAt": { "type": "string", "format": "date-time" }
9833
+ },
9834
+ "required": ["collectionID", "contentHash", "savedAt"],
9835
+ "additionalProperties": false
9836
+ }
9837
+ },
9838
+ "required": [
9839
+ "id",
9840
+ "operationID",
9841
+ "schemaVersion",
9842
+ "occurredAt",
9843
+ "workspaceID",
9844
+ "test",
9845
+ "subject",
9846
+ "type",
9847
+ "data"
9848
+ ],
9849
+ "additionalProperties": false
9850
+ },
9851
+ {
9852
+ "type": "object",
9853
+ "properties": {
9854
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
9855
+ "operationID": {
9856
+ "type": "string",
9857
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
9858
+ },
9859
+ "schemaVersion": { "const": 1 },
9860
+ "occurredAt": { "type": "string", "format": "date-time" },
9861
+ "workspaceID": {
9862
+ "type": "string",
9863
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
9864
+ },
9865
+ "test": { "type": "boolean" },
9866
+ "subject": {
9867
+ "type": "object",
9868
+ "properties": {
9869
+ "kind": { "const": "entry" },
9870
+ "id": { "type": "string", "pattern": "^ent_[A-Za-z\\d]{1,22}$" }
9871
+ },
9872
+ "required": ["kind", "id"],
9873
+ "additionalProperties": false
9874
+ },
9875
+ "type": { "const": "entry.moved" },
9876
+ "data": {
9877
+ "anyOf": [
9878
+ {
9879
+ "type": "object",
9880
+ "properties": {
9881
+ "scopeTransition": { "const": "within" },
9882
+ "reason": {
9883
+ "enum": ["direct", "ancestor_moved", "reordered"],
9884
+ "type": "string"
9885
+ },
9886
+ "from": {
9887
+ "type": "object",
9888
+ "properties": {
9889
+ "visibility": { "const": "visible" },
9890
+ "parentID": {
9891
+ "anyOf": [
9892
+ {
9893
+ "type": "string",
9894
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
9895
+ },
9896
+ { "type": "null" }
9897
+ ],
9898
+ "description": "Null means the workspace root, never a hidden parent"
9899
+ },
9900
+ "order": {
9901
+ "type": "string",
9902
+ "minLength": 1,
9903
+ "maxLength": 255
9904
+ }
9905
+ },
9906
+ "required": ["visibility", "parentID"],
9907
+ "additionalProperties": false
9908
+ },
9909
+ "to": {
9910
+ "type": "object",
9911
+ "properties": {
9912
+ "visibility": { "const": "visible" },
9913
+ "parentID": {
9914
+ "anyOf": [
9915
+ {
9916
+ "type": "string",
9917
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
9918
+ },
9919
+ { "type": "null" }
9920
+ ],
9921
+ "description": "Null means the workspace root, never a hidden parent"
9922
+ },
9923
+ "order": {
9924
+ "type": "string",
9925
+ "minLength": 1,
9926
+ "maxLength": 255
9927
+ }
9928
+ },
9929
+ "required": ["visibility", "parentID"],
9930
+ "additionalProperties": false
9931
+ }
9932
+ },
9933
+ "required": ["scopeTransition", "reason", "from", "to"],
9934
+ "additionalProperties": false
9935
+ },
9936
+ {
9937
+ "type": "object",
9938
+ "properties": {
9939
+ "scopeTransition": { "const": "entered" },
9940
+ "reason": {
9941
+ "enum": ["direct", "ancestor_moved", "reordered"],
9942
+ "type": "string"
9943
+ },
9944
+ "from": {
9945
+ "type": "object",
9946
+ "properties": { "visibility": { "const": "hidden" } },
9947
+ "required": ["visibility"],
9948
+ "additionalProperties": false
9949
+ },
9950
+ "to": {
9951
+ "type": "object",
9952
+ "properties": {
9953
+ "visibility": { "const": "visible" },
9954
+ "parentID": {
9955
+ "anyOf": [
9956
+ {
9957
+ "type": "string",
9958
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
9959
+ },
9960
+ { "type": "null" }
9961
+ ],
9962
+ "description": "Null means the workspace root, never a hidden parent"
9963
+ },
9964
+ "order": {
9965
+ "type": "string",
9966
+ "minLength": 1,
9967
+ "maxLength": 255
9968
+ }
9969
+ },
9970
+ "required": ["visibility", "parentID"],
9971
+ "additionalProperties": false
9972
+ }
9973
+ },
9974
+ "required": ["scopeTransition", "reason", "from", "to"],
9975
+ "additionalProperties": false
9976
+ },
9977
+ {
9978
+ "type": "object",
9979
+ "properties": {
9980
+ "scopeTransition": { "const": "left" },
9981
+ "reason": {
9982
+ "enum": ["direct", "ancestor_moved", "reordered"],
9983
+ "type": "string"
9984
+ },
9985
+ "from": {
9986
+ "type": "object",
9987
+ "properties": {
9988
+ "visibility": { "const": "visible" },
9989
+ "parentID": {
9990
+ "anyOf": [
9991
+ {
9992
+ "type": "string",
9993
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
9994
+ },
9995
+ { "type": "null" }
9996
+ ],
9997
+ "description": "Null means the workspace root, never a hidden parent"
9998
+ },
9999
+ "order": {
10000
+ "type": "string",
10001
+ "minLength": 1,
10002
+ "maxLength": 255
10003
+ }
10004
+ },
10005
+ "required": ["visibility", "parentID"],
10006
+ "additionalProperties": false
10007
+ },
10008
+ "to": {
10009
+ "type": "object",
10010
+ "properties": { "visibility": { "const": "hidden" } },
10011
+ "required": ["visibility"],
10012
+ "additionalProperties": false
10013
+ }
10014
+ },
10015
+ "required": ["scopeTransition", "reason", "from", "to"],
10016
+ "additionalProperties": false
10017
+ }
10018
+ ]
10019
+ }
10020
+ },
10021
+ "required": [
10022
+ "id",
10023
+ "operationID",
10024
+ "schemaVersion",
10025
+ "occurredAt",
10026
+ "workspaceID",
10027
+ "test",
10028
+ "subject",
10029
+ "type",
10030
+ "data"
10031
+ ],
10032
+ "additionalProperties": false
10033
+ },
10034
+ {
10035
+ "type": "object",
10036
+ "properties": {
10037
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10038
+ "operationID": {
10039
+ "type": "string",
10040
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10041
+ },
10042
+ "schemaVersion": { "const": 1 },
10043
+ "occurredAt": { "type": "string", "format": "date-time" },
10044
+ "workspaceID": {
10045
+ "type": "string",
10046
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10047
+ },
10048
+ "test": { "type": "boolean" },
10049
+ "subject": {
10050
+ "type": "object",
10051
+ "properties": {
10052
+ "kind": { "const": "entry" },
10053
+ "id": { "type": "string", "pattern": "^ent_[A-Za-z\\d]{1,22}$" }
10054
+ },
10055
+ "required": ["kind", "id"],
10056
+ "additionalProperties": false
10057
+ },
10058
+ "type": { "const": "entry.deleted" },
10059
+ "data": {
10060
+ "type": "object",
10061
+ "properties": {
10062
+ "name": { "type": "string", "minLength": 1, "maxLength": 300 },
10063
+ "collectionID": {
10064
+ "anyOf": [
10065
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
10066
+ { "type": "null" }
10067
+ ]
10068
+ },
10069
+ "deletedAt": { "type": "string", "format": "date-time" }
10070
+ },
10071
+ "required": ["name", "collectionID", "deletedAt"],
10072
+ "additionalProperties": false
10073
+ }
10074
+ },
10075
+ "required": [
10076
+ "id",
10077
+ "operationID",
10078
+ "schemaVersion",
10079
+ "occurredAt",
10080
+ "workspaceID",
10081
+ "test",
10082
+ "subject",
10083
+ "type",
10084
+ "data"
10085
+ ],
10086
+ "additionalProperties": false
10087
+ },
10088
+ {
10089
+ "type": "object",
10090
+ "properties": {
10091
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10092
+ "operationID": {
10093
+ "type": "string",
10094
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10095
+ },
10096
+ "schemaVersion": { "const": 1 },
10097
+ "occurredAt": { "type": "string", "format": "date-time" },
10098
+ "workspaceID": {
10099
+ "type": "string",
10100
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10101
+ },
10102
+ "test": { "type": "boolean" },
10103
+ "subject": {
10104
+ "type": "object",
10105
+ "properties": {
10106
+ "kind": { "const": "entry" },
10107
+ "id": { "type": "string", "pattern": "^ent_[A-Za-z\\d]{1,22}$" }
10108
+ },
10109
+ "required": ["kind", "id"],
10110
+ "additionalProperties": false
10111
+ },
10112
+ "type": { "const": "entry.restored" },
10113
+ "data": {
10114
+ "type": "object",
10115
+ "properties": {
10116
+ "name": { "type": "string", "minLength": 1, "maxLength": 300 },
10117
+ "collectionID": {
10118
+ "anyOf": [
10119
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
10120
+ { "type": "null" }
10121
+ ]
10122
+ }
10123
+ },
10124
+ "required": ["name", "collectionID"],
10125
+ "additionalProperties": false
10126
+ }
10127
+ },
10128
+ "required": [
10129
+ "id",
10130
+ "operationID",
10131
+ "schemaVersion",
10132
+ "occurredAt",
10133
+ "workspaceID",
10134
+ "test",
10135
+ "subject",
10136
+ "type",
10137
+ "data"
10138
+ ],
10139
+ "additionalProperties": false
10140
+ },
10141
+ {
10142
+ "type": "object",
10143
+ "properties": {
10144
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10145
+ "operationID": {
10146
+ "type": "string",
10147
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10148
+ },
10149
+ "schemaVersion": { "const": 1 },
10150
+ "occurredAt": { "type": "string", "format": "date-time" },
10151
+ "workspaceID": {
10152
+ "type": "string",
10153
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10154
+ },
10155
+ "test": { "type": "boolean" },
10156
+ "subject": {
10157
+ "type": "object",
10158
+ "properties": {
10159
+ "kind": { "const": "collection" },
10160
+ "id": { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" }
10161
+ },
10162
+ "required": ["kind", "id"],
10163
+ "additionalProperties": false
10164
+ },
10165
+ "type": { "const": "collection.created" },
10166
+ "data": {
10167
+ "type": "object",
10168
+ "properties": {
10169
+ "name": { "type": "string", "minLength": 1, "maxLength": 300 },
10170
+ "parentID": {
10171
+ "anyOf": [
10172
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
10173
+ { "type": "null" }
10174
+ ]
10175
+ }
10176
+ },
10177
+ "required": ["name", "parentID"],
10178
+ "additionalProperties": false
10179
+ }
10180
+ },
10181
+ "required": [
10182
+ "id",
10183
+ "operationID",
10184
+ "schemaVersion",
10185
+ "occurredAt",
10186
+ "workspaceID",
10187
+ "test",
10188
+ "subject",
10189
+ "type",
10190
+ "data"
10191
+ ],
10192
+ "additionalProperties": false
10193
+ },
10194
+ {
10195
+ "type": "object",
10196
+ "properties": {
10197
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10198
+ "operationID": {
10199
+ "type": "string",
10200
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10201
+ },
10202
+ "schemaVersion": { "const": 1 },
10203
+ "occurredAt": { "type": "string", "format": "date-time" },
10204
+ "workspaceID": {
10205
+ "type": "string",
10206
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10207
+ },
10208
+ "test": { "type": "boolean" },
10209
+ "subject": {
10210
+ "type": "object",
10211
+ "properties": {
10212
+ "kind": { "const": "collection" },
10213
+ "id": { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" }
10214
+ },
10215
+ "required": ["kind", "id"],
10216
+ "additionalProperties": false
10217
+ },
10218
+ "type": { "const": "collection.updated" },
10219
+ "data": {
10220
+ "type": "object",
10221
+ "properties": {
10222
+ "parentID": {
10223
+ "anyOf": [
10224
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
10225
+ { "type": "null" }
10226
+ ]
10227
+ },
10228
+ "changedFields": {
10229
+ "type": "array",
10230
+ "minItems": 1,
10231
+ "maxItems": 3,
10232
+ "items": {
10233
+ "enum": ["name", "restricted", "publishingEnabled"],
10234
+ "type": "string"
10235
+ },
10236
+ "uniqueItems": true
10237
+ }
10238
+ },
10239
+ "required": ["parentID", "changedFields"],
10240
+ "additionalProperties": false
10241
+ }
10242
+ },
10243
+ "required": [
10244
+ "id",
10245
+ "operationID",
10246
+ "schemaVersion",
10247
+ "occurredAt",
10248
+ "workspaceID",
10249
+ "test",
10250
+ "subject",
10251
+ "type",
10252
+ "data"
10253
+ ],
10254
+ "additionalProperties": false
10255
+ },
10256
+ {
10257
+ "type": "object",
10258
+ "properties": {
10259
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10260
+ "operationID": {
10261
+ "type": "string",
10262
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10263
+ },
10264
+ "schemaVersion": { "const": 1 },
10265
+ "occurredAt": { "type": "string", "format": "date-time" },
10266
+ "workspaceID": {
10267
+ "type": "string",
10268
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10269
+ },
10270
+ "test": { "type": "boolean" },
10271
+ "subject": {
10272
+ "type": "object",
10273
+ "properties": {
10274
+ "kind": { "const": "collection" },
10275
+ "id": { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" }
10276
+ },
10277
+ "required": ["kind", "id"],
10278
+ "additionalProperties": false
10279
+ },
10280
+ "type": { "const": "collection.moved" },
10281
+ "data": {
10282
+ "anyOf": [
10283
+ {
10284
+ "type": "object",
10285
+ "properties": {
10286
+ "scopeTransition": { "const": "within" },
10287
+ "reason": {
10288
+ "enum": ["direct", "ancestor_moved", "reordered"],
10289
+ "type": "string"
10290
+ },
10291
+ "from": {
10292
+ "type": "object",
10293
+ "properties": {
10294
+ "visibility": { "const": "visible" },
10295
+ "parentID": {
10296
+ "anyOf": [
10297
+ {
10298
+ "type": "string",
10299
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
10300
+ },
10301
+ { "type": "null" }
10302
+ ],
10303
+ "description": "Null means the workspace root, never a hidden parent"
10304
+ },
10305
+ "order": {
10306
+ "type": "string",
10307
+ "minLength": 1,
10308
+ "maxLength": 255
10309
+ }
10310
+ },
10311
+ "required": ["visibility", "parentID"],
10312
+ "additionalProperties": false
10313
+ },
10314
+ "to": {
10315
+ "type": "object",
10316
+ "properties": {
10317
+ "visibility": { "const": "visible" },
10318
+ "parentID": {
10319
+ "anyOf": [
10320
+ {
10321
+ "type": "string",
10322
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
10323
+ },
10324
+ { "type": "null" }
10325
+ ],
10326
+ "description": "Null means the workspace root, never a hidden parent"
10327
+ },
10328
+ "order": {
10329
+ "type": "string",
10330
+ "minLength": 1,
10331
+ "maxLength": 255
10332
+ }
10333
+ },
10334
+ "required": ["visibility", "parentID"],
10335
+ "additionalProperties": false
10336
+ }
10337
+ },
10338
+ "required": ["scopeTransition", "reason", "from", "to"],
10339
+ "additionalProperties": false
10340
+ },
10341
+ {
10342
+ "type": "object",
10343
+ "properties": {
10344
+ "scopeTransition": { "const": "entered" },
10345
+ "reason": {
10346
+ "enum": ["direct", "ancestor_moved", "reordered"],
10347
+ "type": "string"
10348
+ },
10349
+ "from": {
10350
+ "type": "object",
10351
+ "properties": { "visibility": { "const": "hidden" } },
10352
+ "required": ["visibility"],
10353
+ "additionalProperties": false
10354
+ },
10355
+ "to": {
10356
+ "type": "object",
10357
+ "properties": {
10358
+ "visibility": { "const": "visible" },
10359
+ "parentID": {
10360
+ "anyOf": [
10361
+ {
10362
+ "type": "string",
10363
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
10364
+ },
10365
+ { "type": "null" }
10366
+ ],
10367
+ "description": "Null means the workspace root, never a hidden parent"
10368
+ },
10369
+ "order": {
10370
+ "type": "string",
10371
+ "minLength": 1,
10372
+ "maxLength": 255
10373
+ }
10374
+ },
10375
+ "required": ["visibility", "parentID"],
10376
+ "additionalProperties": false
10377
+ }
10378
+ },
10379
+ "required": ["scopeTransition", "reason", "from", "to"],
10380
+ "additionalProperties": false
10381
+ },
10382
+ {
10383
+ "type": "object",
10384
+ "properties": {
10385
+ "scopeTransition": { "const": "left" },
10386
+ "reason": {
10387
+ "enum": ["direct", "ancestor_moved", "reordered"],
10388
+ "type": "string"
10389
+ },
10390
+ "from": {
10391
+ "type": "object",
10392
+ "properties": {
10393
+ "visibility": { "const": "visible" },
10394
+ "parentID": {
10395
+ "anyOf": [
10396
+ {
10397
+ "type": "string",
10398
+ "pattern": "^coll_[A-Za-z\\d]{1,22}$"
10399
+ },
10400
+ { "type": "null" }
10401
+ ],
10402
+ "description": "Null means the workspace root, never a hidden parent"
10403
+ },
10404
+ "order": {
10405
+ "type": "string",
10406
+ "minLength": 1,
10407
+ "maxLength": 255
10408
+ }
10409
+ },
10410
+ "required": ["visibility", "parentID"],
10411
+ "additionalProperties": false
10412
+ },
10413
+ "to": {
10414
+ "type": "object",
10415
+ "properties": { "visibility": { "const": "hidden" } },
10416
+ "required": ["visibility"],
10417
+ "additionalProperties": false
10418
+ }
10419
+ },
10420
+ "required": ["scopeTransition", "reason", "from", "to"],
10421
+ "additionalProperties": false
10422
+ }
10423
+ ]
10424
+ }
10425
+ },
10426
+ "required": [
10427
+ "id",
10428
+ "operationID",
10429
+ "schemaVersion",
10430
+ "occurredAt",
10431
+ "workspaceID",
10432
+ "test",
10433
+ "subject",
10434
+ "type",
10435
+ "data"
10436
+ ],
10437
+ "additionalProperties": false
10438
+ },
10439
+ {
10440
+ "type": "object",
10441
+ "properties": {
10442
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10443
+ "operationID": {
10444
+ "type": "string",
10445
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10446
+ },
10447
+ "schemaVersion": { "const": 1 },
10448
+ "occurredAt": { "type": "string", "format": "date-time" },
10449
+ "workspaceID": {
10450
+ "type": "string",
10451
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10452
+ },
10453
+ "test": { "type": "boolean" },
10454
+ "subject": {
10455
+ "type": "object",
10456
+ "properties": {
10457
+ "kind": { "const": "collection" },
10458
+ "id": { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" }
10459
+ },
10460
+ "required": ["kind", "id"],
10461
+ "additionalProperties": false
10462
+ },
10463
+ "type": { "const": "collection.deleted" },
10464
+ "data": {
10465
+ "type": "object",
10466
+ "properties": {
10467
+ "name": { "type": "string", "minLength": 1, "maxLength": 300 },
10468
+ "parentID": {
10469
+ "anyOf": [
10470
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
10471
+ { "type": "null" }
10472
+ ]
10473
+ },
10474
+ "deletedAt": { "type": "string", "format": "date-time" }
10475
+ },
10476
+ "required": ["name", "parentID", "deletedAt"],
10477
+ "additionalProperties": false
10478
+ }
10479
+ },
10480
+ "required": [
10481
+ "id",
10482
+ "operationID",
10483
+ "schemaVersion",
10484
+ "occurredAt",
10485
+ "workspaceID",
10486
+ "test",
10487
+ "subject",
10488
+ "type",
10489
+ "data"
10490
+ ],
10491
+ "additionalProperties": false
10492
+ },
10493
+ {
10494
+ "type": "object",
10495
+ "properties": {
10496
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10497
+ "operationID": {
10498
+ "type": "string",
10499
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10500
+ },
10501
+ "schemaVersion": { "const": 1 },
10502
+ "occurredAt": { "type": "string", "format": "date-time" },
10503
+ "workspaceID": {
10504
+ "type": "string",
10505
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10506
+ },
10507
+ "test": { "type": "boolean" },
10508
+ "subject": {
10509
+ "type": "object",
10510
+ "properties": {
10511
+ "kind": { "const": "collection" },
10512
+ "id": { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" }
10513
+ },
10514
+ "required": ["kind", "id"],
10515
+ "additionalProperties": false
10516
+ },
10517
+ "type": { "const": "collection.restored" },
10518
+ "data": {
10519
+ "type": "object",
10520
+ "properties": {
10521
+ "name": { "type": "string", "minLength": 1, "maxLength": 300 },
10522
+ "parentID": {
10523
+ "anyOf": [
10524
+ { "type": "string", "pattern": "^coll_[A-Za-z\\d]{1,22}$" },
10525
+ { "type": "null" }
10526
+ ]
10527
+ }
10528
+ },
10529
+ "required": ["name", "parentID"],
10530
+ "additionalProperties": false
10531
+ }
10532
+ },
10533
+ "required": [
10534
+ "id",
10535
+ "operationID",
10536
+ "schemaVersion",
10537
+ "occurredAt",
10538
+ "workspaceID",
10539
+ "test",
10540
+ "subject",
10541
+ "type",
10542
+ "data"
10543
+ ],
10544
+ "additionalProperties": false
10545
+ },
10546
+ {
10547
+ "type": "object",
10548
+ "properties": {
10549
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10550
+ "operationID": {
10551
+ "type": "string",
10552
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10553
+ },
10554
+ "schemaVersion": { "const": 1 },
10555
+ "occurredAt": { "type": "string", "format": "date-time" },
10556
+ "workspaceID": {
10557
+ "type": "string",
10558
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10559
+ },
10560
+ "test": { "type": "boolean" },
10561
+ "subject": {
10562
+ "type": "object",
10563
+ "properties": {
10564
+ "kind": { "const": "channel" },
10565
+ "code": { "type": "string", "minLength": 1, "maxLength": 50 }
10566
+ },
10567
+ "required": ["kind", "code"],
10568
+ "additionalProperties": false
10569
+ },
10570
+ "type": { "const": "publishing.channel_advanced" },
10571
+ "data": {
10572
+ "type": "object",
10573
+ "properties": {
10574
+ "previousSnapshotID": {
10575
+ "type": "string",
10576
+ "pattern": "^snp_[A-Za-z\\d]{1,22}$"
10577
+ },
10578
+ "snapshotID": {
10579
+ "type": "string",
10580
+ "pattern": "^snp_[A-Za-z\\d]{1,22}$"
10581
+ },
10582
+ "reason": { "enum": ["publish", "unpublish"], "type": "string" }
10583
+ },
10584
+ "required": ["previousSnapshotID", "snapshotID", "reason"],
10585
+ "additionalProperties": false
10586
+ }
10587
+ },
10588
+ "required": [
10589
+ "id",
10590
+ "operationID",
10591
+ "schemaVersion",
10592
+ "occurredAt",
10593
+ "workspaceID",
10594
+ "test",
10595
+ "subject",
10596
+ "type",
10597
+ "data"
10598
+ ],
10599
+ "additionalProperties": false
10600
+ },
10601
+ {
10602
+ "type": "object",
10603
+ "properties": {
10604
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10605
+ "operationID": {
10606
+ "type": "string",
10607
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10608
+ },
10609
+ "schemaVersion": { "const": 1 },
10610
+ "occurredAt": { "type": "string", "format": "date-time" },
10611
+ "workspaceID": {
10612
+ "type": "string",
10613
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10614
+ },
10615
+ "test": { "type": "boolean" },
10616
+ "subject": {
10617
+ "type": "object",
10618
+ "properties": {
10619
+ "kind": { "const": "channel" },
10620
+ "code": { "type": "string", "minLength": 1, "maxLength": 50 }
10621
+ },
10622
+ "required": ["kind", "code"],
10623
+ "additionalProperties": false
10624
+ },
10625
+ "type": { "const": "publishing.channel_created" },
10626
+ "data": {
10627
+ "type": "object",
10628
+ "properties": {
10629
+ "name": { "type": "string", "minLength": 1, "maxLength": 50 },
10630
+ "builtIn": { "type": "boolean" },
10631
+ "snapshotID": {
10632
+ "type": "string",
10633
+ "pattern": "^snp_[A-Za-z\\d]{1,22}$"
10634
+ }
10635
+ },
10636
+ "required": ["name", "builtIn", "snapshotID"],
10637
+ "additionalProperties": false
10638
+ }
10639
+ },
10640
+ "required": [
10641
+ "id",
10642
+ "operationID",
10643
+ "schemaVersion",
10644
+ "occurredAt",
10645
+ "workspaceID",
10646
+ "test",
10647
+ "subject",
10648
+ "type",
10649
+ "data"
10650
+ ],
10651
+ "additionalProperties": false
10652
+ },
10653
+ {
10654
+ "type": "object",
10655
+ "properties": {
10656
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10657
+ "operationID": {
10658
+ "type": "string",
10659
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10660
+ },
10661
+ "schemaVersion": { "const": 1 },
10662
+ "occurredAt": { "type": "string", "format": "date-time" },
10663
+ "workspaceID": {
10664
+ "type": "string",
10665
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10666
+ },
10667
+ "test": { "type": "boolean" },
10668
+ "subject": {
10669
+ "type": "object",
10670
+ "properties": {
10671
+ "kind": { "const": "channel" },
10672
+ "code": { "type": "string", "minLength": 1, "maxLength": 50 }
10673
+ },
10674
+ "required": ["kind", "code"],
10675
+ "additionalProperties": false
10676
+ },
10677
+ "type": { "const": "publishing.channel_deleted" },
10678
+ "data": {
10679
+ "type": "object",
10680
+ "properties": {
10681
+ "name": { "type": "string", "minLength": 1, "maxLength": 50 },
10682
+ "snapshotID": {
10683
+ "type": "string",
10684
+ "pattern": "^snp_[A-Za-z\\d]{1,22}$"
10685
+ }
10686
+ },
10687
+ "required": ["name", "snapshotID"],
10688
+ "additionalProperties": false
10689
+ }
10690
+ },
10691
+ "required": [
10692
+ "id",
10693
+ "operationID",
10694
+ "schemaVersion",
10695
+ "occurredAt",
10696
+ "workspaceID",
10697
+ "test",
10698
+ "subject",
10699
+ "type",
10700
+ "data"
10701
+ ],
10702
+ "additionalProperties": false
10703
+ },
10704
+ {
10705
+ "type": "object",
10706
+ "properties": {
10707
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10708
+ "operationID": {
10709
+ "type": "string",
10710
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10711
+ },
10712
+ "schemaVersion": { "const": 1 },
10713
+ "occurredAt": { "type": "string", "format": "date-time" },
10714
+ "workspaceID": {
10715
+ "type": "string",
10716
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10717
+ },
10718
+ "test": { "type": "boolean" },
10719
+ "subject": {
10720
+ "type": "object",
10721
+ "properties": {
10722
+ "kind": { "const": "extension" },
10723
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" }
10724
+ },
10725
+ "required": ["kind", "id"],
10726
+ "additionalProperties": false
10727
+ },
10728
+ "type": { "const": "extension.installed" },
10729
+ "data": {
10730
+ "type": "object",
10731
+ "properties": {
10732
+ "version": { "type": "string", "minLength": 1, "maxLength": 64 }
10733
+ },
10734
+ "required": ["version"],
10735
+ "additionalProperties": false
10736
+ }
10737
+ },
10738
+ "required": [
10739
+ "id",
10740
+ "operationID",
10741
+ "schemaVersion",
10742
+ "occurredAt",
10743
+ "workspaceID",
10744
+ "test",
10745
+ "subject",
10746
+ "type",
10747
+ "data"
10748
+ ],
10749
+ "additionalProperties": false
10750
+ },
10751
+ {
10752
+ "type": "object",
10753
+ "properties": {
10754
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10755
+ "operationID": {
10756
+ "type": "string",
10757
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10758
+ },
10759
+ "schemaVersion": { "const": 1 },
10760
+ "occurredAt": { "type": "string", "format": "date-time" },
10761
+ "workspaceID": {
10762
+ "type": "string",
10763
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10764
+ },
10765
+ "test": { "type": "boolean" },
10766
+ "subject": {
10767
+ "type": "object",
10768
+ "properties": {
10769
+ "kind": { "const": "extension" },
10770
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" }
10771
+ },
10772
+ "required": ["kind", "id"],
10773
+ "additionalProperties": false
10774
+ },
10775
+ "type": { "const": "extension.enabled" },
10776
+ "data": {
10777
+ "type": "object",
10778
+ "properties": {
10779
+ "version": { "type": "string", "minLength": 1, "maxLength": 64 }
10780
+ },
10781
+ "required": ["version"],
10782
+ "additionalProperties": false
10783
+ }
10784
+ },
10785
+ "required": [
10786
+ "id",
10787
+ "operationID",
10788
+ "schemaVersion",
10789
+ "occurredAt",
10790
+ "workspaceID",
10791
+ "test",
10792
+ "subject",
10793
+ "type",
10794
+ "data"
10795
+ ],
10796
+ "additionalProperties": false
10797
+ },
10798
+ {
10799
+ "type": "object",
10800
+ "properties": {
10801
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10802
+ "operationID": {
10803
+ "type": "string",
10804
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10805
+ },
10806
+ "schemaVersion": { "const": 1 },
10807
+ "occurredAt": { "type": "string", "format": "date-time" },
10808
+ "workspaceID": {
10809
+ "type": "string",
10810
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10811
+ },
10812
+ "test": { "type": "boolean" },
10813
+ "subject": {
10814
+ "type": "object",
10815
+ "properties": {
10816
+ "kind": { "const": "extension" },
10817
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" }
10818
+ },
10819
+ "required": ["kind", "id"],
10820
+ "additionalProperties": false
10821
+ },
10822
+ "type": { "const": "extension.disabled" },
10823
+ "data": {
10824
+ "type": "object",
10825
+ "properties": {
10826
+ "version": { "type": "string", "minLength": 1, "maxLength": 64 },
10827
+ "reason": {
10828
+ "enum": [
10829
+ "manual",
10830
+ "approval_required",
10831
+ "configuration_required",
10832
+ "revoked"
10833
+ ],
10834
+ "type": "string"
10835
+ }
10836
+ },
10837
+ "required": ["version", "reason"],
10838
+ "additionalProperties": false
10839
+ }
10840
+ },
10841
+ "required": [
10842
+ "id",
10843
+ "operationID",
10844
+ "schemaVersion",
10845
+ "occurredAt",
10846
+ "workspaceID",
10847
+ "test",
10848
+ "subject",
10849
+ "type",
10850
+ "data"
10851
+ ],
10852
+ "additionalProperties": false
10853
+ },
10854
+ {
10855
+ "type": "object",
10856
+ "properties": {
10857
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10858
+ "operationID": {
10859
+ "type": "string",
10860
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10861
+ },
10862
+ "schemaVersion": { "const": 1 },
10863
+ "occurredAt": { "type": "string", "format": "date-time" },
10864
+ "workspaceID": {
10865
+ "type": "string",
10866
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10867
+ },
10868
+ "test": { "type": "boolean" },
10869
+ "subject": {
10870
+ "type": "object",
10871
+ "properties": {
10872
+ "kind": { "const": "extension" },
10873
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" }
10874
+ },
10875
+ "required": ["kind", "id"],
10876
+ "additionalProperties": false
10877
+ },
10878
+ "type": { "const": "extension.updated" },
10879
+ "data": {
10880
+ "type": "object",
10881
+ "properties": {
10882
+ "version": { "type": "string", "minLength": 1, "maxLength": 64 },
10883
+ "previousVersion": {
10884
+ "type": "string",
10885
+ "minLength": 1,
10886
+ "maxLength": 64
10887
+ }
10888
+ },
10889
+ "required": ["version", "previousVersion"],
10890
+ "additionalProperties": false
10891
+ }
10892
+ },
10893
+ "required": [
10894
+ "id",
10895
+ "operationID",
10896
+ "schemaVersion",
10897
+ "occurredAt",
10898
+ "workspaceID",
10899
+ "test",
10900
+ "subject",
10901
+ "type",
10902
+ "data"
10903
+ ],
10904
+ "additionalProperties": false
10905
+ },
10906
+ {
10907
+ "type": "object",
10908
+ "properties": {
10909
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10910
+ "operationID": {
10911
+ "type": "string",
10912
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10913
+ },
10914
+ "schemaVersion": { "const": 1 },
10915
+ "occurredAt": { "type": "string", "format": "date-time" },
10916
+ "workspaceID": {
10917
+ "type": "string",
10918
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10919
+ },
10920
+ "test": { "type": "boolean" },
10921
+ "subject": {
10922
+ "type": "object",
10923
+ "properties": {
10924
+ "kind": { "const": "extension" },
10925
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" }
10926
+ },
10927
+ "required": ["kind", "id"],
10928
+ "additionalProperties": false
10929
+ },
10930
+ "type": { "const": "extension.configured" },
10931
+ "data": {
10932
+ "type": "object",
10933
+ "properties": {
10934
+ "version": { "type": "string", "minLength": 1, "maxLength": 64 },
10935
+ "changedFields": {
10936
+ "type": "array",
10937
+ "maxItems": 100,
10938
+ "items": { "type": "string", "maxLength": 64 },
10939
+ "description": "Keys only, never values"
10940
+ }
10941
+ },
10942
+ "required": ["version", "changedFields"],
10943
+ "additionalProperties": false
10944
+ }
10945
+ },
10946
+ "required": [
10947
+ "id",
10948
+ "operationID",
10949
+ "schemaVersion",
10950
+ "occurredAt",
10951
+ "workspaceID",
10952
+ "test",
10953
+ "subject",
10954
+ "type",
10955
+ "data"
10956
+ ],
10957
+ "additionalProperties": false
10958
+ },
10959
+ {
10960
+ "type": "object",
10961
+ "properties": {
10962
+ "id": { "type": "string", "pattern": "^whevt_[A-Za-z\\d]{1,22}$" },
10963
+ "operationID": {
10964
+ "type": "string",
10965
+ "pattern": "^whop_[A-Za-z\\d]{1,22}$"
10966
+ },
10967
+ "schemaVersion": { "const": 1 },
10968
+ "occurredAt": { "type": "string", "format": "date-time" },
10969
+ "workspaceID": {
10970
+ "type": "string",
10971
+ "pattern": "^ws_[A-Za-z\\d]{1,22}$"
10972
+ },
10973
+ "test": { "type": "boolean" },
10974
+ "subject": {
10975
+ "type": "object",
10976
+ "properties": {
10977
+ "kind": { "const": "extension" },
10978
+ "id": { "type": "string", "pattern": "^ext_[A-Za-z\\d]{1,22}$" }
10979
+ },
10980
+ "required": ["kind", "id"],
10981
+ "additionalProperties": false
10982
+ },
10983
+ "type": { "const": "extension.uninstalled" },
10984
+ "data": {
10985
+ "type": "object",
10986
+ "properties": {
10987
+ "version": { "type": "string", "minLength": 1, "maxLength": 64 }
10988
+ },
10989
+ "required": ["version"],
10990
+ "additionalProperties": false
10991
+ }
10992
+ },
10993
+ "required": [
10994
+ "id",
10995
+ "operationID",
10996
+ "schemaVersion",
10997
+ "occurredAt",
10998
+ "workspaceID",
10999
+ "test",
11000
+ "subject",
11001
+ "type",
11002
+ "data"
11003
+ ],
11004
+ "additionalProperties": false
11005
+ }
11006
+ ],
11007
+ "description": "The event as the extension's webhook receives it"
11008
+ }
11009
+ },
11010
+ "required": ["deliveryID", "event"]
11011
+ }
11012
+ }
11013
+ }
11014
+ },
11015
+ "400": {
11016
+ "description": "400",
11017
+ "content": {
11018
+ "application/json": {
11019
+ "schema": {
11020
+ "oneOf": [
11021
+ {
11022
+ "type": "object",
11023
+ "properties": {
11024
+ "defined": { "const": true },
11025
+ "code": { "const": "BAD_REQUEST" },
11026
+ "status": { "const": 400 },
11027
+ "message": { "type": "string", "default": "Bad Request" },
11028
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
11029
+ },
11030
+ "required": ["defined", "code", "status", "message"]
11031
+ },
11032
+ {
11033
+ "type": "object",
11034
+ "properties": {
11035
+ "defined": { "const": false },
11036
+ "code": { "type": "string" },
11037
+ "status": { "type": "number" },
11038
+ "message": { "type": "string" },
11039
+ "data": {}
11040
+ },
11041
+ "required": ["defined", "code", "status", "message"]
11042
+ }
11043
+ ]
11044
+ }
11045
+ }
11046
+ }
11047
+ },
11048
+ "401": {
11049
+ "description": "401",
11050
+ "content": {
11051
+ "application/json": {
11052
+ "schema": {
11053
+ "oneOf": [
11054
+ {
11055
+ "type": "object",
11056
+ "properties": {
11057
+ "defined": { "const": true },
11058
+ "code": { "const": "UNAUTHORIZED" },
11059
+ "status": { "const": 401 },
11060
+ "message": { "type": "string", "default": "Unauthorized" },
11061
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11062
+ },
11063
+ "required": ["defined", "code", "status", "message"]
11064
+ },
11065
+ {
11066
+ "type": "object",
11067
+ "properties": {
11068
+ "defined": { "const": false },
11069
+ "code": { "type": "string" },
11070
+ "status": { "type": "number" },
11071
+ "message": { "type": "string" },
11072
+ "data": {}
11073
+ },
11074
+ "required": ["defined", "code", "status", "message"]
11075
+ }
11076
+ ]
11077
+ }
11078
+ }
11079
+ }
11080
+ },
11081
+ "403": {
11082
+ "description": "403",
11083
+ "content": {
11084
+ "application/json": {
11085
+ "schema": {
11086
+ "oneOf": [
11087
+ {
11088
+ "type": "object",
11089
+ "properties": {
11090
+ "defined": { "const": true },
11091
+ "code": { "const": "FORBIDDEN" },
11092
+ "status": { "const": 403 },
11093
+ "message": { "type": "string", "default": "Forbidden" },
11094
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
11095
+ },
11096
+ "required": ["defined", "code", "status", "message"]
11097
+ },
11098
+ {
11099
+ "type": "object",
11100
+ "properties": {
11101
+ "defined": { "const": false },
11102
+ "code": { "type": "string" },
11103
+ "status": { "type": "number" },
11104
+ "message": { "type": "string" },
11105
+ "data": {}
11106
+ },
11107
+ "required": ["defined", "code", "status", "message"]
11108
+ }
11109
+ ]
11110
+ }
11111
+ }
11112
+ }
11113
+ },
11114
+ "404": {
11115
+ "description": "404",
11116
+ "content": {
11117
+ "application/json": {
11118
+ "schema": {
11119
+ "oneOf": [
11120
+ {
11121
+ "type": "object",
11122
+ "properties": {
11123
+ "defined": { "const": true },
11124
+ "code": { "const": "NOT_FOUND" },
11125
+ "status": { "const": 404 },
11126
+ "message": { "type": "string", "default": "Not Found" },
11127
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11128
+ },
11129
+ "required": ["defined", "code", "status", "message"]
11130
+ },
11131
+ {
11132
+ "type": "object",
11133
+ "properties": {
11134
+ "defined": { "const": false },
11135
+ "code": { "type": "string" },
11136
+ "status": { "type": "number" },
11137
+ "message": { "type": "string" },
11138
+ "data": {}
11139
+ },
11140
+ "required": ["defined", "code", "status", "message"]
11141
+ }
11142
+ ]
11143
+ }
11144
+ }
11145
+ }
11146
+ },
11147
+ "409": {
11148
+ "description": "409",
11149
+ "content": {
11150
+ "application/json": {
11151
+ "schema": {
11152
+ "oneOf": [
11153
+ {
11154
+ "type": "object",
11155
+ "properties": {
11156
+ "defined": { "const": true },
11157
+ "code": { "const": "CONFLICT" },
11158
+ "status": { "const": 409 },
11159
+ "message": { "type": "string", "default": "Conflict" },
11160
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11161
+ },
11162
+ "required": ["defined", "code", "status", "message"]
11163
+ },
11164
+ {
11165
+ "type": "object",
11166
+ "properties": {
11167
+ "defined": { "const": false },
11168
+ "code": { "type": "string" },
11169
+ "status": { "type": "number" },
11170
+ "message": { "type": "string" },
11171
+ "data": {}
11172
+ },
11173
+ "required": ["defined", "code", "status", "message"]
11174
+ }
11175
+ ]
11176
+ }
11177
+ }
11178
+ }
11179
+ },
11180
+ "429": {
11181
+ "description": "429",
11182
+ "content": {
11183
+ "application/json": {
11184
+ "schema": {
11185
+ "oneOf": [
11186
+ {
11187
+ "type": "object",
11188
+ "properties": {
11189
+ "defined": { "const": true },
11190
+ "code": { "const": "TOO_MANY_REQUESTS" },
11191
+ "status": { "const": 429 },
11192
+ "message": { "type": "string", "default": "Too Many Requests" },
11193
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
11194
+ },
11195
+ "required": ["defined", "code", "status", "message"]
11196
+ },
11197
+ {
11198
+ "type": "object",
11199
+ "properties": {
11200
+ "defined": { "const": false },
11201
+ "code": { "type": "string" },
11202
+ "status": { "type": "number" },
11203
+ "message": { "type": "string" },
11204
+ "data": {}
11205
+ },
11206
+ "required": ["defined", "code", "status", "message"]
11207
+ }
11208
+ ]
11209
+ }
11210
+ }
11211
+ }
11212
+ },
11213
+ "500": {
11214
+ "description": "500",
11215
+ "content": {
11216
+ "application/json": {
11217
+ "schema": {
11218
+ "oneOf": [
11219
+ {
11220
+ "type": "object",
11221
+ "properties": {
11222
+ "defined": { "const": true },
11223
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
11224
+ "status": { "const": 500 },
11225
+ "message": { "type": "string", "default": "Internal Server Error" },
11226
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11227
+ },
11228
+ "required": ["defined", "code", "status", "message"]
11229
+ },
11230
+ {
11231
+ "type": "object",
11232
+ "properties": {
11233
+ "defined": { "const": false },
11234
+ "code": { "type": "string" },
11235
+ "status": { "type": "number" },
11236
+ "message": { "type": "string" },
11237
+ "data": {}
11238
+ },
11239
+ "required": ["defined", "code", "status", "message"]
11240
+ }
11241
+ ]
11242
+ }
11243
+ }
11244
+ }
11245
+ },
11246
+ "503": {
11247
+ "description": "503",
11248
+ "content": {
11249
+ "application/json": {
11250
+ "schema": {
11251
+ "oneOf": [
11252
+ {
11253
+ "type": "object",
11254
+ "properties": {
11255
+ "defined": { "const": true },
11256
+ "code": { "const": "SERVICE_UNAVAILABLE" },
11257
+ "status": { "const": 503 },
11258
+ "message": { "type": "string", "default": "Service Unavailable" },
11259
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11260
+ },
11261
+ "required": ["defined", "code", "status", "message"]
11262
+ },
11263
+ {
11264
+ "type": "object",
11265
+ "properties": {
11266
+ "defined": { "const": false },
11267
+ "code": { "type": "string" },
11268
+ "status": { "type": "number" },
11269
+ "message": { "type": "string" },
11270
+ "data": {}
11271
+ },
11272
+ "required": ["defined", "code", "status", "message"]
11273
+ }
11274
+ ]
11275
+ }
11276
+ }
11277
+ }
11278
+ }
11279
+ },
11280
+ "security": [{ "extensionToken": [] }]
11281
+ }
11282
+ },
11283
+ "/extensions/self/configuration": {
11284
+ "get": {
11285
+ "operationId": "extensions.getSelfConfiguration",
11286
+ "summary": "Get the configuration",
11287
+ "description": "Returns the extension's configuration, including secret fields, and its revision. Unset fields use their defaults.",
11288
+ "tags": ["extensions"],
11289
+ "responses": {
11290
+ "200": {
11291
+ "description": "OK",
11292
+ "content": {
11293
+ "application/json": {
11294
+ "schema": {
11295
+ "type": "object",
11296
+ "properties": {
11297
+ "values": {
11298
+ "type": "object",
11299
+ "propertyNames": { "type": "string" },
11300
+ "additionalProperties": {
11301
+ "anyOf": [
11302
+ { "type": "string" },
11303
+ { "type": "number" },
11304
+ { "type": "boolean" },
11305
+ { "type": "null" },
11306
+ {
11307
+ "type": "array",
11308
+ "items": {
11309
+ "anyOf": [
11310
+ { "type": "string" },
11311
+ { "type": "number" },
11312
+ { "type": "boolean" },
11313
+ { "type": "null" },
11314
+ { "type": "array", "items": { "anyOf": [{}, { "type": "null" }] } },
11315
+ {
11316
+ "type": "object",
11317
+ "propertyNames": { "type": "string" },
11318
+ "additionalProperties": {}
11319
+ }
11320
+ ]
11321
+ }
11322
+ },
11323
+ {
11324
+ "type": "object",
11325
+ "propertyNames": { "type": "string" },
11326
+ "additionalProperties": {
11327
+ "anyOf": [
11328
+ { "type": "string" },
11329
+ { "type": "number" },
11330
+ { "type": "boolean" },
11331
+ { "type": "null" },
11332
+ { "type": "array", "items": { "anyOf": [{}, { "type": "null" }] } },
11333
+ {
11334
+ "type": "object",
11335
+ "propertyNames": { "type": "string" },
11336
+ "additionalProperties": {}
11337
+ }
11338
+ ]
11339
+ }
11340
+ }
11341
+ ]
11342
+ },
11343
+ "description": "All values, including secret fields"
11344
+ },
11345
+ "revision": {
11346
+ "type": "integer",
11347
+ "minimum": -9007199254740991,
11348
+ "maximum": 9007199254740991,
11349
+ "exclusiveMinimum": 0
11350
+ }
11351
+ },
11352
+ "required": ["values", "revision"]
11353
+ }
11354
+ }
11355
+ }
11356
+ },
11357
+ "400": {
11358
+ "description": "400",
11359
+ "content": {
11360
+ "application/json": {
11361
+ "schema": {
11362
+ "oneOf": [
11363
+ {
11364
+ "type": "object",
11365
+ "properties": {
11366
+ "defined": { "const": true },
11367
+ "code": { "const": "BAD_REQUEST" },
11368
+ "status": { "const": 400 },
11369
+ "message": { "type": "string", "default": "Bad Request" },
11370
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
11371
+ },
11372
+ "required": ["defined", "code", "status", "message"]
11373
+ },
11374
+ {
11375
+ "type": "object",
11376
+ "properties": {
11377
+ "defined": { "const": false },
11378
+ "code": { "type": "string" },
11379
+ "status": { "type": "number" },
11380
+ "message": { "type": "string" },
11381
+ "data": {}
11382
+ },
11383
+ "required": ["defined", "code", "status", "message"]
11384
+ }
11385
+ ]
11386
+ }
11387
+ }
11388
+ }
11389
+ },
11390
+ "401": {
11391
+ "description": "401",
11392
+ "content": {
11393
+ "application/json": {
11394
+ "schema": {
11395
+ "oneOf": [
11396
+ {
11397
+ "type": "object",
11398
+ "properties": {
11399
+ "defined": { "const": true },
11400
+ "code": { "const": "UNAUTHORIZED" },
11401
+ "status": { "const": 401 },
11402
+ "message": { "type": "string", "default": "Unauthorized" },
11403
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11404
+ },
11405
+ "required": ["defined", "code", "status", "message"]
11406
+ },
11407
+ {
11408
+ "type": "object",
11409
+ "properties": {
11410
+ "defined": { "const": false },
11411
+ "code": { "type": "string" },
11412
+ "status": { "type": "number" },
11413
+ "message": { "type": "string" },
11414
+ "data": {}
11415
+ },
11416
+ "required": ["defined", "code", "status", "message"]
11417
+ }
11418
+ ]
11419
+ }
11420
+ }
11421
+ }
11422
+ },
11423
+ "403": {
11424
+ "description": "403",
11425
+ "content": {
11426
+ "application/json": {
11427
+ "schema": {
11428
+ "oneOf": [
11429
+ {
11430
+ "type": "object",
11431
+ "properties": {
11432
+ "defined": { "const": true },
11433
+ "code": { "const": "FORBIDDEN" },
11434
+ "status": { "const": 403 },
11435
+ "message": { "type": "string", "default": "Forbidden" },
11436
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
11437
+ },
11438
+ "required": ["defined", "code", "status", "message"]
11439
+ },
11440
+ {
11441
+ "type": "object",
11442
+ "properties": {
11443
+ "defined": { "const": false },
11444
+ "code": { "type": "string" },
11445
+ "status": { "type": "number" },
11446
+ "message": { "type": "string" },
11447
+ "data": {}
11448
+ },
11449
+ "required": ["defined", "code", "status", "message"]
11450
+ }
11451
+ ]
11452
+ }
11453
+ }
11454
+ }
11455
+ },
11456
+ "404": {
11457
+ "description": "404",
11458
+ "content": {
11459
+ "application/json": {
11460
+ "schema": {
11461
+ "oneOf": [
11462
+ {
11463
+ "type": "object",
11464
+ "properties": {
11465
+ "defined": { "const": true },
11466
+ "code": { "const": "NOT_FOUND" },
11467
+ "status": { "const": 404 },
11468
+ "message": { "type": "string", "default": "Not Found" },
11469
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11470
+ },
11471
+ "required": ["defined", "code", "status", "message"]
11472
+ },
11473
+ {
11474
+ "type": "object",
11475
+ "properties": {
11476
+ "defined": { "const": false },
11477
+ "code": { "type": "string" },
11478
+ "status": { "type": "number" },
11479
+ "message": { "type": "string" },
11480
+ "data": {}
11481
+ },
11482
+ "required": ["defined", "code", "status", "message"]
11483
+ }
11484
+ ]
11485
+ }
11486
+ }
11487
+ }
11488
+ },
11489
+ "409": {
11490
+ "description": "409",
11491
+ "content": {
11492
+ "application/json": {
11493
+ "schema": {
11494
+ "oneOf": [
11495
+ {
11496
+ "type": "object",
11497
+ "properties": {
11498
+ "defined": { "const": true },
11499
+ "code": { "const": "CONFLICT" },
11500
+ "status": { "const": 409 },
11501
+ "message": { "type": "string", "default": "Conflict" },
11502
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11503
+ },
11504
+ "required": ["defined", "code", "status", "message"]
11505
+ },
11506
+ {
11507
+ "type": "object",
11508
+ "properties": {
11509
+ "defined": { "const": false },
11510
+ "code": { "type": "string" },
11511
+ "status": { "type": "number" },
11512
+ "message": { "type": "string" },
11513
+ "data": {}
11514
+ },
11515
+ "required": ["defined", "code", "status", "message"]
11516
+ }
11517
+ ]
11518
+ }
11519
+ }
11520
+ }
11521
+ },
11522
+ "429": {
11523
+ "description": "429",
11524
+ "content": {
11525
+ "application/json": {
11526
+ "schema": {
11527
+ "oneOf": [
11528
+ {
11529
+ "type": "object",
11530
+ "properties": {
11531
+ "defined": { "const": true },
11532
+ "code": { "const": "TOO_MANY_REQUESTS" },
11533
+ "status": { "const": 429 },
11534
+ "message": { "type": "string", "default": "Too Many Requests" },
11535
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
11536
+ },
11537
+ "required": ["defined", "code", "status", "message"]
11538
+ },
11539
+ {
11540
+ "type": "object",
11541
+ "properties": {
11542
+ "defined": { "const": false },
11543
+ "code": { "type": "string" },
11544
+ "status": { "type": "number" },
11545
+ "message": { "type": "string" },
11546
+ "data": {}
11547
+ },
11548
+ "required": ["defined", "code", "status", "message"]
11549
+ }
11550
+ ]
11551
+ }
11552
+ }
11553
+ }
11554
+ },
11555
+ "500": {
11556
+ "description": "500",
11557
+ "content": {
11558
+ "application/json": {
11559
+ "schema": {
11560
+ "oneOf": [
11561
+ {
11562
+ "type": "object",
11563
+ "properties": {
11564
+ "defined": { "const": true },
11565
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
11566
+ "status": { "const": 500 },
11567
+ "message": { "type": "string", "default": "Internal Server Error" },
11568
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11569
+ },
11570
+ "required": ["defined", "code", "status", "message"]
11571
+ },
11572
+ {
11573
+ "type": "object",
11574
+ "properties": {
11575
+ "defined": { "const": false },
11576
+ "code": { "type": "string" },
11577
+ "status": { "type": "number" },
11578
+ "message": { "type": "string" },
11579
+ "data": {}
11580
+ },
11581
+ "required": ["defined", "code", "status", "message"]
11582
+ }
11583
+ ]
11584
+ }
11585
+ }
11586
+ }
11587
+ },
11588
+ "503": {
11589
+ "description": "503",
11590
+ "content": {
11591
+ "application/json": {
11592
+ "schema": {
11593
+ "oneOf": [
11594
+ {
11595
+ "type": "object",
11596
+ "properties": {
11597
+ "defined": { "const": true },
11598
+ "code": { "const": "SERVICE_UNAVAILABLE" },
11599
+ "status": { "const": 503 },
11600
+ "message": { "type": "string", "default": "Service Unavailable" },
11601
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11602
+ },
11603
+ "required": ["defined", "code", "status", "message"]
11604
+ },
11605
+ {
11606
+ "type": "object",
11607
+ "properties": {
11608
+ "defined": { "const": false },
11609
+ "code": { "type": "string" },
11610
+ "status": { "type": "number" },
11611
+ "message": { "type": "string" },
11612
+ "data": {}
11613
+ },
11614
+ "required": ["defined", "code", "status", "message"]
11615
+ }
11616
+ ]
11617
+ }
11618
+ }
11619
+ }
11620
+ }
11621
+ },
11622
+ "security": [{ "extensionToken": [] }]
11623
+ }
11624
+ },
11625
+ "/extensions/self/storage/entry": {
11626
+ "get": {
11627
+ "operationId": "extensions.getSelfStorageEntry",
11628
+ "summary": "Get a storage entry",
11629
+ "description": "Returns an entry of the extension's storage, or NOT_FOUND.",
11630
+ "tags": ["extensions"],
11631
+ "parameters": [
11632
+ {
11633
+ "name": "key",
11634
+ "in": "query",
11635
+ "required": true,
11636
+ "schema": {
11637
+ "type": "string",
11638
+ "minLength": 1,
11639
+ "maxLength": 256,
11640
+ "pattern": "^\\P{Cc}+$"
11641
+ },
11642
+ "allowEmptyValue": true,
11643
+ "allowReserved": true
11644
+ }
11645
+ ],
11646
+ "responses": {
11647
+ "200": {
11648
+ "description": "OK",
11649
+ "content": {
11650
+ "application/json": {
11651
+ "schema": {
11652
+ "type": "object",
11653
+ "properties": {
11654
+ "key": { "type": "string" },
11655
+ "value": {
11656
+ "anyOf": [
11657
+ { "type": "string" },
11658
+ { "type": "number" },
11659
+ { "type": "boolean" },
11660
+ { "type": "null" },
11661
+ {
11662
+ "type": "array",
11663
+ "items": {
11664
+ "anyOf": [
11665
+ { "type": "string" },
11666
+ { "type": "number" },
11667
+ { "type": "boolean" },
11668
+ { "type": "null" },
11669
+ { "type": "array", "items": { "anyOf": [{}, { "type": "null" }] } },
11670
+ {
11671
+ "type": "object",
11672
+ "propertyNames": { "type": "string" },
11673
+ "additionalProperties": {}
11674
+ }
11675
+ ]
11676
+ }
11677
+ },
11678
+ {
11679
+ "type": "object",
11680
+ "propertyNames": { "type": "string" },
11681
+ "additionalProperties": {
11682
+ "anyOf": [
11683
+ { "type": "string" },
11684
+ { "type": "number" },
11685
+ { "type": "boolean" },
11686
+ { "type": "null" },
11687
+ { "type": "array", "items": { "anyOf": [{}, { "type": "null" }] } },
11688
+ {
11689
+ "type": "object",
11690
+ "propertyNames": { "type": "string" },
11691
+ "additionalProperties": {}
11692
+ }
11693
+ ]
11694
+ }
11695
+ }
11696
+ ]
11697
+ },
11698
+ "updatedAt": { "type": "string", "format": "date-time" }
11699
+ },
11700
+ "required": ["key", "value", "updatedAt"]
11701
+ }
11702
+ }
11703
+ }
11704
+ },
11705
+ "400": {
11706
+ "description": "400",
11707
+ "content": {
11708
+ "application/json": {
11709
+ "schema": {
11710
+ "oneOf": [
11711
+ {
11712
+ "type": "object",
11713
+ "properties": {
11714
+ "defined": { "const": true },
11715
+ "code": { "const": "BAD_REQUEST" },
11716
+ "status": { "const": 400 },
11717
+ "message": { "type": "string", "default": "Bad Request" },
11718
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
11719
+ },
11720
+ "required": ["defined", "code", "status", "message"]
11721
+ },
11722
+ {
11723
+ "type": "object",
11724
+ "properties": {
11725
+ "defined": { "const": false },
11726
+ "code": { "type": "string" },
11727
+ "status": { "type": "number" },
11728
+ "message": { "type": "string" },
11729
+ "data": {}
11730
+ },
11731
+ "required": ["defined", "code", "status", "message"]
11732
+ }
11733
+ ]
11734
+ }
11735
+ }
11736
+ }
11737
+ },
11738
+ "401": {
11739
+ "description": "401",
11740
+ "content": {
11741
+ "application/json": {
11742
+ "schema": {
11743
+ "oneOf": [
11744
+ {
11745
+ "type": "object",
11746
+ "properties": {
11747
+ "defined": { "const": true },
11748
+ "code": { "const": "UNAUTHORIZED" },
11749
+ "status": { "const": 401 },
11750
+ "message": { "type": "string", "default": "Unauthorized" },
11751
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11752
+ },
11753
+ "required": ["defined", "code", "status", "message"]
11754
+ },
11755
+ {
11756
+ "type": "object",
11757
+ "properties": {
11758
+ "defined": { "const": false },
11759
+ "code": { "type": "string" },
11760
+ "status": { "type": "number" },
11761
+ "message": { "type": "string" },
11762
+ "data": {}
11763
+ },
11764
+ "required": ["defined", "code", "status", "message"]
11765
+ }
11766
+ ]
11767
+ }
11768
+ }
11769
+ }
11770
+ },
11771
+ "403": {
11772
+ "description": "403",
11773
+ "content": {
11774
+ "application/json": {
11775
+ "schema": {
11776
+ "oneOf": [
11777
+ {
11778
+ "type": "object",
11779
+ "properties": {
11780
+ "defined": { "const": true },
11781
+ "code": { "const": "FORBIDDEN" },
11782
+ "status": { "const": 403 },
11783
+ "message": { "type": "string", "default": "Forbidden" },
11784
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
11785
+ },
11786
+ "required": ["defined", "code", "status", "message"]
11787
+ },
11788
+ {
11789
+ "type": "object",
11790
+ "properties": {
11791
+ "defined": { "const": false },
11792
+ "code": { "type": "string" },
11793
+ "status": { "type": "number" },
11794
+ "message": { "type": "string" },
11795
+ "data": {}
11796
+ },
11797
+ "required": ["defined", "code", "status", "message"]
11798
+ }
11799
+ ]
11800
+ }
11801
+ }
11802
+ }
11803
+ },
11804
+ "404": {
11805
+ "description": "404",
11806
+ "content": {
11807
+ "application/json": {
11808
+ "schema": {
11809
+ "oneOf": [
11810
+ {
11811
+ "type": "object",
11812
+ "properties": {
11813
+ "defined": { "const": true },
11814
+ "code": { "const": "NOT_FOUND" },
11815
+ "status": { "const": 404 },
11816
+ "message": { "type": "string", "default": "Not Found" },
11817
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11818
+ },
11819
+ "required": ["defined", "code", "status", "message"]
11820
+ },
11821
+ {
11822
+ "type": "object",
11823
+ "properties": {
11824
+ "defined": { "const": false },
11825
+ "code": { "type": "string" },
11826
+ "status": { "type": "number" },
11827
+ "message": { "type": "string" },
11828
+ "data": {}
11829
+ },
11830
+ "required": ["defined", "code", "status", "message"]
11831
+ }
11832
+ ]
11833
+ }
11834
+ }
11835
+ }
11836
+ },
11837
+ "409": {
11838
+ "description": "409",
11839
+ "content": {
11840
+ "application/json": {
11841
+ "schema": {
11842
+ "oneOf": [
11843
+ {
11844
+ "type": "object",
11845
+ "properties": {
11846
+ "defined": { "const": true },
11847
+ "code": { "const": "CONFLICT" },
11848
+ "status": { "const": 409 },
11849
+ "message": { "type": "string", "default": "Conflict" },
11850
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11851
+ },
11852
+ "required": ["defined", "code", "status", "message"]
11853
+ },
11854
+ {
11855
+ "type": "object",
11856
+ "properties": {
11857
+ "defined": { "const": false },
11858
+ "code": { "type": "string" },
11859
+ "status": { "type": "number" },
11860
+ "message": { "type": "string" },
11861
+ "data": {}
11862
+ },
11863
+ "required": ["defined", "code", "status", "message"]
11864
+ }
11865
+ ]
11866
+ }
11867
+ }
11868
+ }
11869
+ },
11870
+ "429": {
11871
+ "description": "429",
11872
+ "content": {
11873
+ "application/json": {
11874
+ "schema": {
11875
+ "oneOf": [
11876
+ {
11877
+ "type": "object",
11878
+ "properties": {
11879
+ "defined": { "const": true },
11880
+ "code": { "const": "TOO_MANY_REQUESTS" },
11881
+ "status": { "const": 429 },
11882
+ "message": { "type": "string", "default": "Too Many Requests" },
11883
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
11884
+ },
11885
+ "required": ["defined", "code", "status", "message"]
11886
+ },
11887
+ {
11888
+ "type": "object",
11889
+ "properties": {
11890
+ "defined": { "const": false },
11891
+ "code": { "type": "string" },
11892
+ "status": { "type": "number" },
11893
+ "message": { "type": "string" },
11894
+ "data": {}
11895
+ },
11896
+ "required": ["defined", "code", "status", "message"]
11897
+ }
11898
+ ]
11899
+ }
11900
+ }
11901
+ }
11902
+ },
11903
+ "500": {
11904
+ "description": "500",
11905
+ "content": {
11906
+ "application/json": {
11907
+ "schema": {
11908
+ "oneOf": [
11909
+ {
11910
+ "type": "object",
11911
+ "properties": {
11912
+ "defined": { "const": true },
11913
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
11914
+ "status": { "const": 500 },
11915
+ "message": { "type": "string", "default": "Internal Server Error" },
11916
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11917
+ },
11918
+ "required": ["defined", "code", "status", "message"]
11919
+ },
11920
+ {
11921
+ "type": "object",
11922
+ "properties": {
11923
+ "defined": { "const": false },
11924
+ "code": { "type": "string" },
11925
+ "status": { "type": "number" },
11926
+ "message": { "type": "string" },
11927
+ "data": {}
11928
+ },
11929
+ "required": ["defined", "code", "status", "message"]
11930
+ }
11931
+ ]
11932
+ }
11933
+ }
11934
+ }
11935
+ },
11936
+ "503": {
11937
+ "description": "503",
11938
+ "content": {
11939
+ "application/json": {
11940
+ "schema": {
11941
+ "oneOf": [
11942
+ {
11943
+ "type": "object",
11944
+ "properties": {
11945
+ "defined": { "const": true },
11946
+ "code": { "const": "SERVICE_UNAVAILABLE" },
11947
+ "status": { "const": 503 },
11948
+ "message": { "type": "string", "default": "Service Unavailable" },
11949
+ "data": { "$ref": "#/components/schemas/ErrorData" }
11950
+ },
11951
+ "required": ["defined", "code", "status", "message"]
11952
+ },
11953
+ {
11954
+ "type": "object",
11955
+ "properties": {
11956
+ "defined": { "const": false },
11957
+ "code": { "type": "string" },
11958
+ "status": { "type": "number" },
11959
+ "message": { "type": "string" },
11960
+ "data": {}
11961
+ },
11962
+ "required": ["defined", "code", "status", "message"]
11963
+ }
11964
+ ]
11965
+ }
11966
+ }
11967
+ }
11968
+ }
11969
+ },
11970
+ "security": [{ "extensionToken": [] }]
11971
+ },
11972
+ "put": {
11973
+ "operationId": "extensions.setSelfStorageEntry",
11974
+ "summary": "Set a storage entry",
11975
+ "description": "Creates or replaces an entry of the extension's storage. Values are JSON up to 128 KiB; the storage holds up to 10,000 entries and 10 MiB.",
11976
+ "tags": ["extensions"],
11977
+ "requestBody": {
11978
+ "required": true,
11979
+ "content": {
11980
+ "application/json": {
11981
+ "schema": {
11982
+ "type": "object",
11983
+ "properties": {
11984
+ "key": {
11985
+ "type": "string",
11986
+ "minLength": 1,
11987
+ "maxLength": 256,
11988
+ "pattern": "^\\P{Cc}+$"
11989
+ },
11990
+ "value": {
11991
+ "anyOf": [
11992
+ { "type": "string" },
11993
+ { "type": "number" },
11994
+ { "type": "boolean" },
11995
+ { "type": "null" },
11996
+ {
11997
+ "type": "array",
11998
+ "items": {
11999
+ "anyOf": [
12000
+ { "type": "string" },
12001
+ { "type": "number" },
12002
+ { "type": "boolean" },
12003
+ { "type": "null" },
12004
+ { "type": "array", "items": {} },
12005
+ {
12006
+ "type": "object",
12007
+ "propertyNames": { "type": "string" },
12008
+ "additionalProperties": {}
12009
+ }
12010
+ ]
12011
+ }
12012
+ },
12013
+ {
12014
+ "type": "object",
12015
+ "propertyNames": { "type": "string" },
12016
+ "additionalProperties": {
12017
+ "anyOf": [
12018
+ { "type": "string" },
12019
+ { "type": "number" },
12020
+ { "type": "boolean" },
12021
+ { "type": "null" },
12022
+ { "type": "array", "items": {} },
12023
+ {
12024
+ "type": "object",
12025
+ "propertyNames": { "type": "string" },
12026
+ "additionalProperties": {}
12027
+ }
12028
+ ]
12029
+ }
12030
+ }
12031
+ ]
12032
+ }
12033
+ },
12034
+ "required": ["key", "value"]
12035
+ }
12036
+ }
12037
+ }
12038
+ },
12039
+ "responses": {
12040
+ "200": {
12041
+ "description": "OK",
12042
+ "content": {
12043
+ "application/json": {
12044
+ "schema": {
12045
+ "type": "object",
12046
+ "properties": {
12047
+ "key": { "type": "string" },
12048
+ "updatedAt": { "type": "string", "format": "date-time" }
12049
+ },
12050
+ "required": ["key", "updatedAt"]
12051
+ }
12052
+ }
12053
+ }
12054
+ },
12055
+ "400": {
12056
+ "description": "400",
12057
+ "content": {
12058
+ "application/json": {
12059
+ "schema": {
12060
+ "oneOf": [
12061
+ {
12062
+ "type": "object",
12063
+ "properties": {
12064
+ "defined": { "const": true },
12065
+ "code": { "const": "BAD_REQUEST" },
12066
+ "status": { "const": 400 },
12067
+ "message": { "type": "string", "default": "Bad Request" },
12068
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
12069
+ },
12070
+ "required": ["defined", "code", "status", "message"]
12071
+ },
12072
+ {
12073
+ "type": "object",
12074
+ "properties": {
12075
+ "defined": { "const": false },
12076
+ "code": { "type": "string" },
12077
+ "status": { "type": "number" },
12078
+ "message": { "type": "string" },
12079
+ "data": {}
12080
+ },
12081
+ "required": ["defined", "code", "status", "message"]
12082
+ }
12083
+ ]
12084
+ }
12085
+ }
12086
+ }
12087
+ },
12088
+ "401": {
12089
+ "description": "401",
12090
+ "content": {
12091
+ "application/json": {
12092
+ "schema": {
12093
+ "oneOf": [
12094
+ {
12095
+ "type": "object",
12096
+ "properties": {
12097
+ "defined": { "const": true },
12098
+ "code": { "const": "UNAUTHORIZED" },
12099
+ "status": { "const": 401 },
12100
+ "message": { "type": "string", "default": "Unauthorized" },
12101
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12102
+ },
12103
+ "required": ["defined", "code", "status", "message"]
12104
+ },
12105
+ {
12106
+ "type": "object",
12107
+ "properties": {
12108
+ "defined": { "const": false },
12109
+ "code": { "type": "string" },
12110
+ "status": { "type": "number" },
12111
+ "message": { "type": "string" },
12112
+ "data": {}
12113
+ },
12114
+ "required": ["defined", "code", "status", "message"]
12115
+ }
12116
+ ]
12117
+ }
12118
+ }
12119
+ }
12120
+ },
12121
+ "403": {
12122
+ "description": "403",
12123
+ "content": {
12124
+ "application/json": {
12125
+ "schema": {
12126
+ "oneOf": [
12127
+ {
12128
+ "type": "object",
12129
+ "properties": {
12130
+ "defined": { "const": true },
12131
+ "code": { "const": "FORBIDDEN" },
12132
+ "status": { "const": 403 },
12133
+ "message": { "type": "string", "default": "Forbidden" },
12134
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
12135
+ },
12136
+ "required": ["defined", "code", "status", "message"]
12137
+ },
12138
+ {
12139
+ "type": "object",
12140
+ "properties": {
12141
+ "defined": { "const": false },
12142
+ "code": { "type": "string" },
12143
+ "status": { "type": "number" },
12144
+ "message": { "type": "string" },
12145
+ "data": {}
12146
+ },
12147
+ "required": ["defined", "code", "status", "message"]
12148
+ }
12149
+ ]
12150
+ }
12151
+ }
12152
+ }
12153
+ },
12154
+ "404": {
12155
+ "description": "404",
12156
+ "content": {
12157
+ "application/json": {
12158
+ "schema": {
12159
+ "oneOf": [
12160
+ {
12161
+ "type": "object",
12162
+ "properties": {
12163
+ "defined": { "const": true },
12164
+ "code": { "const": "NOT_FOUND" },
12165
+ "status": { "const": 404 },
12166
+ "message": { "type": "string", "default": "Not Found" },
12167
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12168
+ },
12169
+ "required": ["defined", "code", "status", "message"]
12170
+ },
12171
+ {
12172
+ "type": "object",
12173
+ "properties": {
12174
+ "defined": { "const": false },
12175
+ "code": { "type": "string" },
12176
+ "status": { "type": "number" },
12177
+ "message": { "type": "string" },
12178
+ "data": {}
12179
+ },
12180
+ "required": ["defined", "code", "status", "message"]
12181
+ }
12182
+ ]
12183
+ }
12184
+ }
12185
+ }
12186
+ },
12187
+ "409": {
12188
+ "description": "409",
12189
+ "content": {
12190
+ "application/json": {
12191
+ "schema": {
12192
+ "oneOf": [
12193
+ {
12194
+ "type": "object",
12195
+ "properties": {
12196
+ "defined": { "const": true },
12197
+ "code": { "const": "CONFLICT" },
12198
+ "status": { "const": 409 },
12199
+ "message": { "type": "string", "default": "Conflict" },
12200
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12201
+ },
12202
+ "required": ["defined", "code", "status", "message"]
12203
+ },
12204
+ {
12205
+ "type": "object",
12206
+ "properties": {
12207
+ "defined": { "const": false },
12208
+ "code": { "type": "string" },
12209
+ "status": { "type": "number" },
12210
+ "message": { "type": "string" },
12211
+ "data": {}
12212
+ },
12213
+ "required": ["defined", "code", "status", "message"]
12214
+ }
12215
+ ]
12216
+ }
12217
+ }
12218
+ }
12219
+ },
12220
+ "429": {
12221
+ "description": "429",
12222
+ "content": {
12223
+ "application/json": {
12224
+ "schema": {
12225
+ "oneOf": [
12226
+ {
12227
+ "type": "object",
12228
+ "properties": {
12229
+ "defined": { "const": true },
12230
+ "code": { "const": "TOO_MANY_REQUESTS" },
12231
+ "status": { "const": 429 },
12232
+ "message": { "type": "string", "default": "Too Many Requests" },
12233
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
12234
+ },
12235
+ "required": ["defined", "code", "status", "message"]
12236
+ },
12237
+ {
12238
+ "type": "object",
12239
+ "properties": {
12240
+ "defined": { "const": false },
12241
+ "code": { "type": "string" },
12242
+ "status": { "type": "number" },
12243
+ "message": { "type": "string" },
12244
+ "data": {}
12245
+ },
12246
+ "required": ["defined", "code", "status", "message"]
12247
+ }
12248
+ ]
12249
+ }
12250
+ }
12251
+ }
12252
+ },
12253
+ "500": {
12254
+ "description": "500",
12255
+ "content": {
12256
+ "application/json": {
12257
+ "schema": {
12258
+ "oneOf": [
12259
+ {
12260
+ "type": "object",
12261
+ "properties": {
12262
+ "defined": { "const": true },
12263
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
12264
+ "status": { "const": 500 },
12265
+ "message": { "type": "string", "default": "Internal Server Error" },
12266
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12267
+ },
12268
+ "required": ["defined", "code", "status", "message"]
12269
+ },
12270
+ {
12271
+ "type": "object",
12272
+ "properties": {
12273
+ "defined": { "const": false },
12274
+ "code": { "type": "string" },
12275
+ "status": { "type": "number" },
12276
+ "message": { "type": "string" },
12277
+ "data": {}
12278
+ },
12279
+ "required": ["defined", "code", "status", "message"]
12280
+ }
12281
+ ]
12282
+ }
12283
+ }
12284
+ }
12285
+ },
12286
+ "503": {
12287
+ "description": "503",
12288
+ "content": {
12289
+ "application/json": {
12290
+ "schema": {
12291
+ "oneOf": [
12292
+ {
12293
+ "type": "object",
12294
+ "properties": {
12295
+ "defined": { "const": true },
12296
+ "code": { "const": "SERVICE_UNAVAILABLE" },
12297
+ "status": { "const": 503 },
12298
+ "message": { "type": "string", "default": "Service Unavailable" },
12299
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12300
+ },
12301
+ "required": ["defined", "code", "status", "message"]
12302
+ },
12303
+ {
12304
+ "type": "object",
12305
+ "properties": {
12306
+ "defined": { "const": false },
12307
+ "code": { "type": "string" },
12308
+ "status": { "type": "number" },
12309
+ "message": { "type": "string" },
12310
+ "data": {}
12311
+ },
12312
+ "required": ["defined", "code", "status", "message"]
12313
+ }
12314
+ ]
12315
+ }
12316
+ }
12317
+ }
12318
+ }
12319
+ },
12320
+ "security": [{ "extensionToken": [] }]
12321
+ },
12322
+ "delete": {
12323
+ "operationId": "extensions.deleteSelfStorageEntry",
12324
+ "summary": "Delete a storage entry",
12325
+ "description": "Deletes an entry of the extension's storage, if it exists.",
12326
+ "tags": ["extensions"],
12327
+ "parameters": [
12328
+ {
12329
+ "name": "key",
12330
+ "in": "query",
12331
+ "required": true,
12332
+ "schema": {
12333
+ "type": "string",
12334
+ "minLength": 1,
12335
+ "maxLength": 256,
12336
+ "pattern": "^\\P{Cc}+$"
12337
+ },
12338
+ "allowEmptyValue": true,
12339
+ "allowReserved": true
12340
+ }
12341
+ ],
12342
+ "responses": {
12343
+ "200": {
12344
+ "description": "OK",
12345
+ "content": {
12346
+ "application/json": {
12347
+ "schema": {
12348
+ "type": "object",
12349
+ "properties": { "deleted": { "type": "boolean" } },
12350
+ "required": ["deleted"]
12351
+ }
12352
+ }
12353
+ }
12354
+ },
12355
+ "400": {
12356
+ "description": "400",
12357
+ "content": {
12358
+ "application/json": {
12359
+ "schema": {
12360
+ "oneOf": [
12361
+ {
12362
+ "type": "object",
12363
+ "properties": {
12364
+ "defined": { "const": true },
12365
+ "code": { "const": "BAD_REQUEST" },
12366
+ "status": { "const": 400 },
12367
+ "message": { "type": "string", "default": "Bad Request" },
12368
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
12369
+ },
12370
+ "required": ["defined", "code", "status", "message"]
12371
+ },
12372
+ {
12373
+ "type": "object",
12374
+ "properties": {
12375
+ "defined": { "const": false },
12376
+ "code": { "type": "string" },
12377
+ "status": { "type": "number" },
12378
+ "message": { "type": "string" },
12379
+ "data": {}
12380
+ },
12381
+ "required": ["defined", "code", "status", "message"]
12382
+ }
12383
+ ]
12384
+ }
12385
+ }
12386
+ }
12387
+ },
12388
+ "401": {
12389
+ "description": "401",
12390
+ "content": {
12391
+ "application/json": {
12392
+ "schema": {
12393
+ "oneOf": [
12394
+ {
12395
+ "type": "object",
12396
+ "properties": {
12397
+ "defined": { "const": true },
12398
+ "code": { "const": "UNAUTHORIZED" },
12399
+ "status": { "const": 401 },
12400
+ "message": { "type": "string", "default": "Unauthorized" },
12401
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12402
+ },
12403
+ "required": ["defined", "code", "status", "message"]
12404
+ },
12405
+ {
12406
+ "type": "object",
12407
+ "properties": {
12408
+ "defined": { "const": false },
12409
+ "code": { "type": "string" },
12410
+ "status": { "type": "number" },
12411
+ "message": { "type": "string" },
12412
+ "data": {}
12413
+ },
12414
+ "required": ["defined", "code", "status", "message"]
12415
+ }
12416
+ ]
12417
+ }
12418
+ }
12419
+ }
12420
+ },
12421
+ "403": {
12422
+ "description": "403",
12423
+ "content": {
12424
+ "application/json": {
12425
+ "schema": {
12426
+ "oneOf": [
12427
+ {
12428
+ "type": "object",
12429
+ "properties": {
12430
+ "defined": { "const": true },
12431
+ "code": { "const": "FORBIDDEN" },
12432
+ "status": { "const": 403 },
12433
+ "message": { "type": "string", "default": "Forbidden" },
12434
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
12435
+ },
12436
+ "required": ["defined", "code", "status", "message"]
12437
+ },
12438
+ {
12439
+ "type": "object",
12440
+ "properties": {
12441
+ "defined": { "const": false },
12442
+ "code": { "type": "string" },
12443
+ "status": { "type": "number" },
12444
+ "message": { "type": "string" },
12445
+ "data": {}
12446
+ },
12447
+ "required": ["defined", "code", "status", "message"]
12448
+ }
12449
+ ]
12450
+ }
12451
+ }
12452
+ }
12453
+ },
12454
+ "404": {
12455
+ "description": "404",
12456
+ "content": {
12457
+ "application/json": {
12458
+ "schema": {
12459
+ "oneOf": [
12460
+ {
12461
+ "type": "object",
12462
+ "properties": {
12463
+ "defined": { "const": true },
12464
+ "code": { "const": "NOT_FOUND" },
12465
+ "status": { "const": 404 },
12466
+ "message": { "type": "string", "default": "Not Found" },
12467
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12468
+ },
12469
+ "required": ["defined", "code", "status", "message"]
12470
+ },
12471
+ {
12472
+ "type": "object",
12473
+ "properties": {
12474
+ "defined": { "const": false },
12475
+ "code": { "type": "string" },
12476
+ "status": { "type": "number" },
12477
+ "message": { "type": "string" },
12478
+ "data": {}
12479
+ },
12480
+ "required": ["defined", "code", "status", "message"]
12481
+ }
12482
+ ]
12483
+ }
12484
+ }
12485
+ }
12486
+ },
12487
+ "409": {
12488
+ "description": "409",
12489
+ "content": {
12490
+ "application/json": {
12491
+ "schema": {
12492
+ "oneOf": [
12493
+ {
12494
+ "type": "object",
12495
+ "properties": {
12496
+ "defined": { "const": true },
12497
+ "code": { "const": "CONFLICT" },
12498
+ "status": { "const": 409 },
12499
+ "message": { "type": "string", "default": "Conflict" },
12500
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12501
+ },
12502
+ "required": ["defined", "code", "status", "message"]
12503
+ },
12504
+ {
12505
+ "type": "object",
12506
+ "properties": {
12507
+ "defined": { "const": false },
12508
+ "code": { "type": "string" },
12509
+ "status": { "type": "number" },
12510
+ "message": { "type": "string" },
12511
+ "data": {}
12512
+ },
12513
+ "required": ["defined", "code", "status", "message"]
12514
+ }
12515
+ ]
12516
+ }
12517
+ }
12518
+ }
12519
+ },
12520
+ "429": {
12521
+ "description": "429",
12522
+ "content": {
12523
+ "application/json": {
12524
+ "schema": {
12525
+ "oneOf": [
12526
+ {
12527
+ "type": "object",
12528
+ "properties": {
12529
+ "defined": { "const": true },
12530
+ "code": { "const": "TOO_MANY_REQUESTS" },
12531
+ "status": { "const": 429 },
12532
+ "message": { "type": "string", "default": "Too Many Requests" },
12533
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
12534
+ },
12535
+ "required": ["defined", "code", "status", "message"]
12536
+ },
12537
+ {
12538
+ "type": "object",
12539
+ "properties": {
12540
+ "defined": { "const": false },
12541
+ "code": { "type": "string" },
12542
+ "status": { "type": "number" },
12543
+ "message": { "type": "string" },
12544
+ "data": {}
12545
+ },
12546
+ "required": ["defined", "code", "status", "message"]
12547
+ }
12548
+ ]
12549
+ }
12550
+ }
12551
+ }
12552
+ },
12553
+ "500": {
12554
+ "description": "500",
12555
+ "content": {
12556
+ "application/json": {
12557
+ "schema": {
12558
+ "oneOf": [
12559
+ {
12560
+ "type": "object",
12561
+ "properties": {
12562
+ "defined": { "const": true },
12563
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
12564
+ "status": { "const": 500 },
12565
+ "message": { "type": "string", "default": "Internal Server Error" },
12566
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12567
+ },
12568
+ "required": ["defined", "code", "status", "message"]
12569
+ },
12570
+ {
12571
+ "type": "object",
12572
+ "properties": {
12573
+ "defined": { "const": false },
12574
+ "code": { "type": "string" },
12575
+ "status": { "type": "number" },
12576
+ "message": { "type": "string" },
12577
+ "data": {}
12578
+ },
12579
+ "required": ["defined", "code", "status", "message"]
12580
+ }
12581
+ ]
12582
+ }
12583
+ }
12584
+ }
12585
+ },
12586
+ "503": {
12587
+ "description": "503",
12588
+ "content": {
12589
+ "application/json": {
12590
+ "schema": {
12591
+ "oneOf": [
12592
+ {
12593
+ "type": "object",
12594
+ "properties": {
12595
+ "defined": { "const": true },
12596
+ "code": { "const": "SERVICE_UNAVAILABLE" },
12597
+ "status": { "const": 503 },
12598
+ "message": { "type": "string", "default": "Service Unavailable" },
12599
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12600
+ },
12601
+ "required": ["defined", "code", "status", "message"]
12602
+ },
12603
+ {
12604
+ "type": "object",
12605
+ "properties": {
12606
+ "defined": { "const": false },
12607
+ "code": { "type": "string" },
12608
+ "status": { "type": "number" },
12609
+ "message": { "type": "string" },
12610
+ "data": {}
12611
+ },
12612
+ "required": ["defined", "code", "status", "message"]
12613
+ }
12614
+ ]
12615
+ }
12616
+ }
12617
+ }
12618
+ }
12619
+ },
12620
+ "security": [{ "extensionToken": [] }]
12621
+ }
12622
+ },
12623
+ "/extensions/self/storage": {
12624
+ "get": {
12625
+ "operationId": "extensions.listSelfStorageEntries",
12626
+ "summary": "List storage entries",
12627
+ "description": "Lists the extension's storage entries in key order, optionally with a key prefix. A page ends early when its values reach 192 KiB.",
12628
+ "tags": ["extensions"],
12629
+ "parameters": [
12630
+ {
12631
+ "name": "prefix",
12632
+ "in": "query",
12633
+ "schema": { "type": "string", "maxLength": 256 },
12634
+ "allowEmptyValue": true,
12635
+ "allowReserved": true
12636
+ },
12637
+ {
12638
+ "name": "after",
12639
+ "in": "query",
12640
+ "schema": {
12641
+ "type": "string",
12642
+ "minLength": 1,
12643
+ "maxLength": 256,
12644
+ "pattern": "^\\P{Cc}+$",
12645
+ "description": "Return entries after this key"
12646
+ },
12647
+ "allowEmptyValue": true,
12648
+ "allowReserved": true
12649
+ },
12650
+ {
12651
+ "name": "limit",
12652
+ "in": "query",
12653
+ "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 100 },
12654
+ "allowEmptyValue": true,
12655
+ "allowReserved": true
12656
+ }
12657
+ ],
12658
+ "responses": {
12659
+ "200": {
12660
+ "description": "OK",
12661
+ "content": {
12662
+ "application/json": {
12663
+ "schema": {
12664
+ "type": "object",
12665
+ "properties": {
12666
+ "data": {
12667
+ "type": "array",
12668
+ "items": {
12669
+ "type": "object",
12670
+ "properties": {
12671
+ "key": { "type": "string" },
12672
+ "value": {
12673
+ "anyOf": [
12674
+ { "type": "string" },
12675
+ { "type": "number" },
12676
+ { "type": "boolean" },
12677
+ { "type": "null" },
12678
+ {
12679
+ "type": "array",
12680
+ "items": {
12681
+ "anyOf": [
12682
+ { "type": "string" },
12683
+ { "type": "number" },
12684
+ { "type": "boolean" },
12685
+ { "type": "null" },
12686
+ {
12687
+ "type": "array",
12688
+ "items": { "anyOf": [{}, { "type": "null" }] }
12689
+ },
12690
+ {
12691
+ "type": "object",
12692
+ "propertyNames": { "type": "string" },
12693
+ "additionalProperties": {}
12694
+ }
12695
+ ]
12696
+ }
12697
+ },
12698
+ {
12699
+ "type": "object",
12700
+ "propertyNames": { "type": "string" },
12701
+ "additionalProperties": {
12702
+ "anyOf": [
12703
+ { "type": "string" },
12704
+ { "type": "number" },
12705
+ { "type": "boolean" },
12706
+ { "type": "null" },
12707
+ {
12708
+ "type": "array",
12709
+ "items": { "anyOf": [{}, { "type": "null" }] }
12710
+ },
12711
+ {
12712
+ "type": "object",
12713
+ "propertyNames": { "type": "string" },
12714
+ "additionalProperties": {}
12715
+ }
12716
+ ]
12717
+ }
12718
+ }
12719
+ ]
12720
+ },
12721
+ "updatedAt": { "type": "string", "format": "date-time" }
12722
+ },
12723
+ "required": ["key", "value", "updatedAt"]
12724
+ }
12725
+ },
12726
+ "hasMore": { "type": "boolean" }
12727
+ },
12728
+ "required": ["data", "hasMore"]
12729
+ }
12730
+ }
12731
+ }
12732
+ },
12733
+ "400": {
12734
+ "description": "400",
12735
+ "content": {
12736
+ "application/json": {
12737
+ "schema": {
12738
+ "oneOf": [
12739
+ {
12740
+ "type": "object",
12741
+ "properties": {
12742
+ "defined": { "const": true },
12743
+ "code": { "const": "BAD_REQUEST" },
12744
+ "status": { "const": 400 },
12745
+ "message": { "type": "string", "default": "Bad Request" },
12746
+ "data": { "$ref": "#/components/schemas/ValidationErrorData" }
12747
+ },
12748
+ "required": ["defined", "code", "status", "message"]
12749
+ },
12750
+ {
12751
+ "type": "object",
12752
+ "properties": {
12753
+ "defined": { "const": false },
12754
+ "code": { "type": "string" },
12755
+ "status": { "type": "number" },
12756
+ "message": { "type": "string" },
12757
+ "data": {}
12758
+ },
12759
+ "required": ["defined", "code", "status", "message"]
12760
+ }
12761
+ ]
12762
+ }
12763
+ }
12764
+ }
12765
+ },
12766
+ "401": {
12767
+ "description": "401",
12768
+ "content": {
12769
+ "application/json": {
12770
+ "schema": {
12771
+ "oneOf": [
12772
+ {
12773
+ "type": "object",
12774
+ "properties": {
12775
+ "defined": { "const": true },
12776
+ "code": { "const": "UNAUTHORIZED" },
12777
+ "status": { "const": 401 },
12778
+ "message": { "type": "string", "default": "Unauthorized" },
12779
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12780
+ },
12781
+ "required": ["defined", "code", "status", "message"]
12782
+ },
12783
+ {
12784
+ "type": "object",
12785
+ "properties": {
12786
+ "defined": { "const": false },
12787
+ "code": { "type": "string" },
12788
+ "status": { "type": "number" },
12789
+ "message": { "type": "string" },
12790
+ "data": {}
12791
+ },
12792
+ "required": ["defined", "code", "status", "message"]
12793
+ }
12794
+ ]
12795
+ }
12796
+ }
12797
+ }
12798
+ },
12799
+ "403": {
12800
+ "description": "403",
12801
+ "content": {
12802
+ "application/json": {
12803
+ "schema": {
12804
+ "oneOf": [
12805
+ {
12806
+ "type": "object",
12807
+ "properties": {
12808
+ "defined": { "const": true },
12809
+ "code": { "const": "FORBIDDEN" },
12810
+ "status": { "const": 403 },
12811
+ "message": { "type": "string", "default": "Forbidden" },
12812
+ "data": { "$ref": "#/components/schemas/ForbiddenErrorData" }
12813
+ },
12814
+ "required": ["defined", "code", "status", "message"]
12815
+ },
12816
+ {
12817
+ "type": "object",
12818
+ "properties": {
12819
+ "defined": { "const": false },
12820
+ "code": { "type": "string" },
12821
+ "status": { "type": "number" },
12822
+ "message": { "type": "string" },
12823
+ "data": {}
12824
+ },
12825
+ "required": ["defined", "code", "status", "message"]
12826
+ }
12827
+ ]
12828
+ }
12829
+ }
12830
+ }
12831
+ },
12832
+ "404": {
12833
+ "description": "404",
12834
+ "content": {
12835
+ "application/json": {
12836
+ "schema": {
12837
+ "oneOf": [
12838
+ {
12839
+ "type": "object",
12840
+ "properties": {
12841
+ "defined": { "const": true },
12842
+ "code": { "const": "NOT_FOUND" },
12843
+ "status": { "const": 404 },
12844
+ "message": { "type": "string", "default": "Not Found" },
12845
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12846
+ },
12847
+ "required": ["defined", "code", "status", "message"]
12848
+ },
12849
+ {
12850
+ "type": "object",
12851
+ "properties": {
12852
+ "defined": { "const": false },
12853
+ "code": { "type": "string" },
12854
+ "status": { "type": "number" },
12855
+ "message": { "type": "string" },
12856
+ "data": {}
12857
+ },
12858
+ "required": ["defined", "code", "status", "message"]
12859
+ }
12860
+ ]
12861
+ }
12862
+ }
12863
+ }
12864
+ },
12865
+ "409": {
12866
+ "description": "409",
12867
+ "content": {
12868
+ "application/json": {
12869
+ "schema": {
12870
+ "oneOf": [
12871
+ {
12872
+ "type": "object",
12873
+ "properties": {
12874
+ "defined": { "const": true },
12875
+ "code": { "const": "CONFLICT" },
12876
+ "status": { "const": 409 },
12877
+ "message": { "type": "string", "default": "Conflict" },
12878
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12879
+ },
12880
+ "required": ["defined", "code", "status", "message"]
12881
+ },
12882
+ {
12883
+ "type": "object",
12884
+ "properties": {
12885
+ "defined": { "const": false },
12886
+ "code": { "type": "string" },
12887
+ "status": { "type": "number" },
12888
+ "message": { "type": "string" },
12889
+ "data": {}
12890
+ },
12891
+ "required": ["defined", "code", "status", "message"]
12892
+ }
12893
+ ]
12894
+ }
12895
+ }
12896
+ }
12897
+ },
12898
+ "429": {
12899
+ "description": "429",
12900
+ "content": {
12901
+ "application/json": {
12902
+ "schema": {
12903
+ "oneOf": [
12904
+ {
12905
+ "type": "object",
12906
+ "properties": {
12907
+ "defined": { "const": true },
12908
+ "code": { "const": "TOO_MANY_REQUESTS" },
12909
+ "status": { "const": 429 },
12910
+ "message": { "type": "string", "default": "Too Many Requests" },
12911
+ "data": { "$ref": "#/components/schemas/RateLimitErrorData" }
12912
+ },
12913
+ "required": ["defined", "code", "status", "message"]
12914
+ },
12915
+ {
12916
+ "type": "object",
12917
+ "properties": {
12918
+ "defined": { "const": false },
12919
+ "code": { "type": "string" },
12920
+ "status": { "type": "number" },
12921
+ "message": { "type": "string" },
12922
+ "data": {}
12923
+ },
12924
+ "required": ["defined", "code", "status", "message"]
12925
+ }
12926
+ ]
12927
+ }
12928
+ }
12929
+ }
12930
+ },
12931
+ "500": {
12932
+ "description": "500",
12933
+ "content": {
12934
+ "application/json": {
12935
+ "schema": {
12936
+ "oneOf": [
12937
+ {
12938
+ "type": "object",
12939
+ "properties": {
12940
+ "defined": { "const": true },
12941
+ "code": { "const": "INTERNAL_SERVER_ERROR" },
12942
+ "status": { "const": 500 },
12943
+ "message": { "type": "string", "default": "Internal Server Error" },
12944
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12945
+ },
12946
+ "required": ["defined", "code", "status", "message"]
12947
+ },
12948
+ {
12949
+ "type": "object",
12950
+ "properties": {
12951
+ "defined": { "const": false },
12952
+ "code": { "type": "string" },
12953
+ "status": { "type": "number" },
12954
+ "message": { "type": "string" },
12955
+ "data": {}
12956
+ },
12957
+ "required": ["defined", "code", "status", "message"]
12958
+ }
12959
+ ]
12960
+ }
12961
+ }
12962
+ }
12963
+ },
12964
+ "503": {
12965
+ "description": "503",
12966
+ "content": {
12967
+ "application/json": {
12968
+ "schema": {
12969
+ "oneOf": [
12970
+ {
12971
+ "type": "object",
12972
+ "properties": {
12973
+ "defined": { "const": true },
12974
+ "code": { "const": "SERVICE_UNAVAILABLE" },
12975
+ "status": { "const": 503 },
12976
+ "message": { "type": "string", "default": "Service Unavailable" },
12977
+ "data": { "$ref": "#/components/schemas/ErrorData" }
12978
+ },
12979
+ "required": ["defined", "code", "status", "message"]
12980
+ },
12981
+ {
12982
+ "type": "object",
12983
+ "properties": {
12984
+ "defined": { "const": false },
12985
+ "code": { "type": "string" },
12986
+ "status": { "type": "number" },
12987
+ "message": { "type": "string" },
12988
+ "data": {}
12989
+ },
12990
+ "required": ["defined", "code", "status", "message"]
12991
+ }
12992
+ ]
12993
+ }
12994
+ }
12995
+ }
12996
+ }
12997
+ },
12998
+ "security": [{ "extensionToken": [] }]
12999
+ }
13000
+ },
8685
13001
  "/collections": {
8686
13002
  "post": {
8687
13003
  "operationId": "collections.create",