@crowi/api-contract 2.0.0-alpha.12 → 2.0.0-alpha.14

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.
@@ -729,6 +729,884 @@ interface paths {
729
729
  patch?: never;
730
730
  trace?: never;
731
731
  };
732
+ "/auth/providers": {
733
+ parameters: {
734
+ query?: never;
735
+ header?: never;
736
+ path?: never;
737
+ cookie?: never;
738
+ };
739
+ /** List enabled OAuth2/OIDC federated sign-in providers */
740
+ get: {
741
+ parameters: {
742
+ query?: never;
743
+ header?: never;
744
+ path?: never;
745
+ cookie?: never;
746
+ };
747
+ requestBody?: never;
748
+ responses: {
749
+ /** @description Enabled providers, in name order */
750
+ 200: {
751
+ headers: {
752
+ [name: string]: unknown;
753
+ };
754
+ content: {
755
+ "application/json": {
756
+ providers: {
757
+ name: string;
758
+ buttonLabel: string;
759
+ iconUrl?: string;
760
+ }[];
761
+ };
762
+ };
763
+ };
764
+ /** @description Internal server error */
765
+ 500: {
766
+ headers: {
767
+ [name: string]: unknown;
768
+ };
769
+ content: {
770
+ "application/json": {
771
+ error: {
772
+ /** @enum {string} */
773
+ code: "INTERNAL_ERROR";
774
+ /** @enum {string} */
775
+ message: "Internal server error";
776
+ };
777
+ };
778
+ };
779
+ };
780
+ };
781
+ };
782
+ put?: never;
783
+ post?: never;
784
+ delete?: never;
785
+ options?: never;
786
+ head?: never;
787
+ patch?: never;
788
+ trace?: never;
789
+ };
790
+ "/auth/providers/{name}/start": {
791
+ parameters: {
792
+ query?: never;
793
+ header?: never;
794
+ path?: never;
795
+ cookie?: never;
796
+ };
797
+ /** Top-level navigation that redirects the browser to the named provider */
798
+ get: {
799
+ parameters: {
800
+ query: {
801
+ continue: string;
802
+ handoff_jwk: string;
803
+ handoff_proof: string;
804
+ link?: "1";
805
+ link_grant?: string;
806
+ };
807
+ header?: never;
808
+ path: {
809
+ name: string;
810
+ };
811
+ cookie?: never;
812
+ };
813
+ requestBody?: never;
814
+ responses: {
815
+ /** @description Redirect to the provider authorization endpoint */
816
+ 302: {
817
+ headers: {
818
+ [name: string]: unknown;
819
+ };
820
+ content?: never;
821
+ };
822
+ /** @description Malformed continue / sender proof, or an invalid/expired/mismatched link grant */
823
+ 400: {
824
+ headers: {
825
+ [name: string]: unknown;
826
+ };
827
+ content: {
828
+ "application/json": {
829
+ error: {
830
+ code: components["schemas"]["ErrorCode"];
831
+ message: string;
832
+ details?: unknown;
833
+ };
834
+ };
835
+ };
836
+ };
837
+ /** @description link=1 without a web-session JWT — never downgraded to the public sign-in start */
838
+ 401: {
839
+ headers: {
840
+ [name: string]: unknown;
841
+ };
842
+ content: {
843
+ "application/json": {
844
+ error: {
845
+ code: components["schemas"]["ErrorCode"];
846
+ message: string;
847
+ details?: unknown;
848
+ };
849
+ };
850
+ };
851
+ };
852
+ /** @description link=1 with a non-web credential (PAT / OAuth access token) */
853
+ 403: {
854
+ headers: {
855
+ [name: string]: unknown;
856
+ };
857
+ content: {
858
+ "application/json": {
859
+ error: {
860
+ code: components["schemas"]["ErrorCode"];
861
+ message: string;
862
+ details?: unknown;
863
+ };
864
+ };
865
+ };
866
+ };
867
+ /** @description Unknown, unconfigured, or credential-kind provider */
868
+ 404: {
869
+ headers: {
870
+ [name: string]: unknown;
871
+ };
872
+ content: {
873
+ "application/json": {
874
+ error: {
875
+ code: components["schemas"]["ErrorCode"];
876
+ message: string;
877
+ details?: unknown;
878
+ };
879
+ };
880
+ };
881
+ };
882
+ /** @description Internal server error */
883
+ 500: {
884
+ headers: {
885
+ [name: string]: unknown;
886
+ };
887
+ content: {
888
+ "application/json": {
889
+ error: {
890
+ /** @enum {string} */
891
+ code: "INTERNAL_ERROR";
892
+ /** @enum {string} */
893
+ message: "Internal server error";
894
+ };
895
+ };
896
+ };
897
+ };
898
+ };
899
+ };
900
+ put?: never;
901
+ post?: never;
902
+ delete?: never;
903
+ options?: never;
904
+ head?: never;
905
+ patch?: never;
906
+ trace?: never;
907
+ };
908
+ "/auth/providers/{name}/callback": {
909
+ parameters: {
910
+ query?: never;
911
+ header?: never;
912
+ path?: never;
913
+ cookie?: never;
914
+ };
915
+ /** Provider redirect target; completes the OAuth2/OIDC exchange */
916
+ get: {
917
+ parameters: {
918
+ query?: {
919
+ code?: string;
920
+ state?: string;
921
+ error?: string;
922
+ };
923
+ header?: never;
924
+ path: {
925
+ name: string;
926
+ };
927
+ cookie?: never;
928
+ };
929
+ requestBody?: never;
930
+ responses: {
931
+ /** @description Redirect to the trusted web login/complete page on success, or back to the trusted web /login on failure */
932
+ 302: {
933
+ headers: {
934
+ [name: string]: unknown;
935
+ };
936
+ content?: never;
937
+ };
938
+ /** @description Unknown or unconfigured provider (also used when trusted origins cannot be resolved) */
939
+ 404: {
940
+ headers: {
941
+ [name: string]: unknown;
942
+ };
943
+ content: {
944
+ "application/json": {
945
+ error: {
946
+ code: components["schemas"]["ErrorCode"];
947
+ message: string;
948
+ details?: unknown;
949
+ };
950
+ };
951
+ };
952
+ };
953
+ /** @description Internal server error */
954
+ 500: {
955
+ headers: {
956
+ [name: string]: unknown;
957
+ };
958
+ content: {
959
+ "application/json": {
960
+ error: {
961
+ /** @enum {string} */
962
+ code: "INTERNAL_ERROR";
963
+ /** @enum {string} */
964
+ message: "Internal server error";
965
+ };
966
+ };
967
+ };
968
+ };
969
+ };
970
+ };
971
+ put?: never;
972
+ post?: never;
973
+ delete?: never;
974
+ options?: never;
975
+ head?: never;
976
+ patch?: never;
977
+ trace?: never;
978
+ };
979
+ "/auth/handoff": {
980
+ parameters: {
981
+ query?: never;
982
+ header?: never;
983
+ path?: never;
984
+ cookie?: never;
985
+ };
986
+ get?: never;
987
+ put?: never;
988
+ /** Exchange a sender-constrained federated handoff code for session tokens */
989
+ post: {
990
+ parameters: {
991
+ query?: never;
992
+ header?: never;
993
+ path?: never;
994
+ cookie?: never;
995
+ };
996
+ requestBody?: {
997
+ content: {
998
+ "application/json": {
999
+ code: string;
1000
+ proof: {
1001
+ publicJwk: {
1002
+ /** @enum {string} */
1003
+ kty: "EC";
1004
+ /** @enum {string} */
1005
+ crv: "P-256";
1006
+ x: string;
1007
+ y: string;
1008
+ };
1009
+ signature: string;
1010
+ };
1011
+ };
1012
+ };
1013
+ };
1014
+ responses: {
1015
+ /** @description Session tokens — same shape as POST /auth/login */
1016
+ 200: {
1017
+ headers: {
1018
+ [name: string]: unknown;
1019
+ };
1020
+ content: {
1021
+ "application/json": {
1022
+ accessToken: string;
1023
+ refreshToken: string;
1024
+ expiresIn: number;
1025
+ user: {
1026
+ id: string;
1027
+ username: string;
1028
+ /** Format: email */
1029
+ email: string;
1030
+ name: string;
1031
+ image?: string;
1032
+ admin?: boolean;
1033
+ };
1034
+ };
1035
+ };
1036
+ };
1037
+ /** @description Invalid / expired handoff code, or sender proof did not verify */
1038
+ 401: {
1039
+ headers: {
1040
+ [name: string]: unknown;
1041
+ };
1042
+ content: {
1043
+ "application/json": {
1044
+ error: {
1045
+ code: components["schemas"]["ErrorCode"];
1046
+ message: string;
1047
+ details?: unknown;
1048
+ };
1049
+ };
1050
+ };
1051
+ };
1052
+ /** @description Handoff code already consumed */
1053
+ 409: {
1054
+ headers: {
1055
+ [name: string]: unknown;
1056
+ };
1057
+ content: {
1058
+ "application/json": {
1059
+ error: {
1060
+ code: components["schemas"]["ErrorCode"];
1061
+ message: string;
1062
+ details?: unknown;
1063
+ };
1064
+ };
1065
+ };
1066
+ };
1067
+ /** @description Internal server error */
1068
+ 500: {
1069
+ headers: {
1070
+ [name: string]: unknown;
1071
+ };
1072
+ content: {
1073
+ "application/json": {
1074
+ error: {
1075
+ /** @enum {string} */
1076
+ code: "INTERNAL_ERROR";
1077
+ /** @enum {string} */
1078
+ message: "Internal server error";
1079
+ };
1080
+ };
1081
+ };
1082
+ };
1083
+ };
1084
+ };
1085
+ delete?: never;
1086
+ options?: never;
1087
+ head?: never;
1088
+ patch?: never;
1089
+ trace?: never;
1090
+ };
1091
+ "/auth/providers/identities": {
1092
+ parameters: {
1093
+ query?: never;
1094
+ header?: never;
1095
+ path?: never;
1096
+ cookie?: never;
1097
+ };
1098
+ /** List the provider slugs the current user has linked */
1099
+ get: {
1100
+ parameters: {
1101
+ query?: never;
1102
+ header?: never;
1103
+ path?: never;
1104
+ cookie?: never;
1105
+ };
1106
+ requestBody?: never;
1107
+ responses: {
1108
+ /** @description Linked provider slugs, in name order */
1109
+ 200: {
1110
+ headers: {
1111
+ [name: string]: unknown;
1112
+ };
1113
+ content: {
1114
+ "application/json": {
1115
+ identities: {
1116
+ provider: string;
1117
+ }[];
1118
+ };
1119
+ };
1120
+ };
1121
+ /** @description Authentication required */
1122
+ 401: {
1123
+ headers: {
1124
+ [name: string]: unknown;
1125
+ };
1126
+ content: {
1127
+ "application/json": {
1128
+ error: {
1129
+ /** @enum {string} */
1130
+ code: "AUTHENTICATION_REQUIRED";
1131
+ /** @enum {string} */
1132
+ message: "Authentication is required";
1133
+ redirectTo?: string;
1134
+ };
1135
+ };
1136
+ };
1137
+ };
1138
+ /** @description Internal server error */
1139
+ 500: {
1140
+ headers: {
1141
+ [name: string]: unknown;
1142
+ };
1143
+ content: {
1144
+ "application/json": {
1145
+ error: {
1146
+ /** @enum {string} */
1147
+ code: "INTERNAL_ERROR";
1148
+ /** @enum {string} */
1149
+ message: "Internal server error";
1150
+ };
1151
+ };
1152
+ };
1153
+ };
1154
+ };
1155
+ };
1156
+ put?: never;
1157
+ post?: never;
1158
+ delete?: never;
1159
+ options?: never;
1160
+ head?: never;
1161
+ patch?: never;
1162
+ trace?: never;
1163
+ };
1164
+ "/auth/providers/{name}/link-grants": {
1165
+ parameters: {
1166
+ query?: never;
1167
+ header?: never;
1168
+ path?: never;
1169
+ cookie?: never;
1170
+ };
1171
+ get?: never;
1172
+ put?: never;
1173
+ /** Mint a short-lived, opaque grant that authorizes ONE link start for the current web session */
1174
+ post: {
1175
+ parameters: {
1176
+ query?: never;
1177
+ header?: never;
1178
+ path: {
1179
+ name: string;
1180
+ };
1181
+ cookie?: never;
1182
+ };
1183
+ requestBody?: {
1184
+ content: {
1185
+ "application/json": {
1186
+ handoffChallenge: string;
1187
+ };
1188
+ };
1189
+ };
1190
+ responses: {
1191
+ /** @description Opaque single-use grant id */
1192
+ 200: {
1193
+ headers: {
1194
+ [name: string]: unknown;
1195
+ };
1196
+ content: {
1197
+ "application/json": {
1198
+ linkGrant: string;
1199
+ };
1200
+ };
1201
+ };
1202
+ /** @description Authentication required */
1203
+ 401: {
1204
+ headers: {
1205
+ [name: string]: unknown;
1206
+ };
1207
+ content: {
1208
+ "application/json": {
1209
+ error: {
1210
+ /** @enum {string} */
1211
+ code: "AUTHENTICATION_REQUIRED";
1212
+ /** @enum {string} */
1213
+ message: "Authentication is required";
1214
+ redirectTo?: string;
1215
+ };
1216
+ };
1217
+ };
1218
+ };
1219
+ /** @description Non-web credential (PAT / OAuth access token) */
1220
+ 403: {
1221
+ headers: {
1222
+ [name: string]: unknown;
1223
+ };
1224
+ content: {
1225
+ "application/json": {
1226
+ error: {
1227
+ code: components["schemas"]["ErrorCode"];
1228
+ message: string;
1229
+ details?: unknown;
1230
+ };
1231
+ };
1232
+ };
1233
+ };
1234
+ /** @description Unknown, unconfigured, or credential-kind provider */
1235
+ 404: {
1236
+ headers: {
1237
+ [name: string]: unknown;
1238
+ };
1239
+ content: {
1240
+ "application/json": {
1241
+ error: {
1242
+ code: components["schemas"]["ErrorCode"];
1243
+ message: string;
1244
+ details?: unknown;
1245
+ };
1246
+ };
1247
+ };
1248
+ };
1249
+ /** @description Internal server error */
1250
+ 500: {
1251
+ headers: {
1252
+ [name: string]: unknown;
1253
+ };
1254
+ content: {
1255
+ "application/json": {
1256
+ error: {
1257
+ /** @enum {string} */
1258
+ code: "INTERNAL_ERROR";
1259
+ /** @enum {string} */
1260
+ message: "Internal server error";
1261
+ };
1262
+ };
1263
+ };
1264
+ };
1265
+ };
1266
+ };
1267
+ delete?: never;
1268
+ options?: never;
1269
+ head?: never;
1270
+ patch?: never;
1271
+ trace?: never;
1272
+ };
1273
+ "/auth/providers/{name}/identity": {
1274
+ parameters: {
1275
+ query?: never;
1276
+ header?: never;
1277
+ path?: never;
1278
+ cookie?: never;
1279
+ };
1280
+ get?: never;
1281
+ put?: never;
1282
+ post?: never;
1283
+ /** Disconnect the current user's identity for this provider */
1284
+ delete: {
1285
+ parameters: {
1286
+ query?: never;
1287
+ header?: never;
1288
+ path: {
1289
+ name: string;
1290
+ };
1291
+ cookie?: never;
1292
+ };
1293
+ requestBody?: never;
1294
+ responses: {
1295
+ /** @description Identity removed */
1296
+ 204: {
1297
+ headers: {
1298
+ [name: string]: unknown;
1299
+ };
1300
+ content?: never;
1301
+ };
1302
+ /** @description Authentication required */
1303
+ 401: {
1304
+ headers: {
1305
+ [name: string]: unknown;
1306
+ };
1307
+ content: {
1308
+ "application/json": {
1309
+ error: {
1310
+ /** @enum {string} */
1311
+ code: "AUTHENTICATION_REQUIRED";
1312
+ /** @enum {string} */
1313
+ message: "Authentication is required";
1314
+ redirectTo?: string;
1315
+ };
1316
+ };
1317
+ };
1318
+ };
1319
+ /** @description Non-web credential (PAT / OAuth access token) */
1320
+ 403: {
1321
+ headers: {
1322
+ [name: string]: unknown;
1323
+ };
1324
+ content: {
1325
+ "application/json": {
1326
+ error: {
1327
+ code: components["schemas"]["ErrorCode"];
1328
+ message: string;
1329
+ details?: unknown;
1330
+ };
1331
+ };
1332
+ };
1333
+ };
1334
+ /** @description No identity linked for this provider */
1335
+ 404: {
1336
+ headers: {
1337
+ [name: string]: unknown;
1338
+ };
1339
+ content: {
1340
+ "application/json": {
1341
+ error: {
1342
+ code: components["schemas"]["ErrorCode"];
1343
+ message: string;
1344
+ details?: unknown;
1345
+ };
1346
+ };
1347
+ };
1348
+ };
1349
+ /** @description Refused: password auth is disabled instance-wide, or this user has no password set */
1350
+ 409: {
1351
+ headers: {
1352
+ [name: string]: unknown;
1353
+ };
1354
+ content: {
1355
+ "application/json": {
1356
+ error: {
1357
+ /** @enum {string} */
1358
+ code: "FEDERATED_UNLINK_DISABLED" | "PASSWORD_REQUIRED";
1359
+ message: string;
1360
+ };
1361
+ };
1362
+ };
1363
+ };
1364
+ /** @description Internal server error */
1365
+ 500: {
1366
+ headers: {
1367
+ [name: string]: unknown;
1368
+ };
1369
+ content: {
1370
+ "application/json": {
1371
+ error: {
1372
+ /** @enum {string} */
1373
+ code: "INTERNAL_ERROR";
1374
+ /** @enum {string} */
1375
+ message: "Internal server error";
1376
+ };
1377
+ };
1378
+ };
1379
+ };
1380
+ };
1381
+ };
1382
+ options?: never;
1383
+ head?: never;
1384
+ patch?: never;
1385
+ trace?: never;
1386
+ };
1387
+ "/auth/federated-registration/{token}": {
1388
+ parameters: {
1389
+ query?: never;
1390
+ header?: never;
1391
+ path?: never;
1392
+ cookie?: never;
1393
+ };
1394
+ /** Read-only snapshot (email/provider/providerLabel) for a pending federated registration */
1395
+ get: {
1396
+ parameters: {
1397
+ query?: never;
1398
+ header?: never;
1399
+ path: {
1400
+ token: string;
1401
+ };
1402
+ cookie?: never;
1403
+ };
1404
+ requestBody?: never;
1405
+ responses: {
1406
+ /** @description Pending registration snapshot */
1407
+ 200: {
1408
+ headers: {
1409
+ [name: string]: unknown;
1410
+ };
1411
+ content: {
1412
+ "application/json": {
1413
+ /** Format: email */
1414
+ email: string;
1415
+ provider: string;
1416
+ providerLabel: string;
1417
+ approvalPending: boolean;
1418
+ };
1419
+ };
1420
+ };
1421
+ /** @description Grant is unknown, expired, or cancelled */
1422
+ 404: {
1423
+ headers: {
1424
+ [name: string]: unknown;
1425
+ };
1426
+ content: {
1427
+ "application/json": {
1428
+ error: {
1429
+ code: components["schemas"]["ErrorCode"];
1430
+ message: string;
1431
+ details?: unknown;
1432
+ };
1433
+ };
1434
+ };
1435
+ };
1436
+ /** @description Internal server error */
1437
+ 500: {
1438
+ headers: {
1439
+ [name: string]: unknown;
1440
+ };
1441
+ content: {
1442
+ "application/json": {
1443
+ error: {
1444
+ /** @enum {string} */
1445
+ code: "INTERNAL_ERROR";
1446
+ /** @enum {string} */
1447
+ message: "Internal server error";
1448
+ };
1449
+ };
1450
+ };
1451
+ };
1452
+ };
1453
+ };
1454
+ put?: never;
1455
+ /** Submit the chosen username; provisions the User (JIT) and activates or queues approval */
1456
+ post: {
1457
+ parameters: {
1458
+ query?: never;
1459
+ header?: never;
1460
+ path: {
1461
+ token: string;
1462
+ };
1463
+ cookie?: never;
1464
+ };
1465
+ requestBody?: {
1466
+ content: {
1467
+ "application/json": {
1468
+ username: string;
1469
+ };
1470
+ };
1471
+ };
1472
+ responses: {
1473
+ /** @description Open: account is active — a Phase 1 handoff code, redeemed via POST /auth/handoff. Restricted: awaiting admin approval. */
1474
+ 200: {
1475
+ headers: {
1476
+ [name: string]: unknown;
1477
+ };
1478
+ content: {
1479
+ "application/json": {
1480
+ /** @enum {string} */
1481
+ status: "active";
1482
+ code: string;
1483
+ } | {
1484
+ /** @enum {string} */
1485
+ status: "approval_required";
1486
+ };
1487
+ };
1488
+ };
1489
+ /** @description Username fails the shared username contract */
1490
+ 400: {
1491
+ headers: {
1492
+ [name: string]: unknown;
1493
+ };
1494
+ content: {
1495
+ "application/json": {
1496
+ error: {
1497
+ code: components["schemas"]["ErrorCode"];
1498
+ message: string;
1499
+ details?: unknown;
1500
+ };
1501
+ };
1502
+ };
1503
+ };
1504
+ /** @description Grant is unknown, expired, or cancelled */
1505
+ 404: {
1506
+ headers: {
1507
+ [name: string]: unknown;
1508
+ };
1509
+ content: {
1510
+ "application/json": {
1511
+ error: {
1512
+ code: components["schemas"]["ErrorCode"];
1513
+ message: string;
1514
+ details?: unknown;
1515
+ };
1516
+ };
1517
+ };
1518
+ };
1519
+ /** @description Username/email already taken, or the identity is already linked to a different user */
1520
+ 409: {
1521
+ headers: {
1522
+ [name: string]: unknown;
1523
+ };
1524
+ content: {
1525
+ "application/json": {
1526
+ error: {
1527
+ code: components["schemas"]["ErrorCode"];
1528
+ message: string;
1529
+ details?: unknown;
1530
+ };
1531
+ };
1532
+ };
1533
+ };
1534
+ /** @description Internal server error */
1535
+ 500: {
1536
+ headers: {
1537
+ [name: string]: unknown;
1538
+ };
1539
+ content: {
1540
+ "application/json": {
1541
+ error: {
1542
+ /** @enum {string} */
1543
+ code: "INTERNAL_ERROR";
1544
+ /** @enum {string} */
1545
+ message: "Internal server error";
1546
+ };
1547
+ };
1548
+ };
1549
+ };
1550
+ };
1551
+ };
1552
+ delete?: never;
1553
+ options?: never;
1554
+ head?: never;
1555
+ patch?: never;
1556
+ trace?: never;
1557
+ };
1558
+ "/auth/federated-registration/{token}/logout": {
1559
+ parameters: {
1560
+ query?: never;
1561
+ header?: never;
1562
+ path?: never;
1563
+ cookie?: never;
1564
+ };
1565
+ get?: never;
1566
+ put?: never;
1567
+ /** Cancel a pending federated registration and invalidate the grant */
1568
+ post: {
1569
+ parameters: {
1570
+ query?: never;
1571
+ header?: never;
1572
+ path: {
1573
+ token: string;
1574
+ };
1575
+ cookie?: never;
1576
+ };
1577
+ requestBody?: never;
1578
+ responses: {
1579
+ /** @description Grant cancelled (or was already inactive) — idempotent */
1580
+ 204: {
1581
+ headers: {
1582
+ [name: string]: unknown;
1583
+ };
1584
+ content?: never;
1585
+ };
1586
+ /** @description Internal server error */
1587
+ 500: {
1588
+ headers: {
1589
+ [name: string]: unknown;
1590
+ };
1591
+ content: {
1592
+ "application/json": {
1593
+ error: {
1594
+ /** @enum {string} */
1595
+ code: "INTERNAL_ERROR";
1596
+ /** @enum {string} */
1597
+ message: "Internal server error";
1598
+ };
1599
+ };
1600
+ };
1601
+ };
1602
+ };
1603
+ };
1604
+ delete?: never;
1605
+ options?: never;
1606
+ head?: never;
1607
+ patch?: never;
1608
+ trace?: never;
1609
+ };
732
1610
  "/invite/accept": {
733
1611
  parameters: {
734
1612
  query?: never;
@@ -971,6 +1849,7 @@ interface paths {
971
1849
  introduction?: string;
972
1850
  hasPassword: boolean;
973
1851
  createdAt: string;
1852
+ federated: boolean;
974
1853
  emailChangePending?: boolean;
975
1854
  };
976
1855
  };
@@ -1036,6 +1915,7 @@ interface paths {
1036
1915
  introduction?: string;
1037
1916
  hasPassword: boolean;
1038
1917
  createdAt: string;
1918
+ federated: boolean;
1039
1919
  emailChangePending?: boolean;
1040
1920
  };
1041
1921
  };
