@crowi/api-contract 2.0.0-alpha.16 → 2.0.0-alpha.17

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.
@@ -2982,6 +2982,229 @@ interface paths {
2982
2982
  patch?: never;
2983
2983
  trace?: never;
2984
2984
  };
2985
+ "/me/oauth-sessions": {
2986
+ parameters: {
2987
+ query?: never;
2988
+ header?: never;
2989
+ path?: never;
2990
+ cookie?: never;
2991
+ };
2992
+ /** List the current user's active OAuth sessions (refresh-token rotation-chain tips) */
2993
+ get: {
2994
+ parameters: {
2995
+ query?: never;
2996
+ header?: never;
2997
+ path?: never;
2998
+ cookie?: never;
2999
+ };
3000
+ requestBody?: never;
3001
+ responses: {
3002
+ /** @description Active OAuth session list (no secrets) */
3003
+ 200: {
3004
+ headers: {
3005
+ [name: string]: unknown;
3006
+ };
3007
+ content: {
3008
+ "application/json": {
3009
+ oauthSessions: {
3010
+ id: string;
3011
+ clientId: string;
3012
+ clientName: string;
3013
+ scopes: string[];
3014
+ /** Format: date-time */
3015
+ authorizedAt: string;
3016
+ /** Format: date-time */
3017
+ lastRefreshedAt: string;
3018
+ /** Format: date-time */
3019
+ expiresAt: string;
3020
+ }[];
3021
+ };
3022
+ };
3023
+ };
3024
+ /** @description Authentication required */
3025
+ 401: {
3026
+ headers: {
3027
+ [name: string]: unknown;
3028
+ };
3029
+ content: {
3030
+ "application/json": {
3031
+ error: {
3032
+ /** @enum {string} */
3033
+ code: "AUTHENTICATION_REQUIRED";
3034
+ /** @enum {string} */
3035
+ message: "Authentication is required";
3036
+ redirectTo?: string;
3037
+ };
3038
+ };
3039
+ };
3040
+ };
3041
+ /** @description OAuth sessions can only be managed from a web session, or the account is not active */
3042
+ 403: {
3043
+ headers: {
3044
+ [name: string]: unknown;
3045
+ };
3046
+ content: {
3047
+ "application/json": {
3048
+ error: {
3049
+ /** @enum {string} */
3050
+ code: "FORBIDDEN";
3051
+ message: string;
3052
+ };
3053
+ } | {
3054
+ error: {
3055
+ /** @enum {string} */
3056
+ code: "USER_REGISTERED" | "USER_SUSPENDED" | "USER_INVITED";
3057
+ message: string;
3058
+ redirectTo: string;
3059
+ };
3060
+ };
3061
+ };
3062
+ };
3063
+ /** @description Internal server error */
3064
+ 500: {
3065
+ headers: {
3066
+ [name: string]: unknown;
3067
+ };
3068
+ content: {
3069
+ "application/json": {
3070
+ error: {
3071
+ /** @enum {string} */
3072
+ code: "INTERNAL_ERROR";
3073
+ /** @enum {string} */
3074
+ message: "Internal server error";
3075
+ };
3076
+ };
3077
+ };
3078
+ };
3079
+ };
3080
+ };
3081
+ put?: never;
3082
+ post?: never;
3083
+ delete?: never;
3084
+ options?: never;
3085
+ head?: never;
3086
+ patch?: never;
3087
+ trace?: never;
3088
+ };
3089
+ "/me/oauth-sessions/{id}": {
3090
+ parameters: {
3091
+ query?: never;
3092
+ header?: never;
3093
+ path?: never;
3094
+ cookie?: never;
3095
+ };
3096
+ get?: never;
3097
+ put?: never;
3098
+ post?: never;
3099
+ /** Revoke an OAuth session (the rotation-chain component reachable from this tip) */
3100
+ delete: {
3101
+ parameters: {
3102
+ query?: never;
3103
+ header?: never;
3104
+ path: {
3105
+ id: string;
3106
+ };
3107
+ cookie?: never;
3108
+ };
3109
+ requestBody?: never;
3110
+ responses: {
3111
+ /** @description Session revoked */
3112
+ 200: {
3113
+ headers: {
3114
+ [name: string]: unknown;
3115
+ };
3116
+ content: {
3117
+ "application/json": {
3118
+ id: string;
3119
+ clientId: string;
3120
+ clientName: string;
3121
+ scopes: string[];
3122
+ /** Format: date-time */
3123
+ authorizedAt: string;
3124
+ /** Format: date-time */
3125
+ lastRefreshedAt: string;
3126
+ /** Format: date-time */
3127
+ expiresAt: string;
3128
+ };
3129
+ };
3130
+ };
3131
+ /** @description Authentication required */
3132
+ 401: {
3133
+ headers: {
3134
+ [name: string]: unknown;
3135
+ };
3136
+ content: {
3137
+ "application/json": {
3138
+ error: {
3139
+ /** @enum {string} */
3140
+ code: "AUTHENTICATION_REQUIRED";
3141
+ /** @enum {string} */
3142
+ message: "Authentication is required";
3143
+ redirectTo?: string;
3144
+ };
3145
+ };
3146
+ };
3147
+ };
3148
+ /** @description OAuth sessions can only be managed from a web session, or the account is not active */
3149
+ 403: {
3150
+ headers: {
3151
+ [name: string]: unknown;
3152
+ };
3153
+ content: {
3154
+ "application/json": {
3155
+ error: {
3156
+ /** @enum {string} */
3157
+ code: "FORBIDDEN";
3158
+ message: string;
3159
+ };
3160
+ } | {
3161
+ error: {
3162
+ /** @enum {string} */
3163
+ code: "USER_REGISTERED" | "USER_SUSPENDED" | "USER_INVITED";
3164
+ message: string;
3165
+ redirectTo: string;
3166
+ };
3167
+ };
3168
+ };
3169
+ };
3170
+ /** @description No such session belonging to the current user */
3171
+ 404: {
3172
+ headers: {
3173
+ [name: string]: unknown;
3174
+ };
3175
+ content: {
3176
+ "application/json": {
3177
+ error: {
3178
+ /** @enum {string} */
3179
+ code: "NOT_FOUND";
3180
+ message: string;
3181
+ };
3182
+ };
3183
+ };
3184
+ };
3185
+ /** @description Internal server error */
3186
+ 500: {
3187
+ headers: {
3188
+ [name: string]: unknown;
3189
+ };
3190
+ content: {
3191
+ "application/json": {
3192
+ error: {
3193
+ /** @enum {string} */
3194
+ code: "INTERNAL_ERROR";
3195
+ /** @enum {string} */
3196
+ message: "Internal server error";
3197
+ };
3198
+ };
3199
+ };
3200
+ };
3201
+ };
3202
+ };
3203
+ options?: never;
3204
+ head?: never;
3205
+ patch?: never;
3206
+ trace?: never;
3207
+ };
2985
3208
  "/oauth/authorize": {
2986
3209
  parameters: {
2987
3210
  query?: never;
@@ -6173,77 +6396,198 @@ interface paths {
6173
6396
  patch?: never;
6174
6397
  trace?: never;
6175
6398
  };
6176
- "/pages": {
6399
+ "/pages/{pageId}/history": {
6177
6400
  parameters: {
6178
6401
  query?: never;
6179
6402
  header?: never;
6180
6403
  path?: never;
6181
6404
  cookie?: never;
6182
6405
  };
6183
- /** Get page data by path or page_id */
6406
+ /** A page's content revisions and metadata events as one timeline, newest first */
6184
6407
  get: {
6185
6408
  parameters: {
6186
6409
  query?: {
6187
- path?: string;
6188
- page_id?: string;
6189
- revision_id?: string;
6410
+ cursor?: string;
6411
+ limit?: number;
6190
6412
  };
6191
6413
  header?: never;
6192
- path?: never;
6414
+ path: {
6415
+ pageId: string;
6416
+ };
6193
6417
  cookie?: never;
6194
6418
  };
6195
6419
  requestBody?: never;
6196
6420
  responses: {
6197
- /** @description The requested page with populated revision. `revision.renderedAst` shape is content-negotiated via the `X-Crowi-Ast-Version` request header (RFC-0023): requests declaring `X-Crowi-Ast-Version: 1` receive the typed `{astVersion, root}` envelope; all other requests receive the stored bare mdast Root verbatim. The response varies on this header (`Vary: X-Crowi-Ast-Version`). */
6421
+ /** @description One page of the timeline, plus a cursor when more remains */
6198
6422
  200: {
6423
+ headers: {
6424
+ [name: string]: unknown;
6425
+ };
6426
+ content: {
6427
+ "application/json": components["schemas"]["PageHistoryResponse"];
6428
+ };
6429
+ };
6430
+ /** @description Malformed page id, cursor, or query */
6431
+ 400: {
6199
6432
  headers: {
6200
6433
  [name: string]: unknown;
6201
6434
  };
6202
6435
  content: {
6203
6436
  "application/json": {
6204
- page: {
6205
- _id: string;
6206
- path: string;
6207
- revision: {
6208
- _id: string;
6209
- path: string;
6210
- body: string;
6211
- /** @default markdown */
6212
- format: string;
6213
- author?: {
6214
- _id: string;
6215
- id?: string;
6216
- username: string;
6217
- name: string;
6218
- /** Format: email */
6219
- email: string;
6220
- image?: string | null;
6221
- createdAt: string;
6222
- } | null;
6223
- createdAt: string;
6224
- meta?: {
6225
- toc?: {
6226
- level: number;
6227
- text: string;
6228
- anchorId: string;
6229
- }[];
6230
- wikiLinks?: {
6231
- raw: string;
6232
- target: string;
6233
- displayText?: string;
6234
- }[];
6235
- mentions?: {
6236
- username: string;
6237
- }[];
6238
- codeBlockLanguages?: string[];
6239
- rawSpaceLinks?: string[];
6240
- };
6241
- renderedAst?: components["schemas"]["RenderedAstEnvelope"] | components["schemas"]["LegacyRenderedAstRoot"];
6242
- renderedAstArtifactKey?: string;
6243
- rendererVersion?: string;
6244
- parentRevisionId?: string | null;
6245
- /** @enum {string} */
6246
- type?: "snapshot" | "incremental";
6437
+ error: {
6438
+ code: string;
6439
+ message: string;
6440
+ };
6441
+ };
6442
+ };
6443
+ };
6444
+ /** @description Authentication required */
6445
+ 401: {
6446
+ headers: {
6447
+ [name: string]: unknown;
6448
+ };
6449
+ content: {
6450
+ "application/json": {
6451
+ error: {
6452
+ /** @enum {string} */
6453
+ code: "AUTHENTICATION_REQUIRED";
6454
+ /** @enum {string} */
6455
+ message: "Authentication is required";
6456
+ redirectTo?: string;
6457
+ };
6458
+ };
6459
+ };
6460
+ };
6461
+ /** @description The access token does not grant pages:read */
6462
+ 403: {
6463
+ headers: {
6464
+ [name: string]: unknown;
6465
+ };
6466
+ content: {
6467
+ "application/json": {
6468
+ error: {
6469
+ /** @enum {string} */
6470
+ code: "INSUFFICIENT_SCOPE";
6471
+ message: string;
6472
+ details?: {
6473
+ requiredScope: string;
6474
+ };
6475
+ };
6476
+ };
6477
+ };
6478
+ };
6479
+ /** @description Page not found (also covers grant-denied) */
6480
+ 404: {
6481
+ headers: {
6482
+ [name: string]: unknown;
6483
+ };
6484
+ content: {
6485
+ "application/json": {
6486
+ error: {
6487
+ /** @enum {string} */
6488
+ code: "PAGE_NOT_FOUND";
6489
+ /** @enum {string} */
6490
+ message: "Page not found";
6491
+ };
6492
+ };
6493
+ };
6494
+ };
6495
+ /** @description The timeline could not be read — includes the page identifier so an operator can run the repair */
6496
+ 500: {
6497
+ headers: {
6498
+ [name: string]: unknown;
6499
+ };
6500
+ content: {
6501
+ "application/json": {
6502
+ error: {
6503
+ code: string;
6504
+ message: string;
6505
+ pageId: string;
6506
+ };
6507
+ };
6508
+ };
6509
+ };
6510
+ };
6511
+ };
6512
+ put?: never;
6513
+ post?: never;
6514
+ delete?: never;
6515
+ options?: never;
6516
+ head?: never;
6517
+ patch?: never;
6518
+ trace?: never;
6519
+ };
6520
+ "/pages": {
6521
+ parameters: {
6522
+ query?: never;
6523
+ header?: never;
6524
+ path?: never;
6525
+ cookie?: never;
6526
+ };
6527
+ /** Get page data by path or page_id */
6528
+ get: {
6529
+ parameters: {
6530
+ query?: {
6531
+ path?: string;
6532
+ page_id?: string;
6533
+ revision_id?: string;
6534
+ };
6535
+ header?: never;
6536
+ path?: never;
6537
+ cookie?: never;
6538
+ };
6539
+ requestBody?: never;
6540
+ responses: {
6541
+ /** @description The requested page with populated revision. `revision.renderedAst` shape is content-negotiated via the `X-Crowi-Ast-Version` request header (RFC-0023): requests declaring `X-Crowi-Ast-Version: 1` receive the typed `{astVersion, root}` envelope; all other requests receive the stored bare mdast Root verbatim. The response varies on this header (`Vary: X-Crowi-Ast-Version`). */
6542
+ 200: {
6543
+ headers: {
6544
+ [name: string]: unknown;
6545
+ };
6546
+ content: {
6547
+ "application/json": {
6548
+ page: {
6549
+ _id: string;
6550
+ path: string;
6551
+ revision: {
6552
+ _id: string;
6553
+ path: string;
6554
+ body: string;
6555
+ /** @default markdown */
6556
+ format: string;
6557
+ author?: {
6558
+ _id: string;
6559
+ id?: string;
6560
+ username: string;
6561
+ name: string;
6562
+ /** Format: email */
6563
+ email: string;
6564
+ image?: string | null;
6565
+ createdAt: string;
6566
+ } | null;
6567
+ createdAt: string;
6568
+ meta?: {
6569
+ toc?: {
6570
+ level: number;
6571
+ text: string;
6572
+ anchorId: string;
6573
+ }[];
6574
+ wikiLinks?: {
6575
+ raw: string;
6576
+ target: string;
6577
+ displayText?: string;
6578
+ }[];
6579
+ mentions?: {
6580
+ username: string;
6581
+ }[];
6582
+ codeBlockLanguages?: string[];
6583
+ rawSpaceLinks?: string[];
6584
+ };
6585
+ renderedAst?: components["schemas"]["RenderedAstEnvelope"] | components["schemas"]["LegacyRenderedAstRoot"];
6586
+ renderedAstArtifactKey?: string;
6587
+ rendererVersion?: string;
6588
+ parentRevisionId?: string | null;
6589
+ /** @enum {string} */
6590
+ type?: "snapshot" | "incremental";
6247
6591
  savedBy?: string | {
6248
6592
  _id: string;
6249
6593
  id?: string;
@@ -6747,7 +7091,9 @@ interface paths {
6747
7091
  delete: {
6748
7092
  parameters: {
6749
7093
  query?: never;
6750
- header?: never;
7094
+ header?: {
7095
+ "idempotency-key"?: string;
7096
+ };
6751
7097
  path?: never;
6752
7098
  cookie?: never;
6753
7099
  };
@@ -6877,7 +7223,7 @@ interface paths {
6877
7223
  };
6878
7224
  };
6879
7225
  };
6880
- /** @description PAGE_DELETE_FAILED */
7226
+ /** @description PAGE_DELETE_FAILED / IDEMPOTENCY_KEY_REQUIRED / PAGE_TRANSITION_INCOMPLETE */
6881
7227
  400: {
6882
7228
  headers: {
6883
7229
  [name: string]: unknown;
@@ -6888,6 +7234,18 @@ interface paths {
6888
7234
  code: string;
6889
7235
  message: string;
6890
7236
  };
7237
+ } | {
7238
+ error: {
7239
+ /** @enum {string} */
7240
+ code: "IDEMPOTENCY_KEY_REQUIRED";
7241
+ message: string;
7242
+ };
7243
+ } | {
7244
+ error: {
7245
+ /** @enum {string} */
7246
+ code: "PAGE_TRANSITION_INCOMPLETE";
7247
+ message: string;
7248
+ };
6891
7249
  };
6892
7250
  };
6893
7251
  };
@@ -6924,7 +7282,7 @@ interface paths {
6924
7282
  };
6925
7283
  };
6926
7284
  };
6927
- /** @description Stale revision_id */
7285
+ /** @description Stale revision_id / IDEMPOTENCY_KEY_CONFLICT / PAGE_TRANSITION_IN_PROGRESS */
6928
7286
  409: {
6929
7287
  headers: {
6930
7288
  [name: string]: unknown;
@@ -6936,6 +7294,18 @@ interface paths {
6936
7294
  code: "PAGE_REVISION_ERROR";
6937
7295
  message: string;
6938
7296
  };
7297
+ } | {
7298
+ error: {
7299
+ /** @enum {string} */
7300
+ code: "IDEMPOTENCY_KEY_CONFLICT";
7301
+ message: string;
7302
+ };
7303
+ } | {
7304
+ error: {
7305
+ /** @enum {string} */
7306
+ code: "PAGE_TRANSITION_IN_PROGRESS";
7307
+ message: string;
7308
+ };
6939
7309
  };
6940
7310
  };
6941
7311
  };
@@ -8622,7 +8992,9 @@ interface paths {
8622
8992
  post: {
8623
8993
  parameters: {
8624
8994
  query?: never;
8625
- header?: never;
8995
+ header?: {
8996
+ "idempotency-key"?: string;
8997
+ };
8626
8998
  path?: never;
8627
8999
  cookie?: never;
8628
9000
  };
@@ -8750,7 +9122,7 @@ interface paths {
8750
9122
  };
8751
9123
  };
8752
9124
  };
8753
- /** @description PAGE_REVERT_FAILED */
9125
+ /** @description PAGE_REVERT_FAILED / IDEMPOTENCY_KEY_REQUIRED / PAGE_TRANSITION_INCOMPLETE */
8754
9126
  400: {
8755
9127
  headers: {
8756
9128
  [name: string]: unknown;
@@ -8761,6 +9133,18 @@ interface paths {
8761
9133
  code: string;
8762
9134
  message: string;
8763
9135
  };
9136
+ } | {
9137
+ error: {
9138
+ /** @enum {string} */
9139
+ code: "IDEMPOTENCY_KEY_REQUIRED";
9140
+ message: string;
9141
+ };
9142
+ } | {
9143
+ error: {
9144
+ /** @enum {string} */
9145
+ code: "PAGE_TRANSITION_INCOMPLETE";
9146
+ message: string;
9147
+ };
8764
9148
  };
8765
9149
  };
8766
9150
  };
@@ -8797,6 +9181,27 @@ interface paths {
8797
9181
  };
8798
9182
  };
8799
9183
  };
9184
+ /** @description IDEMPOTENCY_KEY_CONFLICT / PAGE_TRANSITION_IN_PROGRESS */
9185
+ 409: {
9186
+ headers: {
9187
+ [name: string]: unknown;
9188
+ };
9189
+ content: {
9190
+ "application/json": {
9191
+ error: {
9192
+ /** @enum {string} */
9193
+ code: "IDEMPOTENCY_KEY_CONFLICT";
9194
+ message: string;
9195
+ };
9196
+ } | {
9197
+ error: {
9198
+ /** @enum {string} */
9199
+ code: "PAGE_TRANSITION_IN_PROGRESS";
9200
+ message: string;
9201
+ };
9202
+ };
9203
+ };
9204
+ };
8800
9205
  };
8801
9206
  };
8802
9207
  delete?: never;
@@ -9015,7 +9420,9 @@ interface paths {
9015
9420
  post: {
9016
9421
  parameters: {
9017
9422
  query?: never;
9018
- header?: never;
9423
+ header?: {
9424
+ "idempotency-key"?: string;
9425
+ };
9019
9426
  path?: never;
9020
9427
  cookie?: never;
9021
9428
  };
@@ -9148,7 +9555,7 @@ interface paths {
9148
9555
  };
9149
9556
  };
9150
9557
  };
9151
- /** @description PAGE_INVALID_NAME / PAGE_EXISTS / PAGE_RENAME_FAILED / PAGE_RENAME_TREE_FAILED */
9558
+ /** @description PAGE_INVALID_NAME / PAGE_EXISTS / PAGE_RENAME_FAILED / PAGE_RENAME_TREE_FAILED / IDEMPOTENCY_KEY_REQUIRED / PAGE_TRANSITION_INCOMPLETE */
9152
9559
  400: {
9153
9560
  headers: {
9154
9561
  [name: string]: unknown;
@@ -9170,6 +9577,18 @@ interface paths {
9170
9577
  }[];
9171
9578
  partial?: boolean;
9172
9579
  };
9580
+ } | {
9581
+ error: {
9582
+ /** @enum {string} */
9583
+ code: "IDEMPOTENCY_KEY_REQUIRED";
9584
+ message: string;
9585
+ };
9586
+ } | {
9587
+ error: {
9588
+ /** @enum {string} */
9589
+ code: "PAGE_TRANSITION_INCOMPLETE";
9590
+ message: string;
9591
+ };
9173
9592
  };
9174
9593
  };
9175
9594
  };
@@ -9206,7 +9625,7 @@ interface paths {
9206
9625
  };
9207
9626
  };
9208
9627
  };
9209
- /** @description Stale revision_id */
9628
+ /** @description Stale revision_id / IDEMPOTENCY_KEY_CONFLICT / PAGE_TRANSITION_IN_PROGRESS */
9210
9629
  409: {
9211
9630
  headers: {
9212
9631
  [name: string]: unknown;
@@ -9218,6 +9637,18 @@ interface paths {
9218
9637
  code: "PAGE_REVISION_ERROR";
9219
9638
  message: string;
9220
9639
  };
9640
+ } | {
9641
+ error: {
9642
+ /** @enum {string} */
9643
+ code: "IDEMPOTENCY_KEY_CONFLICT";
9644
+ message: string;
9645
+ };
9646
+ } | {
9647
+ error: {
9648
+ /** @enum {string} */
9649
+ code: "PAGE_TRANSITION_IN_PROGRESS";
9650
+ message: string;
9651
+ };
9221
9652
  };
9222
9653
  };
9223
9654
  };
