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

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
  };
@@ -11090,7 +11970,7 @@ interface paths {
11090
11970
  };
11091
11971
  };
11092
11972
  };
11093
- /** @description Test mail dispatch failed (SMTP error) */
11973
+ /** @description Test mail dispatch failed (mail dispatch failure — e.g. sender/transport error, or the mail sender address is not configured) */
11094
11974
  502: {
11095
11975
  headers: {
11096
11976
  [name: string]: unknown;
@@ -11098,9 +11978,15 @@ interface paths {
11098
11978
  content: {
11099
11979
  "application/json": {
11100
11980
  error: {
11981
+ /** @enum {string} */
11982
+ code: "MAIL_FROM_NOT_CONFIGURED";
11983
+ /** @enum {string} */
11984
+ message: "The mail sender address is not configured.";
11985
+ } | {
11101
11986
  /** @enum {string} */
11102
11987
  code: "MAIL_TEST_FAILED";
11103
- message: string;
11988
+ /** @enum {string} */
11989
+ message: "Failed to send the test email. Check the active mail sender configuration." | "No email address on the calling user";
11104
11990
  };
11105
11991
  };
11106
11992
  };
@@ -13384,7 +14270,7 @@ interface paths {
13384
14270
  path?: never;
13385
14271
  cookie?: never;
13386
14272
  };
13387
- /** List active plugins missing required readiness config fields */
14273
+ /** List active plugins and core config missing required readiness fields */
13388
14274
  get: {
13389
14275
  parameters: {
13390
14276
  query?: never;
@@ -13394,7 +14280,7 @@ interface paths {
13394
14280
  };
13395
14281
  requestBody?: never;
13396
14282
  responses: {
13397
- /** @description Readiness issues for active plugins (empty when everything is configured) */
14283
+ /** @description Readiness issues for active plugins and core config (empty when everything is configured) */
13398
14284
  200: {
13399
14285
  headers: {
13400
14286
  [name: string]: unknown;
@@ -13402,13 +14288,11 @@ interface paths {
13402
14288
  content: {
13403
14289
  "application/json": {
13404
14290
  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
- };
14291
+ id: string;
14292
+ /** @enum {string} */
14293
+ source: "plugin" | "core";
14294
+ label: string;
14295
+ href: string;
13412
14296
  fields: {
13413
14297
  name: string;
13414
14298
  /** @enum {boolean} */
@@ -14140,7 +15024,7 @@ interface components {
14140
15024
  };
14141
15025
  };
14142
15026
  /** @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";
15027
+ 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
15028
  ApplicationNotInstalledError: {
14145
15029
  error: {
14146
15030
  /** @enum {string} */
@@ -15766,9 +16650,15 @@ interface components {
15766
16650
  };
15767
16651
  SendTestMailError: {
15768
16652
  error: {
16653
+ /** @enum {string} */
16654
+ code: "MAIL_FROM_NOT_CONFIGURED";
16655
+ /** @enum {string} */
16656
+ message: "The mail sender address is not configured.";
16657
+ } | {
15769
16658
  /** @enum {string} */
15770
16659
  code: "MAIL_TEST_FAILED";
15771
- message: string;
16660
+ /** @enum {string} */
16661
+ message: "Failed to send the test email. Check the active mail sender configuration." | "No email address on the calling user";
15772
16662
  };
15773
16663
  };
15774
16664
  MailSettingsValidationError: {