@@ -9507,8 +10387,6 @@ interface paths {
9507
10387
  /** Format: binary */
9508
10388
  file?: string;
9509
10389
  pageId?: string;
9510
- /** @enum {string} */
9511
- intent?: "paste" | "dnd";
9512
10390
  };
9513
10391
  };
9514
10392
  };
@@ -9576,7 +10454,7 @@ interface paths {
9576
10454
  };
9577
10455
  };
9578
10456
  };
9579
- /** @description Body exceeds the per-intent size cap */
10457
+ /** @description Body exceeds the unified upload size cap */
9580
10458
  413: {
9581
10459
  headers: {
9582
10460
  [name: string]: unknown;
@@ -9894,6 +10772,71 @@ interface paths {
9894
10772
  patch?: never;
9895
10773
  trace?: never;
9896
10774
  };
10775
+ "/attachments/upload-policy": {
10776
+ parameters: {
10777
+ query?: never;
10778
+ header?: never;
10779
+ path?: never;
10780
+ cookie?: never;
10781
+ };
10782
+ /** Get the server upload policy (allowed MIME types, extension hints, size limits) */
10783
+ get: {
10784
+ parameters: {
10785
+ query?: never;
10786
+ header?: never;
10787
+ path?: never;
10788
+ cookie?: never;
10789
+ };
10790
+ requestBody?: never;
10791
+ responses: {
10792
+ /** @description Current upload policy, derived from server-side constants (never a value maintained separately) */
10793
+ 200: {
10794
+ headers: {
10795
+ [name: string]: unknown;
10796
+ };
10797
+ content: {
10798
+ "application/json": {
10799
+ allowedMimeTypes: string[];
10800
+ extensionHints: {
10801
+ [key: string]: string;
10802
+ };
10803
+ maxBytes: {
10804
+ attachment: number;
10805
+ };
10806
+ profilePicture: {
10807
+ allowedMimeTypes: string[];
10808
+ maxBytes: number;
10809
+ };
10810
+ };
10811
+ };
10812
+ };
10813
+ /** @description Authentication required */
10814
+ 401: {
10815
+ headers: {
10816
+ [name: string]: unknown;
10817
+ };
10818
+ content: {
10819
+ "application/json": {
10820
+ error: {
10821
+ /** @enum {string} */
10822
+ code: "AUTHENTICATION_REQUIRED";
10823
+ /** @enum {string} */
10824
+ message: "Authentication is required";
10825
+ redirectTo?: string;
10826
+ };
10827
+ };
10828
+ };
10829
+ };
10830
+ };
10831
+ };
10832
+ put?: never;
10833
+ post?: never;
10834
+ delete?: never;
10835
+ options?: never;
10836
+ head?: never;
10837
+ patch?: never;
10838
+ trace?: never;
10839
+ };
9897
10840
  "/search": {
9898
10841
  parameters: {
9899
10842
  query?: never;
@@ -11090,7 +12033,7 @@ interface paths {
11090
12033
  };
11091
12034
  };
11092
12035
  };
11093
- /** @description Test mail dispatch failed (SMTP error) */
12036
+ /** @description Test mail dispatch failed (mail dispatch failure — e.g. sender/transport error, or the mail sender address is not configured) */
11094
12037
  502: {
11095
12038
  headers: {
11096
12039
  [name: string]: unknown;
@@ -11098,9 +12041,15 @@ interface paths {
11098
12041
  content: {
11099
12042
  "application/json": {
11100
12043
  error: {
12044
+ /** @enum {string} */
12045
+ code: "MAIL_FROM_NOT_CONFIGURED";
12046
+ /** @enum {string} */
12047
+ message: "The mail sender address is not configured.";
12048
+ } | {
11101
12049
  /** @enum {string} */
11102
12050
  code: "MAIL_TEST_FAILED";
11103
- message: string;
12051
+ /** @enum {string} */
12052
+ message: "Failed to send the test email. Check the active mail sender configuration." | "No email address on the calling user";
11104
12053
  };
11105
12054
  };
11106
12055
  };
@@ -13384,7 +14333,7 @@ interface paths {
13384
14333
  path?: never;
13385
14334
  cookie?: never;
13386
14335
  };
13387
- /** List active plugins missing required readiness config fields */
14336
+ /** List active plugins and core config missing required readiness fields */
13388
14337
  get: {
13389
14338
  parameters: {
13390
14339
  query?: never;
@@ -13394,7 +14343,7 @@ interface paths {
13394
14343
  };
13395
14344
  requestBody?: never;
13396
14345
  responses: {
13397
- /** @description Readiness issues for active plugins (empty when everything is configured) */
14346
+ /** @description Readiness issues for active plugins and core config (empty when everything is configured) */
13398
14347
  200: {
13399
14348
  headers: {
13400
14349
  [name: string]: unknown;
@@ -13402,13 +14351,11 @@ interface paths {
13402
14351
  content: {
13403
14352
  "application/json": {
13404
14353
  issues: {
13405
- name: string;
13406
- adminPlacement: {
13407
- /** @enum {string} */
13408
- section: "settings" | "shared" | "storage" | "mail" | "notification" | "auth" | "search" | "renderer" | "platform";
13409
- label: string;
13410
- icon?: string;
13411
- };
14354
+ id: string;
14355
+ /** @enum {string} */
14356
+ source: "plugin" | "core";
14357
+ label: string;
14358
+ href: string;
13412
14359
  fields: {
13413
14360
  name: string;
13414
14361
  /** @enum {boolean} */
@@ -14140,7 +15087,7 @@ interface components {
14140
15087
  };
14141
15088
  };
14142
15089
  /** @enum {string} */
14143
- 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" | "ENCRYPTION_NOT_CONFIGURED" | "MAIL_TEST_FAILED" | "PLUGIN_NOT_FOUND" | "PLUGIN_CONFIG_VALIDATION_FAILED";
15090
+ 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" | "ENCRYPTION_NOT_CONFIGURED" | "MAIL_FROM_NOT_CONFIGURED" | "MAIL_TEST_FAILED" | "PLUGIN_NOT_FOUND" | "PLUGIN_CONFIG_VALIDATION_FAILED";
14144
15091
  ApplicationNotInstalledError: {
14145
15092
  error: {
14146
15093
  /** @enum {string} */
@@ -15766,9 +16713,15 @@ interface components {
15766
16713
  };
15767
16714
  SendTestMailError: {
15768
16715
  error: {
16716
+ /** @enum {string} */
16717
+ code: "MAIL_FROM_NOT_CONFIGURED";
16718
+ /** @enum {string} */
16719
+ message: "The mail sender address is not configured.";
16720
+ } | {
15769
16721
  /** @enum {string} */
15770
16722
  code: "MAIL_TEST_FAILED";
15771
- message: string;
16723
+ /** @enum {string} */
16724
+ message: "Failed to send the test email. Check the active mail sender configuration." | "No email address on the calling user";
15772
16725
  };
15773
16726
  };
15774
16727
  MailSettingsValidationError: {