@@ -9242,7 +9673,9 @@ interface paths {
9242
9673
  post: {
9243
9674
  parameters: {
9244
9675
  query?: never;
9245
- header?: never;
9676
+ header?: {
9677
+ "idempotency-key"?: string;
9678
+ };
9246
9679
  path?: never;
9247
9680
  cookie?: never;
9248
9681
  };
@@ -9267,7 +9700,7 @@ interface paths {
9267
9700
  };
9268
9701
  };
9269
9702
  };
9270
- /** @description PAGE_INVALID_NAME / PAGE_RENAME_TREE_FAILED (collisions, nothing to move, or partial failure) */
9703
+ /** @description PAGE_INVALID_NAME / PAGE_RENAME_TREE_FAILED / IDEMPOTENCY_KEY_REQUIRED */
9271
9704
  400: {
9272
9705
  headers: {
9273
9706
  [name: string]: unknown;
@@ -9289,6 +9722,12 @@ interface paths {
9289
9722
  }[];
9290
9723
  partial?: boolean;
9291
9724
  };
9725
+ } | {
9726
+ error: {
9727
+ /** @enum {string} */
9728
+ code: "IDEMPOTENCY_KEY_REQUIRED";
9729
+ message: string;
9730
+ };
9292
9731
  };
9293
9732
  };
9294
9733
  };
@@ -9309,6 +9748,21 @@ interface paths {
9309
9748
  };
9310
9749
  };
9311
9750
  };
9751
+ /** @description IDEMPOTENCY_KEY_CONFLICT */
9752
+ 409: {
9753
+ headers: {
9754
+ [name: string]: unknown;
9755
+ };
9756
+ content: {
9757
+ "application/json": {
9758
+ error: {
9759
+ /** @enum {string} */
9760
+ code: "IDEMPOTENCY_KEY_CONFLICT";
9761
+ message: string;
9762
+ };
9763
+ };
9764
+ };
9765
+ };
9312
9766
  };
9313
9767
  };
9314
9768
  delete?: never;
@@ -11286,8 +11740,330 @@ interface paths {
11286
11740
  };
11287
11741
  };
11288
11742
  };
11289
- /** @description No search driver registered (install `@crowi/plugin-search-*`) */
11290
- 503: {
11743
+ /** @description No search driver registered (install `@crowi/plugin-search-*`) */
11744
+ 503: {
11745
+ headers: {
11746
+ [name: string]: unknown;
11747
+ };
11748
+ content: {
11749
+ "application/json": {
11750
+ error: {
11751
+ /** @enum {string} */
11752
+ code: "SERVICE_UNAVAILABLE";
11753
+ feature: string;
11754
+ message: string;
11755
+ };
11756
+ };
11757
+ };
11758
+ };
11759
+ };
11760
+ };
11761
+ put?: never;
11762
+ post?: never;
11763
+ delete?: never;
11764
+ options?: never;
11765
+ head?: never;
11766
+ patch?: never;
11767
+ trace?: never;
11768
+ };
11769
+ "/admin/crypto/status": {
11770
+ parameters: {
11771
+ query?: never;
11772
+ header?: never;
11773
+ path?: never;
11774
+ cookie?: never;
11775
+ };
11776
+ /** Report which sensitive Config values are still plaintext */
11777
+ get: {
11778
+ parameters: {
11779
+ query?: never;
11780
+ header?: never;
11781
+ path?: never;
11782
+ cookie?: never;
11783
+ };
11784
+ requestBody?: never;
11785
+ responses: {
11786
+ /** @description Per-(ns, key) status for every sensitive Config row */
11787
+ 200: {
11788
+ headers: {
11789
+ [name: string]: unknown;
11790
+ };
11791
+ content: {
11792
+ "application/json": {
11793
+ encryptionConfigured: boolean;
11794
+ unencryptedCount: number;
11795
+ encryptedCount: number;
11796
+ entries: {
11797
+ ns: string;
11798
+ key: string;
11799
+ present: boolean;
11800
+ encrypted: boolean;
11801
+ }[];
11802
+ };
11803
+ };
11804
+ };
11805
+ /** @description Authentication required */
11806
+ 401: {
11807
+ headers: {
11808
+ [name: string]: unknown;
11809
+ };
11810
+ content: {
11811
+ "application/json": {
11812
+ error: {
11813
+ /** @enum {string} */
11814
+ code: "AUTHENTICATION_REQUIRED";
11815
+ /** @enum {string} */
11816
+ message: "Authentication is required";
11817
+ redirectTo?: string;
11818
+ };
11819
+ };
11820
+ };
11821
+ };
11822
+ /** @description Admin permission required */
11823
+ 403: {
11824
+ headers: {
11825
+ [name: string]: unknown;
11826
+ };
11827
+ content: {
11828
+ "application/json": {
11829
+ error: {
11830
+ /** @enum {string} */
11831
+ code: "ADMIN_REQUIRED";
11832
+ /** @enum {string} */
11833
+ message: "Admin permission required";
11834
+ redirectTo?: string;
11835
+ };
11836
+ };
11837
+ };
11838
+ };
11839
+ /** @description Internal server error */
11840
+ 500: {
11841
+ headers: {
11842
+ [name: string]: unknown;
11843
+ };
11844
+ content: {
11845
+ "application/json": {
11846
+ error: {
11847
+ /** @enum {string} */
11848
+ code: "INTERNAL_ERROR";
11849
+ /** @enum {string} */
11850
+ message: "Internal server error";
11851
+ };
11852
+ };
11853
+ };
11854
+ };
11855
+ };
11856
+ };
11857
+ put?: never;
11858
+ post?: never;
11859
+ delete?: never;
11860
+ options?: never;
11861
+ head?: never;
11862
+ patch?: never;
11863
+ trace?: never;
11864
+ };
11865
+ "/admin/crypto/reencrypt": {
11866
+ parameters: {
11867
+ query?: never;
11868
+ header?: never;
11869
+ path?: never;
11870
+ cookie?: never;
11871
+ };
11872
+ get?: never;
11873
+ put?: never;
11874
+ /** Re-encrypt every plaintext sensitive Config value with the current key */
11875
+ post: {
11876
+ parameters: {
11877
+ query?: never;
11878
+ header?: never;
11879
+ path?: never;
11880
+ cookie?: never;
11881
+ };
11882
+ requestBody?: never;
11883
+ responses: {
11884
+ /** @description Migration completed (counts reported) */
11885
+ 200: {
11886
+ headers: {
11887
+ [name: string]: unknown;
11888
+ };
11889
+ content: {
11890
+ "application/json": {
11891
+ rewritten: number;
11892
+ alreadyEncrypted: number;
11893
+ missing: number;
11894
+ };
11895
+ };
11896
+ };
11897
+ /** @description Authentication required */
11898
+ 401: {
11899
+ headers: {
11900
+ [name: string]: unknown;
11901
+ };
11902
+ content: {
11903
+ "application/json": {
11904
+ error: {
11905
+ /** @enum {string} */
11906
+ code: "AUTHENTICATION_REQUIRED";
11907
+ /** @enum {string} */
11908
+ message: "Authentication is required";
11909
+ redirectTo?: string;
11910
+ };
11911
+ };
11912
+ };
11913
+ };
11914
+ /** @description Admin permission required */
11915
+ 403: {
11916
+ headers: {
11917
+ [name: string]: unknown;
11918
+ };
11919
+ content: {
11920
+ "application/json": {
11921
+ error: {
11922
+ /** @enum {string} */
11923
+ code: "ADMIN_REQUIRED";
11924
+ /** @enum {string} */
11925
+ message: "Admin permission required";
11926
+ redirectTo?: string;
11927
+ };
11928
+ };
11929
+ };
11930
+ };
11931
+ /** @description Internal server error */
11932
+ 500: {
11933
+ headers: {
11934
+ [name: string]: unknown;
11935
+ };
11936
+ content: {
11937
+ "application/json": {
11938
+ error: {
11939
+ /** @enum {string} */
11940
+ code: "INTERNAL_ERROR";
11941
+ /** @enum {string} */
11942
+ message: "Internal server error";
11943
+ };
11944
+ };
11945
+ };
11946
+ };
11947
+ /** @description CROWI_ENCRYPTION_KEY is not configured on the server */
11948
+ 503: {
11949
+ headers: {
11950
+ [name: string]: unknown;
11951
+ };
11952
+ content: {
11953
+ "application/json": {
11954
+ error: {
11955
+ /** @enum {string} */
11956
+ code: "ENCRYPTION_NOT_CONFIGURED";
11957
+ message: string;
11958
+ };
11959
+ };
11960
+ };
11961
+ };
11962
+ };
11963
+ };
11964
+ delete?: never;
11965
+ options?: never;
11966
+ head?: never;
11967
+ patch?: never;
11968
+ trace?: never;
11969
+ };
11970
+ "/admin/page-deletions": {
11971
+ parameters: {
11972
+ query?: never;
11973
+ header?: never;
11974
+ path?: never;
11975
+ cookie?: never;
11976
+ };
11977
+ /** List recent page deletion records or find them by deleted page id */
11978
+ get: {
11979
+ parameters: {
11980
+ query?: {
11981
+ pageId?: string;
11982
+ limit?: number;
11983
+ };
11984
+ header?: never;
11985
+ path?: never;
11986
+ cookie?: never;
11987
+ };
11988
+ requestBody?: never;
11989
+ responses: {
11990
+ /** @description Page deletion records */
11991
+ 200: {
11992
+ headers: {
11993
+ [name: string]: unknown;
11994
+ };
11995
+ content: {
11996
+ "application/json": {
11997
+ records: {
11998
+ _id: string;
11999
+ pageId: string;
12000
+ path: string;
12001
+ actor: string | null;
12002
+ /** Format: date-time */
12003
+ deletedAt: string;
12004
+ /** @enum {string} */
12005
+ mode: "user_hard_delete";
12006
+ }[];
12007
+ };
12008
+ };
12009
+ };
12010
+ /** @description Invalid query */
12011
+ 400: {
12012
+ headers: {
12013
+ [name: string]: unknown;
12014
+ };
12015
+ content: {
12016
+ "application/json": {
12017
+ error: {
12018
+ /** @enum {string} */
12019
+ code: "VALIDATION_ERROR";
12020
+ message: string;
12021
+ details?: {
12022
+ fieldErrors: {
12023
+ [key: string]: string[];
12024
+ };
12025
+ formErrors: string[];
12026
+ };
12027
+ };
12028
+ };
12029
+ };
12030
+ };
12031
+ /** @description Authentication required */
12032
+ 401: {
12033
+ headers: {
12034
+ [name: string]: unknown;
12035
+ };
12036
+ content: {
12037
+ "application/json": {
12038
+ error: {
12039
+ /** @enum {string} */
12040
+ code: "AUTHENTICATION_REQUIRED";
12041
+ /** @enum {string} */
12042
+ message: "Authentication is required";
12043
+ redirectTo?: string;
12044
+ };
12045
+ };
12046
+ };
12047
+ };
12048
+ /** @description Admin permission required */
12049
+ 403: {
12050
+ headers: {
12051
+ [name: string]: unknown;
12052
+ };
12053
+ content: {
12054
+ "application/json": {
12055
+ error: {
12056
+ /** @enum {string} */
12057
+ code: "ADMIN_REQUIRED";
12058
+ /** @enum {string} */
12059
+ message: "Admin permission required";
12060
+ redirectTo?: string;
12061
+ };
12062
+ };
12063
+ };
12064
+ };
12065
+ /** @description Internal server error */
12066
+ 500: {
11291
12067
  headers: {
11292
12068
  [name: string]: unknown;
11293
12069
  };
@@ -11295,9 +12071,9 @@ interface paths {
11295
12071
  "application/json": {
11296
12072
  error: {
11297
12073
  /** @enum {string} */
11298
- code: "SERVICE_UNAVAILABLE";
11299
- feature: string;
11300
- message: string;
12074
+ code: "INTERNAL_ERROR";
12075
+ /** @enum {string} */
12076
+ message: "Internal server error";
11301
12077
  };
11302
12078
  };
11303
12079
  };
@@ -11306,45 +12082,53 @@ interface paths {
11306
12082
  };
11307
12083
  put?: never;
11308
12084
  post?: never;
11309
- delete?: never;
11310
- options?: never;
11311
- head?: never;
11312
- patch?: never;
11313
- trace?: never;
11314
- };
11315
- "/admin/crypto/status": {
11316
- parameters: {
11317
- query?: never;
11318
- header?: never;
11319
- path?: never;
11320
- cookie?: never;
11321
- };
11322
- /** Report which sensitive Config values are still plaintext */
11323
- get: {
12085
+ /** Erase one deletion record or every record for one exact path */
12086
+ delete: {
11324
12087
  parameters: {
11325
12088
  query?: never;
11326
12089
  header?: never;
11327
12090
  path?: never;
11328
12091
  cookie?: never;
11329
12092
  };
11330
- requestBody?: never;
12093
+ requestBody: {
12094
+ content: {
12095
+ "application/json": {
12096
+ recordId: string;
12097
+ } | {
12098
+ path: string;
12099
+ };
12100
+ };
12101
+ };
11331
12102
  responses: {
11332
- /** @description Per-(ns, key) status for every sensitive Config row */
12103
+ /** @description Number of erased records */
11333
12104
  200: {
11334
12105
  headers: {
11335
12106
  [name: string]: unknown;
11336
12107
  };
11337
12108
  content: {
11338
12109
  "application/json": {
11339
- encryptionConfigured: boolean;
11340
- unencryptedCount: number;
11341
- encryptedCount: number;
11342
- entries: {
11343
- ns: string;
11344
- key: string;
11345
- present: boolean;
11346
- encrypted: boolean;
11347
- }[];
12110
+ deletedCount: number;
12111
+ };
12112
+ };
12113
+ };
12114
+ /** @description A recordId or path selector is required */
12115
+ 400: {
12116
+ headers: {
12117
+ [name: string]: unknown;
12118
+ };
12119
+ content: {
12120
+ "application/json": {
12121
+ error: {
12122
+ /** @enum {string} */
12123
+ code: "VALIDATION_ERROR";
12124
+ message: string;
12125
+ details?: {
12126
+ fieldErrors: {
12127
+ [key: string]: string[];
12128
+ };
12129
+ formErrors: string[];
12130
+ };
12131
+ };
11348
12132
  };
11349
12133
  };
11350
12134
  };
@@ -11382,6 +12166,21 @@ interface paths {
11382
12166
  };
11383
12167
  };
11384
12168
  };
12169
+ /** @description No matching deletion record */
12170
+ 404: {
12171
+ headers: {
12172
+ [name: string]: unknown;
12173
+ };
12174
+ content: {
12175
+ "application/json": {
12176
+ error: {
12177
+ /** @enum {string} */
12178
+ code: "NOT_FOUND";
12179
+ message: string;
12180
+ };
12181
+ };
12182
+ };
12183
+ };
11385
12184
  /** @description Internal server error */
11386
12185
  500: {
11387
12186
  headers: {
@@ -11400,43 +12199,69 @@ interface paths {
11400
12199
  };
11401
12200
  };
11402
12201
  };
11403
- put?: never;
11404
- post?: never;
11405
- delete?: never;
11406
12202
  options?: never;
11407
12203
  head?: never;
11408
12204
  patch?: never;
11409
12205
  trace?: never;
11410
12206
  };
11411
- "/admin/crypto/reencrypt": {
12207
+ "/admin/page-deletions/by-path": {
11412
12208
  parameters: {
11413
12209
  query?: never;
11414
12210
  header?: never;
11415
12211
  path?: never;
11416
12212
  cookie?: never;
11417
12213
  };
11418
- get?: never;
11419
- put?: never;
11420
- /** Re-encrypt every plaintext sensitive Config value with the current key */
11421
- post: {
12214
+ /** List deletion records for one exact historical path */
12215
+ get: {
11422
12216
  parameters: {
11423
- query?: never;
12217
+ query: {
12218
+ path: string;
12219
+ limit?: number;
12220
+ };
11424
12221
  header?: never;
11425
12222
  path?: never;
11426
12223
  cookie?: never;
11427
12224
  };
11428
12225
  requestBody?: never;
11429
12226
  responses: {
11430
- /** @description Migration completed (counts reported) */
12227
+ /** @description Page deletion records for the path */
11431
12228
  200: {
11432
12229
  headers: {
11433
12230
  [name: string]: unknown;
11434
12231
  };
11435
12232
  content: {
11436
12233
  "application/json": {
11437
- rewritten: number;
11438
- alreadyEncrypted: number;
11439
- missing: number;
12234
+ records: {
12235
+ _id: string;
12236
+ pageId: string;
12237
+ path: string;
12238
+ actor: string | null;
12239
+ /** Format: date-time */
12240
+ deletedAt: string;
12241
+ /** @enum {string} */
12242
+ mode: "user_hard_delete";
12243
+ }[];
12244
+ };
12245
+ };
12246
+ };
12247
+ /** @description Invalid query */
12248
+ 400: {
12249
+ headers: {
12250
+ [name: string]: unknown;
12251
+ };
12252
+ content: {
12253
+ "application/json": {
12254
+ error: {
12255
+ /** @enum {string} */
12256
+ code: "VALIDATION_ERROR";
12257
+ message: string;
12258
+ details?: {
12259
+ fieldErrors: {
12260
+ [key: string]: string[];
12261
+ };
12262
+ formErrors: string[];
12263
+ };
12264
+ };
11440
12265
  };
11441
12266
  };
11442
12267
  };
@@ -11490,23 +12315,10 @@ interface paths {
11490
12315
  };
11491
12316
  };
11492
12317
  };
11493
- /** @description CROWI_ENCRYPTION_KEY is not configured on the server */
11494
- 503: {
11495
- headers: {
11496
- [name: string]: unknown;
11497
- };
11498
- content: {
11499
- "application/json": {
11500
- error: {
11501
- /** @enum {string} */
11502
- code: "ENCRYPTION_NOT_CONFIGURED";
11503
- message: string;
11504
- };
11505
- };
11506
- };
11507
- };
11508
12318
  };
11509
12319
  };
12320
+ put?: never;
12321
+ post?: never;
11510
12322
  delete?: never;
11511
12323
  options?: never;
11512
12324
  head?: never;
@@ -11668,6 +12480,22 @@ interface paths {
11668
12480
  };
11669
12481
  };
11670
12482
  };
12483
+ /** @description Internal server error */
12484
+ 500: {
12485
+ headers: {
12486
+ [name: string]: unknown;
12487
+ };
12488
+ content: {
12489
+ "application/json": {
12490
+ error: {
12491
+ /** @enum {string} */
12492
+ code: "INTERNAL_ERROR";
12493
+ /** @enum {string} */
12494
+ message: "Internal server error";
12495
+ };
12496
+ };
12497
+ };
12498
+ };
11671
12499
  };
11672
12500
  };
11673
12501
  post?: never;
@@ -12181,6 +13009,22 @@ interface paths {
12181
13009
  };
12182
13010
  };
12183
13011
  };
13012
+ /** @description Internal server error */
13013
+ 500: {
13014
+ headers: {
13015
+ [name: string]: unknown;
13016
+ };
13017
+ content: {
13018
+ "application/json": {
13019
+ error: {
13020
+ /** @enum {string} */
13021
+ code: "INTERNAL_ERROR";
13022
+ /** @enum {string} */
13023
+ message: "Internal server error";
13024
+ };
13025
+ };
13026
+ };
13027
+ };
12184
13028
  };
12185
13029
  };
12186
13030
  post?: never;
@@ -14606,11 +15450,12 @@ interface paths {
14606
15450
  values: {
14607
15451
  [key: string]: unknown;
14608
15452
  };
15453
+ confirmLinkedIdentities?: boolean;
14609
15454
  };
14610
15455
  };
14611
15456
  };
14612
15457
  responses: {
14613
- /** @description Save succeeded; hotReloaded flag indicates live apply */
15458
+ /** @description Save succeeded; hotReloaded flag indicates live apply. verificationResults (feature-plugin-config-live-verification) carries non-blocking connectivity/permission probe results for the changed plugin and its dependents, run after this save already persisted and reconfigured — empty on a no-op save or when no affected plugin declares verifyConfig, optional on the wire for rolling-deploy compat with an older api replica, and reflects only the instance that answered this request (never a cluster-wide aggregate). */
14614
15459
  200: {
14615
15460
  headers: {
14616
15461
  [name: string]: unknown;
@@ -14621,6 +15466,17 @@ interface paths {
14621
15466
  ok: true;
14622
15467
  hotReloaded: boolean;
14623
15468
  reconfigureFailed: boolean;
15469
+ verificationResults?: ({
15470
+ plugin: string;
15471
+ /** @enum {string} */
15472
+ status: "ok";
15473
+ } | {
15474
+ plugin: string;
15475
+ /** @enum {string} */
15476
+ status: "failed";
15477
+ /** @enum {string} */
15478
+ reason: "unreachable" | "auth-failed" | "resource-missing" | "write-denied" | "unknown";
15479
+ })[];
14624
15480
  };
14625
15481
  };
14626
15482
  };
@@ -14673,6 +15529,22 @@ interface paths {
14673
15529
  };
14674
15530
  };
14675
15531
  };
15532
+ /** @description The save rewrites a credential atomic group and users are linked through this plugin's auth driver(s); resubmit with confirmLinkedIdentities: true to proceed */
15533
+ 409: {
15534
+ headers: {
15535
+ [name: string]: unknown;
15536
+ };
15537
+ content: {
15538
+ "application/json": {
15539
+ error: {
15540
+ /** @enum {string} */
15541
+ code: "LINKED_IDENTITIES_EXIST";
15542
+ message: string;
15543
+ count: number;
15544
+ };
15545
+ };
15546
+ };
15547
+ };
14676
15548
  /** @description Plugin config failed plugin-defined validation */
14677
15549
  422: {
14678
15550
  headers: {
@@ -15478,7 +16350,7 @@ interface components {
15478
16350
  };
15479
16351
  };
15480
16352
  /** @enum {string} */
15481
- ErrorCode: "AUTHENTICATION_REQUIRED" | "ADMIN_REQUIRED" | "THIRD_PARTY_AUTH_REQUIRED" | "USER_REGISTERED" | "USER_SUSPENDED" | "USER_INVITED" | "USER_NOT_ACTIVE" | "EMAIL_NOT_CONFIRMED" | "INTERNAL_ERROR" | "VALIDATION_ERROR" | "INVALID_REQUEST" | "NOT_FOUND" | "CONFLICT" | "SERVICE_UNAVAILABLE" | "APPLICATION_NOT_INSTALLED" | "INVALID_PAGE_ID" | "PAGE_NOT_FOUND" | "PAGE_NOT_GRANTED" | "PAGE_REVISION_ERROR" | "PAGE_TWIN_EXISTS" | "INVALID_GRANT" | "COMMENT_NOT_FOUND" | "NOTIFICATION_NOT_FOUND" | "USER_NOT_FOUND" | "USER_EXISTS" | "USERNAME_TAKEN" | "EMAIL_TAKEN" | "EMAIL_NOT_ALLOWED" | "INVALID_ACTIVATION_TOKEN" | "INVALID_INVITE_TOKEN" | "INVITE_ALREADY_ACCEPTED" | "INVALID_RESET_TOKEN" | "INVALID_EMAIL_CHANGE_TOKEN" | "INVALID_CREDENTIALS" | "REFRESH_TOKEN_REQUIRED" | "REGISTRATION_CLOSED" | "FEDERATED_HANDOFF_INVALID" | "FEDERATED_HANDOFF_CONSUMED" | "FEDERATED_IDENTITY_IN_USE" | "FEDERATED_LINK_AUTH_STATE_CHANGED" | "FEDERATED_LINK_NOT_LINKED" | "LINK_COMPLETION_CONSUMED" | "ENCRYPTION_NOT_CONFIGURED" | "MAIL_FROM_NOT_CONFIGURED" | "MAIL_TEST_FAILED" | "PLUGIN_NOT_FOUND" | "PLUGIN_CONFIG_VALIDATION_FAILED";
16353
+ ErrorCode: "AUTHENTICATION_REQUIRED" | "ADMIN_REQUIRED" | "THIRD_PARTY_AUTH_REQUIRED" | "USER_REGISTERED" | "USER_SUSPENDED" | "USER_INVITED" | "USER_NOT_ACTIVE" | "EMAIL_NOT_CONFIRMED" | "INTERNAL_ERROR" | "VALIDATION_ERROR" | "INVALID_REQUEST" | "NOT_FOUND" | "CONFLICT" | "SERVICE_UNAVAILABLE" | "APPLICATION_NOT_INSTALLED" | "INVALID_PAGE_ID" | "PAGE_NOT_FOUND" | "PAGE_NOT_GRANTED" | "PAGE_REVISION_ERROR" | "PAGE_TWIN_EXISTS" | "INVALID_GRANT" | "IDEMPOTENCY_KEY_REQUIRED" | "IDEMPOTENCY_KEY_CONFLICT" | "PAGE_TRANSITION_IN_PROGRESS" | "PAGE_TRANSITION_INCOMPLETE" | "COMMENT_NOT_FOUND" | "NOTIFICATION_NOT_FOUND" | "USER_NOT_FOUND" | "USER_EXISTS" | "USERNAME_TAKEN" | "EMAIL_TAKEN" | "EMAIL_NOT_ALLOWED" | "INVALID_ACTIVATION_TOKEN" | "INVALID_INVITE_TOKEN" | "INVITE_ALREADY_ACCEPTED" | "INVALID_RESET_TOKEN" | "INVALID_EMAIL_CHANGE_TOKEN" | "INVALID_CREDENTIALS" | "REFRESH_TOKEN_REQUIRED" | "REGISTRATION_CLOSED" | "FEDERATED_HANDOFF_INVALID" | "FEDERATED_HANDOFF_CONSUMED" | "FEDERATED_IDENTITY_IN_USE" | "FEDERATED_LINK_AUTH_STATE_CHANGED" | "FEDERATED_LINK_NOT_LINKED" | "LINK_COMPLETION_CONSUMED" | "ENCRYPTION_NOT_CONFIGURED" | "MAIL_FROM_NOT_CONFIGURED" | "MAIL_TEST_FAILED" | "PLUGIN_NOT_FOUND" | "PLUGIN_CONFIG_VALIDATION_FAILED" | "LINKED_IDENTITIES_EXIST";
15482
16354
  ApplicationNotInstalledError: {
15483
16355
  error: {
15484
16356
  /** @enum {string} */
@@ -15659,6 +16531,32 @@ interface components {
15659
16531
  /** @enum {string} */
15660
16532
  status: "approved" | "denied";
15661
16533
  };
16534
+ OAuthSession: {
16535
+ id: string;
16536
+ clientId: string;
16537
+ clientName: string;
16538
+ scopes: string[];
16539
+ /** Format: date-time */
16540
+ authorizedAt: string;
16541
+ /** Format: date-time */
16542
+ lastRefreshedAt: string;
16543
+ /** Format: date-time */
16544
+ expiresAt: string;
16545
+ };
16546
+ ListOAuthSessionsResponse: {
16547
+ oauthSessions: {
16548
+ id: string;
16549
+ clientId: string;
16550
+ clientName: string;
16551
+ scopes: string[];
16552
+ /** Format: date-time */
16553
+ authorizedAt: string;
16554
+ /** Format: date-time */
16555
+ lastRefreshedAt: string;
16556
+ /** Format: date-time */
16557
+ expiresAt: string;
16558
+ }[];
16559
+ };
15662
16560
  ClientInfoResponse: {
15663
16561
  clientId: string;
15664
16562
  name: string;
@@ -17218,12 +18116,24 @@ interface components {
17218
18116
  values: {
17219
18117
  [key: string]: unknown;
17220
18118
  };
18119
+ confirmLinkedIdentities?: boolean;
17221
18120
  };
17222
18121
  UpdatePluginConfigResponse: {
17223
18122
  /** @enum {boolean} */
17224
18123
  ok: true;
17225
18124
  hotReloaded: boolean;
17226
18125
  reconfigureFailed: boolean;
18126
+ verificationResults?: ({
18127
+ plugin: string;
18128
+ /** @enum {string} */
18129
+ status: "ok";
18130
+ } | {
18131
+ plugin: string;
18132
+ /** @enum {string} */
18133
+ status: "failed";
18134
+ /** @enum {string} */
18135
+ reason: "unreachable" | "auth-failed" | "resource-missing" | "write-denied" | "unknown";
18136
+ })[];
17227
18137
  };
17228
18138
  PluginNotFoundError: {
17229
18139
  error: {
@@ -17245,6 +18155,97 @@ interface components {
17245
18155
  };
17246
18156
  /** @enum {string} */
17247
18157
  Capability: "oauth" | "oauth:auth-code" | "oauth:device" | "oauth:pkce" | "pat" | "pages" | "comments" | "bookmarks" | "attachments" | "notifications" | "search" | "collab" | "collab:redis" | "link-card";
18158
+ PageHistoryResponse: {
18159
+ entries: components["schemas"]["PageHistoryEntry"][];
18160
+ nextCursor: string | null;
18161
+ tracking: components["schemas"]["PageHistoryTracking"];
18162
+ };
18163
+ PageHistoryEntry: components["schemas"]["PageHistoryContentRow"] | components["schemas"]["PageHistoryEventRow"];
18164
+ PageHistoryContentRow: {
18165
+ /** @example 66a1f2c3d4e5f60718293a4b */
18166
+ id: string;
18167
+ sequence: number | null;
18168
+ /** Format: date-time */
18169
+ occurredAt: string;
18170
+ actor: {
18171
+ _id: string;
18172
+ id?: string;
18173
+ username: string;
18174
+ name: string;
18175
+ /** Format: email */
18176
+ email: string;
18177
+ image?: string | null;
18178
+ createdAt: string;
18179
+ } | null;
18180
+ /**
18181
+ * @description discriminator enum property added by openapi-typescript
18182
+ * @enum {string}
18183
+ */
18184
+ type: "content_revision";
18185
+ revisionId: string;
18186
+ savedBy?: {
18187
+ _id: string;
18188
+ id?: string;
18189
+ username: string;
18190
+ name: string;
18191
+ /** Format: email */
18192
+ email: string;
18193
+ image?: string | null;
18194
+ createdAt: string;
18195
+ } | null;
18196
+ contributors?: {
18197
+ _id: string;
18198
+ id?: string;
18199
+ username: string;
18200
+ name: string;
18201
+ /** Format: email */
18202
+ email: string;
18203
+ image?: string | null;
18204
+ createdAt: string;
18205
+ }[];
18206
+ /** @enum {string} */
18207
+ editVia?: "web" | "oauth" | "pat";
18208
+ pending?: boolean;
18209
+ };
18210
+ PageHistoryEventRow: {
18211
+ /** @example 66a1f2c3d4e5f60718293a4b */
18212
+ id: string;
18213
+ sequence: number | null;
18214
+ /** Format: date-time */
18215
+ occurredAt: string;
18216
+ actor: {
18217
+ _id: string;
18218
+ id?: string;
18219
+ username: string;
18220
+ name: string;
18221
+ /** Format: email */
18222
+ email: string;
18223
+ image?: string | null;
18224
+ createdAt: string;
18225
+ } | null;
18226
+ /**
18227
+ * @description discriminator enum property added by openapi-typescript
18228
+ * @enum {string}
18229
+ */
18230
+ type: "page_event";
18231
+ /** @enum {string} */
18232
+ kind: "page_created" | "page_renamed" | "visibility_changed" | "page_trashed" | "page_restored" | "draft_published";
18233
+ payload: {
18234
+ [key: string]: unknown;
18235
+ };
18236
+ operationId: string | null;
18237
+ subtree?: boolean;
18238
+ pending?: boolean;
18239
+ };
18240
+ PageHistoryTracking: {
18241
+ /** @enum {string} */
18242
+ state: "ready";
18243
+ /** Format: date-time */
18244
+ trackingStartedAt: string;
18245
+ } | {
18246
+ /** @enum {string} */
18247
+ state: "untracked";
18248
+ };
17248
18249
  };
17249
18250
  responses: never;
17250
18251
  parameters: never;