@brigadasos/nadeshiko-sdk 1.4.3-dev.cb99a26 → 1.4.3-dev.d3424ba

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.
@@ -77,6 +77,15 @@ export type SearchFilters = {
77
77
  */
78
78
  max?: number;
79
79
  };
80
+ /**
81
+ * Language inclusion/exclusion for search matching
82
+ */
83
+ languages?: {
84
+ /**
85
+ * Language codes to exclude from search matching (e.g., ["en"], ["es"], ["en","es"])
86
+ */
87
+ exclude?: Array<'en' | 'es'>;
88
+ };
80
89
  };
81
90
  /**
82
91
  * Resource to expand in the response includes block
@@ -99,11 +108,11 @@ export type SearchRequest = {
99
108
  /**
100
109
  * Max amount of entries by response
101
110
  */
102
- limit?: number;
111
+ take?: number;
103
112
  /**
104
- * Current page of search
113
+ * Opaque cursor token returned from the previous search page
105
114
  */
106
- cursor?: Array<number>;
115
+ cursor?: string;
107
116
  /**
108
117
  * Sort configuration
109
118
  */
@@ -238,9 +247,10 @@ export type ExternalId = {
238
247
  */
239
248
  export type Seiyuu = {
240
249
  /**
241
- * AniList staff ID
250
+ * Internal seiyuu ID
242
251
  */
243
252
  id: number;
253
+ externalIds: ExternalId;
244
254
  /**
245
255
  * Japanese name of the voice actor
246
256
  */
@@ -372,9 +382,9 @@ export type PaginationInfo = {
372
382
  */
373
383
  estimatedTotalHitsRelation?: 'EXACT' | 'LOWER_BOUND';
374
384
  /**
375
- * Cursor for fetching the next page (undefined when hasMore is false)
385
+ * Opaque cursor token for fetching the next page (`null` when hasMore is false)
376
386
  */
377
- cursor?: Array<number>;
387
+ cursor?: string;
378
388
  };
379
389
  export type SearchResponse = {
380
390
  segments?: Array<Segment>;
@@ -694,30 +704,27 @@ export type SearchMultipleResponse = {
694
704
  */
695
705
  export type MediaIncludeExpansion = 'media' | 'media.characters';
696
706
  /**
697
- * Cursor pagination metadata
707
+ * Opaque cursor pagination metadata
698
708
  */
699
- export type CursorPagination = {
709
+ export type OpaqueCursorPagination = {
700
710
  /**
701
711
  * Whether more results are available
702
712
  */
703
713
  hasMore: boolean;
704
714
  /**
705
- * Cursor for the next page (`null` when `hasMore` is `false`)
715
+ * Opaque token for the next page (`null` when `hasMore` is `false`)
706
716
  */
707
- cursor: number;
717
+ cursor: string;
708
718
  };
709
719
  export type MediaListResponse = {
710
720
  media: Array<Media>;
711
- pagination: CursorPagination;
721
+ pagination: OpaqueCursorPagination;
712
722
  };
713
723
  /**
714
724
  * Character data for creating/updating media
715
725
  */
716
726
  export type CharacterInput = {
717
- /**
718
- * AniList character ID
719
- */
720
- id: number;
727
+ externalIds: ExternalId;
721
728
  /**
722
729
  * Japanese name of the character
723
730
  */
@@ -734,22 +741,21 @@ export type CharacterInput = {
734
741
  * Character's role in the media
735
742
  */
736
743
  role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
737
- /**
738
- * AniList staff ID for the Japanese voice actor
739
- */
740
- seiyuuId: number;
741
- /**
742
- * Japanese name of the voice actor
743
- */
744
- seiyuuNameJa: string;
745
- /**
746
- * English name of the voice actor
747
- */
748
- seiyuuNameEn: string;
749
- /**
750
- * Voice actor profile image URL
751
- */
752
- seiyuuImageUrl: string;
744
+ seiyuu: {
745
+ externalIds: ExternalId;
746
+ /**
747
+ * Japanese name of the voice actor
748
+ */
749
+ nameJa: string;
750
+ /**
751
+ * English name of the voice actor
752
+ */
753
+ nameEn: string;
754
+ /**
755
+ * Voice actor profile image URL
756
+ */
757
+ imageUrl: string;
758
+ };
753
759
  };
754
760
  /**
755
761
  * Request body for creating a new media entry
@@ -860,6 +866,9 @@ export type Error409 = {
860
866
  [key: string]: string;
861
867
  };
862
868
  };
869
+ export type MediaAutocompleteResponse = {
870
+ media: Array<Media>;
871
+ };
863
872
  /**
864
873
  * Not Found error response
865
874
  */
@@ -895,205 +904,14 @@ export type Error404 = {
895
904
  [key: string]: string;
896
905
  };
897
906
  };
898
- /**
899
- * Request body for updating an existing media entry (all fields optional)
900
- */
901
- export type MediaUpdateRequest = {
902
- externalIds?: ExternalId;
903
- /**
904
- * Original Japanese name of the media
905
- */
906
- nameJa?: string;
907
- /**
908
- * Romaji transliteration of the media name
909
- */
910
- nameRomaji?: string;
911
- /**
912
- * English name of the media
913
- */
914
- nameEn?: string;
915
- /**
916
- * Format of the media release (e.g., TV, OVA, Movie)
917
- */
918
- airingFormat?: string;
919
- /**
920
- * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
921
- */
922
- airingStatus?: string;
923
- /**
924
- * List of genres associated with the media
925
- */
926
- genres?: Array<string>;
927
- /**
928
- * Storage backend for media assets
929
- */
930
- storage?: 'LOCAL' | 'R2';
931
- /**
932
- * Start date of the media (first airing/release)
933
- */
934
- startDate?: string;
935
- /**
936
- * End date of the media (last airing/release)
937
- */
938
- endDate?: string;
939
- /**
940
- * Media category
941
- */
942
- category?: 'ANIME' | 'JDRAMA';
943
- /**
944
- * Version of the media-sub-splitter used
945
- */
946
- version?: string;
947
- /**
948
- * Hash salt used when generating the hash for the related media assets
949
- */
950
- hashSalt?: string;
951
- /**
952
- * Animation studio that produced the media
953
- */
954
- studio?: string;
955
- /**
956
- * Airing season label for the media
957
- */
958
- seasonName?: string;
959
- /**
960
- * Airing year for the media
961
- */
962
- seasonYear?: number;
963
- /**
964
- * Base path for R2/CDN storage (e.g. "media/21459")
965
- */
966
- storageBasePath?: string;
967
- /**
968
- * List of characters appearing in the media with their voice actors
969
- */
970
- characters?: Array<CharacterInput>;
971
- /**
972
- * Total number of subtitle segments available
973
- */
974
- segmentCount?: number;
975
- };
976
- export type Episode = {
977
- /**
978
- * ID of the media this episode belongs to
979
- */
980
- mediaId: number;
981
- /**
982
- * Episode number within the media
983
- */
984
- episodeNumber: number;
985
- /**
986
- * English title of the episode
987
- */
988
- titleEn?: string;
989
- /**
990
- * Romanized title of the episode
991
- */
992
- titleRomaji?: string;
993
- /**
994
- * Japanese title of the episode
995
- */
996
- titleJa?: string;
997
- /**
998
- * Episode description or synopsis
999
- */
1000
- description?: string;
1001
- /**
1002
- * When the episode originally aired
1003
- */
1004
- airedAt?: string;
1005
- /**
1006
- * Episode duration in seconds
1007
- */
1008
- lengthSeconds?: number;
1009
- /**
1010
- * URL to episode thumbnail image
1011
- */
1012
- thumbnailUrl?: string;
1013
- /**
1014
- * Number of segments in this episode
1015
- */
1016
- segmentCount: number;
1017
- };
1018
- export type EpisodeListResponse = {
1019
- /**
1020
- * Array of episode objects
1021
- */
1022
- episodes: Array<Episode>;
1023
- pagination: CursorPagination;
1024
- };
1025
- export type EpisodeCreateRequest = {
1026
- /**
1027
- * English title of the episode
1028
- */
1029
- titleEn?: string;
1030
- /**
1031
- * Romanized title of the episode
1032
- */
1033
- titleRomaji?: string;
1034
- /**
1035
- * Japanese title of the episode
1036
- */
1037
- titleJa?: string;
1038
- /**
1039
- * Episode description or synopsis
1040
- */
1041
- description?: string;
1042
- /**
1043
- * When the episode originally aired
1044
- */
1045
- airedAt?: string;
1046
- /**
1047
- * Episode duration in seconds
1048
- */
1049
- lengthSeconds?: number;
1050
- /**
1051
- * URL to episode thumbnail image
1052
- */
1053
- thumbnailUrl?: string;
1054
- /**
1055
- * Episode number within the media (must be unique for this media)
1056
- */
1057
- episodeNumber: number;
1058
- };
1059
907
  /**
1060
908
  * All fields are optional for partial updates
1061
909
  */
1062
- export type EpisodeUpdateRequest = {
1063
- /**
1064
- * English title of the episode
1065
- */
1066
- titleEn?: string;
1067
- /**
1068
- * Romanized title of the episode
1069
- */
1070
- titleRomaji?: string;
1071
- /**
1072
- * Japanese title of the episode
1073
- */
1074
- titleJa?: string;
1075
- /**
1076
- * Episode description or synopsis
1077
- */
1078
- description?: string;
1079
- /**
1080
- * When the episode originally aired
1081
- */
1082
- airedAt?: string;
1083
- /**
1084
- * Episode duration in seconds
1085
- */
1086
- lengthSeconds?: number;
1087
- /**
1088
- * URL to episode thumbnail image
1089
- */
1090
- thumbnailUrl?: string;
1091
- };
1092
- export type SegmentCreateRequest = {
910
+ export type SegmentUpdateRequest = {
1093
911
  /**
1094
912
  * Position of the segment within the episode
1095
913
  */
1096
- position: number;
914
+ position?: number;
1097
915
  /**
1098
916
  * Segment status
1099
917
  */
@@ -1101,12 +919,12 @@ export type SegmentCreateRequest = {
1101
919
  /**
1102
920
  * Start time of the segment in milliseconds from the beginning of the episode
1103
921
  */
1104
- startTimeMs: number;
922
+ startTimeMs?: number;
1105
923
  /**
1106
924
  * End time of the segment in milliseconds from the beginning of the episode
1107
925
  */
1108
- endTimeMs: number;
1109
- textJa: {
926
+ endTimeMs?: number;
927
+ textJa?: {
1110
928
  /**
1111
929
  * Original Japanese content of the segment
1112
930
  */
@@ -1148,11 +966,11 @@ export type SegmentCreateRequest = {
1148
966
  /**
1149
967
  * Storage backend for segment assets
1150
968
  */
1151
- storage: 'LOCAL' | 'R2';
969
+ storage?: 'LOCAL' | 'R2';
1152
970
  /**
1153
971
  * Hash identifier for the segment (from segment JSON)
1154
972
  */
1155
- hashedId: string;
973
+ hashedId?: string;
1156
974
  };
1157
975
  /**
1158
976
  * Segment with internal fields (for internal API responses)
@@ -1183,91 +1001,23 @@ export type SegmentInternal = Segment & {
1183
1001
  [key: string]: unknown;
1184
1002
  };
1185
1003
  };
1004
+ export type SegmentContextResponse = {
1005
+ segments: Array<Segment>;
1006
+ includes?: {
1007
+ /**
1008
+ * Media objects keyed by mediaId
1009
+ */
1010
+ media?: {
1011
+ [key: string]: Media;
1012
+ };
1013
+ };
1014
+ };
1186
1015
  /**
1187
- * All fields are optional for partial updates
1016
+ * Ordered media series grouping
1188
1017
  */
1189
- export type SegmentUpdateRequest = {
1018
+ export type Series = {
1190
1019
  /**
1191
- * Position of the segment within the episode
1192
- */
1193
- position?: number;
1194
- /**
1195
- * Segment status
1196
- */
1197
- status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
1198
- /**
1199
- * Start time of the segment in milliseconds from the beginning of the episode
1200
- */
1201
- startTimeMs?: number;
1202
- /**
1203
- * End time of the segment in milliseconds from the beginning of the episode
1204
- */
1205
- endTimeMs?: number;
1206
- textJa?: {
1207
- /**
1208
- * Original Japanese content of the segment
1209
- */
1210
- content?: string;
1211
- };
1212
- textEs?: {
1213
- /**
1214
- * Spanish translation of the segment content
1215
- */
1216
- content?: string;
1217
- /**
1218
- * Whether the Spanish translation was machine-translated
1219
- */
1220
- isMachineTranslated?: boolean;
1221
- };
1222
- textEn?: {
1223
- /**
1224
- * English translation of the segment content
1225
- */
1226
- content?: string;
1227
- /**
1228
- * Whether the English translation was machine-translated
1229
- */
1230
- isMachineTranslated?: boolean;
1231
- };
1232
- contentRating?: ContentRating;
1233
- /**
1234
- * Raw WD Tagger v3 classifier output used to derive content rating
1235
- */
1236
- ratingAnalysis?: {
1237
- [key: string]: unknown;
1238
- };
1239
- /**
1240
- * POS tokenization results keyed by engine (sudachi, unidic)
1241
- */
1242
- posAnalysis?: {
1243
- [key: string]: unknown;
1244
- };
1245
- /**
1246
- * Storage backend for segment assets
1247
- */
1248
- storage?: 'LOCAL' | 'R2';
1249
- /**
1250
- * Hash identifier for the segment (from segment JSON)
1251
- */
1252
- hashedId?: string;
1253
- };
1254
- export type SegmentContextResponse = {
1255
- segments: Array<Segment>;
1256
- includes?: {
1257
- /**
1258
- * Media objects keyed by mediaId
1259
- */
1260
- media?: {
1261
- [key: string]: Media;
1262
- };
1263
- };
1264
- };
1265
- /**
1266
- * Ordered media series grouping
1267
- */
1268
- export type Series = {
1269
- /**
1270
- * Series ID
1020
+ * Series ID
1271
1021
  */
1272
1022
  id: number;
1273
1023
  /**
@@ -1285,7 +1035,7 @@ export type Series = {
1285
1035
  };
1286
1036
  export type SeriesListResponse = {
1287
1037
  series: Array<Series>;
1288
- pagination: CursorPagination;
1038
+ pagination: OpaqueCursorPagination;
1289
1039
  };
1290
1040
  /**
1291
1041
  * Series with ordered media entries
@@ -1323,9 +1073,10 @@ export type SeriesWithMedia = {
1323
1073
  */
1324
1074
  export type Character = {
1325
1075
  /**
1326
- * AniList character ID
1076
+ * Internal character ID
1327
1077
  */
1328
1078
  id: number;
1079
+ externalIds: ExternalId;
1329
1080
  /**
1330
1081
  * Japanese name of the character
1331
1082
  */
@@ -1350,41 +1101,300 @@ export type CharacterWithMedia = Character & {
1350
1101
  mediaAppearances: Array<{
1351
1102
  media?: Media;
1352
1103
  /**
1353
- * Character role in this media
1104
+ * Character role in this media
1105
+ */
1106
+ role?: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1107
+ }>;
1108
+ };
1109
+ /**
1110
+ * Seiyuu details with optional character appearances
1111
+ */
1112
+ export type SeiyuuWithRoles = {
1113
+ /**
1114
+ * AniList staff ID
1115
+ */
1116
+ id: number;
1117
+ /**
1118
+ * Japanese name of the voice actor
1119
+ */
1120
+ nameJa: string;
1121
+ /**
1122
+ * English name of the voice actor
1123
+ */
1124
+ nameEn: string;
1125
+ /**
1126
+ * Profile image URL
1127
+ */
1128
+ imageUrl: string;
1129
+ /**
1130
+ * Characters voiced by this seiyuu with their media appearances
1131
+ */
1132
+ characters: Array<Character & {
1133
+ media: Media;
1134
+ /**
1135
+ * Character role in this media
1136
+ */
1137
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1138
+ }>;
1139
+ };
1140
+ /**
1141
+ * Request body for updating an existing media entry (all fields optional)
1142
+ */
1143
+ export type MediaUpdateRequest = {
1144
+ externalIds?: ExternalId;
1145
+ /**
1146
+ * Original Japanese name of the media
1147
+ */
1148
+ nameJa?: string;
1149
+ /**
1150
+ * Romaji transliteration of the media name
1151
+ */
1152
+ nameRomaji?: string;
1153
+ /**
1154
+ * English name of the media
1155
+ */
1156
+ nameEn?: string;
1157
+ /**
1158
+ * Format of the media release (e.g., TV, OVA, Movie)
1159
+ */
1160
+ airingFormat?: string;
1161
+ /**
1162
+ * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
1163
+ */
1164
+ airingStatus?: string;
1165
+ /**
1166
+ * List of genres associated with the media
1167
+ */
1168
+ genres?: Array<string>;
1169
+ /**
1170
+ * Storage backend for media assets
1171
+ */
1172
+ storage?: 'LOCAL' | 'R2';
1173
+ /**
1174
+ * Start date of the media (first airing/release)
1175
+ */
1176
+ startDate?: string;
1177
+ /**
1178
+ * End date of the media (last airing/release)
1179
+ */
1180
+ endDate?: string;
1181
+ /**
1182
+ * Media category
1183
+ */
1184
+ category?: 'ANIME' | 'JDRAMA';
1185
+ /**
1186
+ * Version of the media-sub-splitter used
1187
+ */
1188
+ version?: string;
1189
+ /**
1190
+ * Hash salt used when generating the hash for the related media assets
1191
+ */
1192
+ hashSalt?: string;
1193
+ /**
1194
+ * Animation studio that produced the media
1195
+ */
1196
+ studio?: string;
1197
+ /**
1198
+ * Airing season label for the media
1199
+ */
1200
+ seasonName?: string;
1201
+ /**
1202
+ * Airing year for the media
1203
+ */
1204
+ seasonYear?: number;
1205
+ /**
1206
+ * Base path for R2/CDN storage (e.g. "media/21459")
1207
+ */
1208
+ storageBasePath?: string;
1209
+ /**
1210
+ * List of characters appearing in the media with their voice actors
1211
+ */
1212
+ characters?: Array<CharacterInput>;
1213
+ /**
1214
+ * Total number of subtitle segments available
1215
+ */
1216
+ segmentCount?: number;
1217
+ };
1218
+ export type Episode = {
1219
+ /**
1220
+ * ID of the media this episode belongs to
1221
+ */
1222
+ mediaId: number;
1223
+ /**
1224
+ * Episode number within the media
1225
+ */
1226
+ episodeNumber: number;
1227
+ /**
1228
+ * English title of the episode
1229
+ */
1230
+ titleEn?: string;
1231
+ /**
1232
+ * Romanized title of the episode
1233
+ */
1234
+ titleRomaji?: string;
1235
+ /**
1236
+ * Japanese title of the episode
1237
+ */
1238
+ titleJa?: string;
1239
+ /**
1240
+ * Episode description or synopsis
1241
+ */
1242
+ description?: string;
1243
+ /**
1244
+ * When the episode originally aired
1245
+ */
1246
+ airedAt?: string;
1247
+ /**
1248
+ * Episode duration in seconds
1249
+ */
1250
+ lengthSeconds?: number;
1251
+ /**
1252
+ * URL to episode thumbnail image
1253
+ */
1254
+ thumbnailUrl?: string;
1255
+ /**
1256
+ * Number of segments in this episode
1257
+ */
1258
+ segmentCount: number;
1259
+ };
1260
+ export type EpisodeListResponse = {
1261
+ /**
1262
+ * Array of episode objects
1263
+ */
1264
+ episodes: Array<Episode>;
1265
+ pagination: OpaqueCursorPagination;
1266
+ };
1267
+ export type EpisodeCreateRequest = {
1268
+ /**
1269
+ * English title of the episode
1270
+ */
1271
+ titleEn?: string;
1272
+ /**
1273
+ * Romanized title of the episode
1274
+ */
1275
+ titleRomaji?: string;
1276
+ /**
1277
+ * Japanese title of the episode
1278
+ */
1279
+ titleJa?: string;
1280
+ /**
1281
+ * Episode description or synopsis
1282
+ */
1283
+ description?: string;
1284
+ /**
1285
+ * When the episode originally aired
1286
+ */
1287
+ airedAt?: string;
1288
+ /**
1289
+ * Episode duration in seconds
1290
+ */
1291
+ lengthSeconds?: number;
1292
+ /**
1293
+ * URL to episode thumbnail image
1294
+ */
1295
+ thumbnailUrl?: string;
1296
+ /**
1297
+ * Episode number within the media (must be unique for this media)
1298
+ */
1299
+ episodeNumber: number;
1300
+ };
1301
+ /**
1302
+ * All fields are optional for partial updates
1303
+ */
1304
+ export type EpisodeUpdateRequest = {
1305
+ /**
1306
+ * English title of the episode
1307
+ */
1308
+ titleEn?: string;
1309
+ /**
1310
+ * Romanized title of the episode
1311
+ */
1312
+ titleRomaji?: string;
1313
+ /**
1314
+ * Japanese title of the episode
1315
+ */
1316
+ titleJa?: string;
1317
+ /**
1318
+ * Episode description or synopsis
1319
+ */
1320
+ description?: string;
1321
+ /**
1322
+ * When the episode originally aired
1323
+ */
1324
+ airedAt?: string;
1325
+ /**
1326
+ * Episode duration in seconds
1327
+ */
1328
+ lengthSeconds?: number;
1329
+ /**
1330
+ * URL to episode thumbnail image
1331
+ */
1332
+ thumbnailUrl?: string;
1333
+ };
1334
+ export type SegmentCreateRequest = {
1335
+ /**
1336
+ * Position of the segment within the episode
1337
+ */
1338
+ position: number;
1339
+ /**
1340
+ * Segment status
1341
+ */
1342
+ status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
1343
+ /**
1344
+ * Start time of the segment in milliseconds from the beginning of the episode
1345
+ */
1346
+ startTimeMs: number;
1347
+ /**
1348
+ * End time of the segment in milliseconds from the beginning of the episode
1349
+ */
1350
+ endTimeMs: number;
1351
+ textJa: {
1352
+ /**
1353
+ * Original Japanese content of the segment
1354
+ */
1355
+ content?: string;
1356
+ };
1357
+ textEs?: {
1358
+ /**
1359
+ * Spanish translation of the segment content
1360
+ */
1361
+ content?: string;
1362
+ /**
1363
+ * Whether the Spanish translation was machine-translated
1354
1364
  */
1355
- role?: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1356
- }>;
1357
- };
1358
- /**
1359
- * Seiyuu details with optional character appearances
1360
- */
1361
- export type SeiyuuWithRoles = {
1362
- /**
1363
- * AniList staff ID
1364
- */
1365
- id: number;
1365
+ isMachineTranslated?: boolean;
1366
+ };
1367
+ textEn?: {
1368
+ /**
1369
+ * English translation of the segment content
1370
+ */
1371
+ content?: string;
1372
+ /**
1373
+ * Whether the English translation was machine-translated
1374
+ */
1375
+ isMachineTranslated?: boolean;
1376
+ };
1377
+ contentRating?: ContentRating;
1366
1378
  /**
1367
- * Japanese name of the voice actor
1379
+ * Raw WD Tagger v3 classifier output used to derive content rating
1368
1380
  */
1369
- nameJa: string;
1381
+ ratingAnalysis?: {
1382
+ [key: string]: unknown;
1383
+ };
1370
1384
  /**
1371
- * English name of the voice actor
1385
+ * POS tokenization results keyed by engine (sudachi, unidic)
1372
1386
  */
1373
- nameEn: string;
1387
+ posAnalysis?: {
1388
+ [key: string]: unknown;
1389
+ };
1374
1390
  /**
1375
- * Profile image URL
1391
+ * Storage backend for segment assets
1376
1392
  */
1377
- imageUrl: string;
1393
+ storage: 'LOCAL' | 'R2';
1378
1394
  /**
1379
- * Characters voiced by this seiyuu with their media appearances
1395
+ * Hash identifier for the segment (from segment JSON)
1380
1396
  */
1381
- characters: Array<Character & {
1382
- media: Media;
1383
- /**
1384
- * Character role in this media
1385
- */
1386
- role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1387
- }>;
1397
+ hashedId: string;
1388
1398
  };
1389
1399
  export type UserQuotaResponse = {
1390
1400
  /**
@@ -1422,37 +1432,53 @@ export type ReportTargetMedia = {
1422
1432
  */
1423
1433
  mediaId: number;
1424
1434
  };
1425
- export type ReportTargetEpisode = {
1435
+ export type ReportTargetSegment = {
1426
1436
  /**
1427
1437
  * Report target type
1428
1438
  */
1429
- type: 'EPISODE';
1439
+ type: 'SEGMENT';
1430
1440
  /**
1431
1441
  * Media ID this report targets
1432
1442
  */
1433
1443
  mediaId: number;
1434
1444
  /**
1435
- * Episode number this report targets
1445
+ * Episode number containing the segment
1436
1446
  */
1437
- episodeNumber: number;
1447
+ episodeNumber?: number;
1448
+ /**
1449
+ * Segment UUID this report targets
1450
+ */
1451
+ segmentUuid: string;
1438
1452
  };
1439
- export type ReportTargetSegment = {
1453
+ export type UserReportTarget = ({
1454
+ type: 'MEDIA';
1455
+ } & ReportTargetMedia) | ({
1456
+ type: 'SEGMENT';
1457
+ } & ReportTargetSegment);
1458
+ export type CreateReportRequest = {
1459
+ target: UserReportTarget;
1460
+ /**
1461
+ * Reason for the report
1462
+ */
1463
+ reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1464
+ /**
1465
+ * Optional description with additional details
1466
+ */
1467
+ description?: string;
1468
+ };
1469
+ export type ReportTargetEpisode = {
1440
1470
  /**
1441
1471
  * Report target type
1442
1472
  */
1443
- type: 'SEGMENT';
1473
+ type: 'EPISODE';
1444
1474
  /**
1445
1475
  * Media ID this report targets
1446
1476
  */
1447
1477
  mediaId: number;
1448
1478
  /**
1449
- * Episode number containing the segment
1450
- */
1451
- episodeNumber?: number;
1452
- /**
1453
- * Segment UUID this report targets
1479
+ * Episode number this report targets
1454
1480
  */
1455
- segmentUuid: string;
1481
+ episodeNumber: number;
1456
1482
  };
1457
1483
  export type ReportTarget = ({
1458
1484
  type: 'MEDIA';
@@ -1472,9 +1498,9 @@ export type Report = {
1472
1498
  source: 'USER' | 'AUTO';
1473
1499
  target: ReportTarget;
1474
1500
  /**
1475
- * ID of the auto-check run that created this report (AUTO only)
1501
+ * ID of the audit run that created this report (AUTO only)
1476
1502
  */
1477
- reviewCheckRunId?: number;
1503
+ auditRunId?: number;
1478
1504
  /**
1479
1505
  * Reason for the report
1480
1506
  */
@@ -1510,33 +1536,7 @@ export type Report = {
1510
1536
  */
1511
1537
  updatedAt?: string;
1512
1538
  };
1513
- export type ReportListResponse = {
1514
- reports: Array<Report>;
1515
- pagination: CursorPagination;
1516
- };
1517
- export type UserReportTarget = ({
1518
- type: 'MEDIA';
1519
- } & ReportTargetMedia) | ({
1520
- type: 'SEGMENT';
1521
- } & ReportTargetSegment);
1522
- export type CreateReportRequest = {
1523
- target: UserReportTarget;
1524
- /**
1525
- * Reason for the report
1526
- */
1527
- reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1528
- /**
1529
- * Optional description with additional details
1530
- */
1531
- description?: string;
1532
- };
1533
1539
  export type UserPreferences = {
1534
- /**
1535
- * Lab feature opt-in flags keyed by feature key
1536
- */
1537
- labs?: {
1538
- [key: string]: boolean;
1539
- };
1540
1540
  /**
1541
1541
  * Preferred language for media names display
1542
1542
  */
@@ -1650,32 +1650,32 @@ export type UserExportResponse = {
1650
1650
  };
1651
1651
  export type UserLabFeature = {
1652
1652
  /**
1653
- * Unique identifier for the lab feature
1653
+ * Unique identifier for the feature
1654
1654
  */
1655
1655
  key: string;
1656
1656
  /**
1657
- * Human-readable feature name
1657
+ * Human-readable feature name (only present for labs)
1658
1658
  */
1659
- name: string;
1659
+ name?: string;
1660
1660
  /**
1661
- * Description of what the feature does
1661
+ * Description of what the feature does (only present for labs)
1662
1662
  */
1663
- description: string;
1663
+ description?: string;
1664
1664
  /**
1665
- * Whether the feature is globally available
1665
+ * Whether this feature is currently active for the user
1666
1666
  */
1667
- enabled: boolean;
1667
+ active: boolean;
1668
1668
  /**
1669
- * Whether the user has opted in to this feature
1669
+ * Whether the user can toggle this feature (lab=true, flag=false)
1670
1670
  */
1671
- userEnabled: boolean;
1671
+ userControllable: boolean;
1672
1672
  };
1673
1673
  /**
1674
1674
  * Paginated collection list response
1675
1675
  */
1676
1676
  export type CollectionListResponse = {
1677
1677
  collections: Array<Collection>;
1678
- pagination: CursorPagination;
1678
+ pagination: OpaqueCursorPagination;
1679
1679
  };
1680
1680
  /**
1681
1681
  * Request body for creating a new collection
@@ -1736,7 +1736,7 @@ export type CollectionWithSegments = {
1736
1736
  * Total number of segments in the collection
1737
1737
  */
1738
1738
  totalCount: number;
1739
- pagination: CursorPagination;
1739
+ pagination: OpaqueCursorPagination;
1740
1740
  };
1741
1741
  /**
1742
1742
  * Request to reindex segments from the database into Elasticsearch
@@ -1818,7 +1818,7 @@ export type AdminReport = Report & {
1818
1818
  };
1819
1819
  export type AdminReportListResponse = {
1820
1820
  reports: Array<AdminReport>;
1821
- pagination: CursorPagination;
1821
+ pagination: OpaqueCursorPagination;
1822
1822
  };
1823
1823
  export type UpdateReportRequest = {
1824
1824
  /**
@@ -1830,41 +1830,13 @@ export type UpdateReportRequest = {
1830
1830
  */
1831
1831
  adminNotes?: string;
1832
1832
  };
1833
- export type RunReviewResponse = {
1834
- /**
1835
- * Category filter used
1836
- */
1837
- category: string;
1838
- checksRun: Array<{
1839
- /**
1840
- * Check identifier
1841
- */
1842
- checkName: string;
1843
- /**
1844
- * Human-readable check name
1845
- */
1846
- label: string;
1847
- /**
1848
- * Number of reports created
1849
- */
1850
- resultCount: number;
1851
- /**
1852
- * ID of the created run record
1853
- */
1854
- runId: number;
1855
- }>;
1856
- /**
1857
- * Total reports created across all checks
1858
- */
1859
- totalReports: number;
1860
- };
1861
- export type ReviewCheck = {
1833
+ export type MediaAudit = {
1862
1834
  /**
1863
- * Check ID
1835
+ * Audit ID
1864
1836
  */
1865
1837
  id: number;
1866
1838
  /**
1867
- * Unique check identifier
1839
+ * Unique audit identifier
1868
1840
  */
1869
1841
  name: string;
1870
1842
  /**
@@ -1872,11 +1844,11 @@ export type ReviewCheck = {
1872
1844
  */
1873
1845
  label: string;
1874
1846
  /**
1875
- * What this check does
1847
+ * What this audit does
1876
1848
  */
1877
1849
  description: string;
1878
1850
  /**
1879
- * What level this check operates on
1851
+ * What level this audit operates on
1880
1852
  */
1881
1853
  targetType: 'MEDIA' | 'EPISODE';
1882
1854
  /**
@@ -1886,7 +1858,7 @@ export type ReviewCheck = {
1886
1858
  [key: string]: unknown;
1887
1859
  };
1888
1860
  /**
1889
- * Whether this check is active
1861
+ * Whether this audit is active
1890
1862
  */
1891
1863
  enabled: boolean;
1892
1864
  /**
@@ -1901,7 +1873,7 @@ export type ReviewCheck = {
1901
1873
  max?: number;
1902
1874
  }>;
1903
1875
  /**
1904
- * Latest run info for this check
1876
+ * Latest run info for this audit
1905
1877
  */
1906
1878
  latestRun?: {
1907
1879
  id?: number;
@@ -1911,15 +1883,43 @@ export type ReviewCheck = {
1911
1883
  createdAt?: string;
1912
1884
  updatedAt?: string;
1913
1885
  };
1914
- export type ReviewCheckRun = {
1886
+ export type RunAuditResponse = {
1887
+ /**
1888
+ * Category filter used
1889
+ */
1890
+ category: string;
1891
+ checksRun: Array<{
1892
+ /**
1893
+ * Audit identifier
1894
+ */
1895
+ auditName: string;
1896
+ /**
1897
+ * Human-readable audit name
1898
+ */
1899
+ label: string;
1900
+ /**
1901
+ * Number of reports created
1902
+ */
1903
+ resultCount: number;
1904
+ /**
1905
+ * ID of the created run record
1906
+ */
1907
+ runId: number;
1908
+ }>;
1909
+ /**
1910
+ * Total reports created across all audits
1911
+ */
1912
+ totalReports: number;
1913
+ };
1914
+ export type MediaAuditRun = {
1915
1915
  /**
1916
1916
  * Run ID
1917
1917
  */
1918
1918
  id: number;
1919
1919
  /**
1920
- * Name of the check that was run
1920
+ * Name of the audit that was run
1921
1921
  */
1922
- checkName: string;
1922
+ auditName: string;
1923
1923
  /**
1924
1924
  * Category filter used (ANIME/JDRAMA) or null for all
1925
1925
  */
@@ -1939,32 +1939,6 @@ export type ReviewCheckRun = {
1939
1939
  */
1940
1940
  createdAt: string;
1941
1941
  };
1942
- export type ReviewAllowlist = {
1943
- /**
1944
- * Allowlist entry ID
1945
- */
1946
- id: number;
1947
- /**
1948
- * Name of the check this entry applies to
1949
- */
1950
- checkName: string;
1951
- /**
1952
- * Media ID to exclude
1953
- */
1954
- mediaId: number;
1955
- /**
1956
- * Episode number to exclude (null for media-level checks)
1957
- */
1958
- episodeNumber?: number;
1959
- /**
1960
- * Why this was allowlisted
1961
- */
1962
- reason?: string;
1963
- /**
1964
- * When this entry was created
1965
- */
1966
- createdAt: string;
1967
- };
1968
1942
  export type SearchData = {
1969
1943
  body?: SearchRequest;
1970
1944
  path?: never;
@@ -2080,11 +2054,11 @@ export type ListMediaData = {
2080
2054
  /**
2081
2055
  * Number of results per page
2082
2056
  */
2083
- limit?: number;
2057
+ take?: number;
2084
2058
  /**
2085
- * Pagination cursor offset
2059
+ * Opaque pagination cursor token
2086
2060
  */
2087
- cursor?: number;
2061
+ cursor?: string;
2088
2062
  /**
2089
2063
  * Filter by media category
2090
2064
  */
@@ -2167,21 +2141,112 @@ export type CreateMediaResponses = {
2167
2141
  /**
2168
2142
  * Created
2169
2143
  */
2170
- 201: Media;
2144
+ 201: Media;
2145
+ };
2146
+ export type CreateMediaResponse = CreateMediaResponses[keyof CreateMediaResponses];
2147
+ export type AutocompleteMediaData = {
2148
+ body?: never;
2149
+ path?: never;
2150
+ query: {
2151
+ /**
2152
+ * Search term to match against media names (English, Japanese, romaji)
2153
+ */
2154
+ query: string;
2155
+ /**
2156
+ * Maximum number of results to return
2157
+ */
2158
+ take?: number;
2159
+ /**
2160
+ * Filter by media category
2161
+ */
2162
+ category?: 'ANIME' | 'JDRAMA';
2163
+ };
2164
+ url: '/v1/media/autocomplete';
2165
+ };
2166
+ export type AutocompleteMediaErrors = {
2167
+ /**
2168
+ * Bad Request
2169
+ */
2170
+ 400: Error400;
2171
+ /**
2172
+ * Unauthorized
2173
+ */
2174
+ 401: Error401;
2175
+ /**
2176
+ * Forbidden
2177
+ */
2178
+ 403: Error403;
2179
+ /**
2180
+ * Too Many Requests
2181
+ */
2182
+ 429: Error429;
2183
+ /**
2184
+ * Internal Server Error
2185
+ */
2186
+ 500: Error500;
2187
+ };
2188
+ export type AutocompleteMediaError = AutocompleteMediaErrors[keyof AutocompleteMediaErrors];
2189
+ export type AutocompleteMediaResponses = {
2190
+ /**
2191
+ * OK
2192
+ */
2193
+ 200: MediaAutocompleteResponse;
2194
+ };
2195
+ export type AutocompleteMediaResponse = AutocompleteMediaResponses[keyof AutocompleteMediaResponses];
2196
+ export type GetSegmentByUuidData = {
2197
+ body?: never;
2198
+ path: {
2199
+ /**
2200
+ * Segment UUID
2201
+ */
2202
+ uuid: string;
2203
+ };
2204
+ query?: never;
2205
+ url: '/v1/media/segments/{uuid}';
2206
+ };
2207
+ export type GetSegmentByUuidErrors = {
2208
+ /**
2209
+ * Bad Request
2210
+ */
2211
+ 400: Error400;
2212
+ /**
2213
+ * Unauthorized
2214
+ */
2215
+ 401: Error401;
2216
+ /**
2217
+ * Forbidden
2218
+ */
2219
+ 403: Error403;
2220
+ /**
2221
+ * Not Found
2222
+ */
2223
+ 404: Error404;
2224
+ /**
2225
+ * Too Many Requests
2226
+ */
2227
+ 429: Error429;
2228
+ /**
2229
+ * Internal Server Error
2230
+ */
2231
+ 500: Error500;
2171
2232
  };
2172
- export type CreateMediaResponse = CreateMediaResponses[keyof CreateMediaResponses];
2173
- export type DeleteMediaData = {
2174
- body?: never;
2233
+ export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2234
+ export type GetSegmentByUuidResponses = {
2235
+ 200: Segment;
2236
+ };
2237
+ export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2238
+ export type UpdateSegmentByUuidData = {
2239
+ body: SegmentUpdateRequest;
2175
2240
  path: {
2176
2241
  /**
2177
- * Media ID
2242
+ * Segment UUID
2178
2243
  */
2179
- id: number;
2244
+ uuid: string;
2180
2245
  };
2181
2246
  query?: never;
2182
- url: '/v1/media/{id}';
2247
+ url: '/v1/media/segments/{uuid}';
2183
2248
  };
2184
- export type DeleteMediaErrors = {
2249
+ export type UpdateSegmentByUuidErrors = {
2185
2250
  /**
2186
2251
  * Bad Request
2187
2252
  */
@@ -2207,31 +2272,39 @@ export type DeleteMediaErrors = {
2207
2272
  */
2208
2273
  500: Error500;
2209
2274
  };
2210
- export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2211
- export type DeleteMediaResponses = {
2275
+ export type UpdateSegmentByUuidError = UpdateSegmentByUuidErrors[keyof UpdateSegmentByUuidErrors];
2276
+ export type UpdateSegmentByUuidResponses = {
2212
2277
  /**
2213
- * No Content
2278
+ * Single segment response with internal fields
2214
2279
  */
2215
- 204: void;
2280
+ 200: SegmentInternal;
2216
2281
  };
2217
- export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2218
- export type GetMediaData = {
2282
+ export type UpdateSegmentByUuidResponse = UpdateSegmentByUuidResponses[keyof UpdateSegmentByUuidResponses];
2283
+ export type GetSegmentContextData = {
2219
2284
  body?: never;
2220
2285
  path: {
2221
2286
  /**
2222
- * Media ID
2287
+ * Segment UUID
2223
2288
  */
2224
- id: number;
2289
+ uuid: string;
2225
2290
  };
2226
2291
  query?: {
2227
2292
  /**
2228
- * Resources to expand in the media response (`media.characters` implies `media`)
2293
+ * Number of segments to return before and after the target
2229
2294
  */
2230
- include?: Array<MediaIncludeExpansion>;
2295
+ take?: number;
2296
+ /**
2297
+ * Content ratings to include (omit for all ratings)
2298
+ */
2299
+ contentRating?: Array<ContentRating>;
2300
+ /**
2301
+ * Resources to expand in the response includes block
2302
+ */
2303
+ include?: Array<IncludeExpansion>;
2231
2304
  };
2232
- url: '/v1/media/{id}';
2305
+ url: '/v1/media/segments/{uuid}/context';
2233
2306
  };
2234
- export type GetMediaErrors = {
2307
+ export type GetSegmentContextErrors = {
2235
2308
  /**
2236
2309
  * Bad Request
2237
2310
  */
@@ -2257,26 +2330,34 @@ export type GetMediaErrors = {
2257
2330
  */
2258
2331
  500: Error500;
2259
2332
  };
2260
- export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2261
- export type GetMediaResponses = {
2333
+ export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2334
+ export type GetSegmentContextResponses = {
2262
2335
  /**
2263
2336
  * OK
2264
2337
  */
2265
- 200: Media;
2338
+ 200: SegmentContextResponse;
2266
2339
  };
2267
- export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2268
- export type UpdateMediaData = {
2269
- body: MediaUpdateRequest;
2270
- path: {
2340
+ export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2341
+ export type ListSeriesData = {
2342
+ body?: never;
2343
+ path?: never;
2344
+ query?: {
2271
2345
  /**
2272
- * Media ID
2346
+ * Number of results per page
2273
2347
  */
2274
- id: number;
2348
+ take?: number;
2349
+ /**
2350
+ * Opaque pagination cursor token
2351
+ */
2352
+ cursor?: string;
2353
+ /**
2354
+ * Case-insensitive search across English, Japanese, and Romaji names
2355
+ */
2356
+ query?: string;
2275
2357
  };
2276
- query?: never;
2277
- url: '/v1/media/{id}';
2358
+ url: '/v1/media/series';
2278
2359
  };
2279
- export type UpdateMediaErrors = {
2360
+ export type ListSeriesErrors = {
2280
2361
  /**
2281
2362
  * Bad Request
2282
2363
  */
@@ -2289,10 +2370,6 @@ export type UpdateMediaErrors = {
2289
2370
  * Forbidden
2290
2371
  */
2291
2372
  403: Error403;
2292
- /**
2293
- * Not Found
2294
- */
2295
- 404: Error404;
2296
2373
  /**
2297
2374
  * Too Many Requests
2298
2375
  */
@@ -2302,35 +2379,34 @@ export type UpdateMediaErrors = {
2302
2379
  */
2303
2380
  500: Error500;
2304
2381
  };
2305
- export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2306
- export type UpdateMediaResponses = {
2382
+ export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
2383
+ export type ListSeriesResponses = {
2307
2384
  /**
2308
2385
  * OK
2309
2386
  */
2310
- 200: Media;
2387
+ 200: SeriesListResponse;
2311
2388
  };
2312
- export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
2313
- export type ListEpisodesData = {
2314
- body?: never;
2315
- path: {
2389
+ export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
2390
+ export type CreateSeriesData = {
2391
+ body: {
2316
2392
  /**
2317
- * ID of the media
2393
+ * Japanese name of the series
2318
2394
  */
2319
- mediaId: number;
2320
- };
2321
- query?: {
2395
+ nameJa: string;
2322
2396
  /**
2323
- * Maximum number of episodes to return
2397
+ * Romaji name of the series
2324
2398
  */
2325
- limit?: number;
2399
+ nameRomaji: string;
2326
2400
  /**
2327
- * Episode number to start from (for pagination)
2401
+ * English name of the series
2328
2402
  */
2329
- cursor?: number;
2403
+ nameEn: string;
2330
2404
  };
2331
- url: '/v1/media/{mediaId}/episodes';
2405
+ path?: never;
2406
+ query?: never;
2407
+ url: '/v1/media/series';
2332
2408
  };
2333
- export type ListEpisodesErrors = {
2409
+ export type CreateSeriesErrors = {
2334
2410
  /**
2335
2411
  * Bad Request
2336
2412
  */
@@ -2343,10 +2419,6 @@ export type ListEpisodesErrors = {
2343
2419
  * Forbidden
2344
2420
  */
2345
2421
  403: Error403;
2346
- /**
2347
- * Not Found
2348
- */
2349
- 404: Error404;
2350
2422
  /**
2351
2423
  * Too Many Requests
2352
2424
  */
@@ -2356,26 +2428,26 @@ export type ListEpisodesErrors = {
2356
2428
  */
2357
2429
  500: Error500;
2358
2430
  };
2359
- export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
2360
- export type ListEpisodesResponses = {
2431
+ export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
2432
+ export type CreateSeriesResponses = {
2361
2433
  /**
2362
- * Paginated list of episodes
2434
+ * Created
2363
2435
  */
2364
- 200: EpisodeListResponse;
2436
+ 201: Series;
2365
2437
  };
2366
- export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
2367
- export type CreateEpisodeData = {
2368
- body: EpisodeCreateRequest;
2438
+ export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
2439
+ export type DeleteSeriesData = {
2440
+ body?: never;
2369
2441
  path: {
2370
2442
  /**
2371
- * ID of the media
2443
+ * Series ID
2372
2444
  */
2373
- mediaId: number;
2445
+ id: number;
2374
2446
  };
2375
2447
  query?: never;
2376
- url: '/v1/media/{mediaId}/episodes';
2448
+ url: '/v1/media/series/{id}';
2377
2449
  };
2378
- export type CreateEpisodeErrors = {
2450
+ export type DeleteSeriesErrors = {
2379
2451
  /**
2380
2452
  * Bad Request
2381
2453
  */
@@ -2392,10 +2464,6 @@ export type CreateEpisodeErrors = {
2392
2464
  * Not Found
2393
2465
  */
2394
2466
  404: Error404;
2395
- /**
2396
- * Conflict
2397
- */
2398
- 409: Error409;
2399
2467
  /**
2400
2468
  * Too Many Requests
2401
2469
  */
@@ -2405,30 +2473,31 @@ export type CreateEpisodeErrors = {
2405
2473
  */
2406
2474
  500: Error500;
2407
2475
  };
2408
- export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
2409
- export type CreateEpisodeResponses = {
2476
+ export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
2477
+ export type DeleteSeriesResponses = {
2410
2478
  /**
2411
- * Single episode response
2479
+ * No Content
2412
2480
  */
2413
- 201: Episode;
2481
+ 204: void;
2414
2482
  };
2415
- export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
2416
- export type DeleteEpisodeData = {
2483
+ export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
2484
+ export type GetSeriesData = {
2417
2485
  body?: never;
2418
2486
  path: {
2419
2487
  /**
2420
- * ID of the media
2488
+ * Series ID
2421
2489
  */
2422
- mediaId: number;
2490
+ id: number;
2491
+ };
2492
+ query?: {
2423
2493
  /**
2424
- * Episode number
2494
+ * Resources to expand in the series response (`media.characters` implies `media`)
2425
2495
  */
2426
- episodeNumber: number;
2496
+ include?: Array<MediaIncludeExpansion>;
2427
2497
  };
2428
- query?: never;
2429
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2498
+ url: '/v1/media/series/{id}';
2430
2499
  };
2431
- export type DeleteEpisodeErrors = {
2500
+ export type GetSeriesErrors = {
2432
2501
  /**
2433
2502
  * Bad Request
2434
2503
  */
@@ -2454,30 +2523,39 @@ export type DeleteEpisodeErrors = {
2454
2523
  */
2455
2524
  500: Error500;
2456
2525
  };
2457
- export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
2458
- export type DeleteEpisodeResponses = {
2526
+ export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
2527
+ export type GetSeriesResponses = {
2459
2528
  /**
2460
- * Episode successfully deleted
2529
+ * OK
2461
2530
  */
2462
- 204: void;
2531
+ 200: SeriesWithMedia;
2463
2532
  };
2464
- export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
2465
- export type GetEpisodeData = {
2466
- body?: never;
2467
- path: {
2533
+ export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
2534
+ export type UpdateSeriesData = {
2535
+ body: {
2468
2536
  /**
2469
- * ID of the media
2537
+ * Updated Japanese name
2470
2538
  */
2471
- mediaId: number;
2539
+ nameJa?: string;
2472
2540
  /**
2473
- * Episode number
2541
+ * Updated Romaji name
2474
2542
  */
2475
- episodeNumber: number;
2543
+ nameRomaji?: string;
2544
+ /**
2545
+ * Updated English name
2546
+ */
2547
+ nameEn?: string;
2548
+ };
2549
+ path: {
2550
+ /**
2551
+ * Series ID
2552
+ */
2553
+ id: number;
2476
2554
  };
2477
2555
  query?: never;
2478
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2556
+ url: '/v1/media/series/{id}';
2479
2557
  };
2480
- export type GetEpisodeErrors = {
2558
+ export type UpdateSeriesErrors = {
2481
2559
  /**
2482
2560
  * Bad Request
2483
2561
  */
@@ -2503,30 +2581,35 @@ export type GetEpisodeErrors = {
2503
2581
  */
2504
2582
  500: Error500;
2505
2583
  };
2506
- export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
2507
- export type GetEpisodeResponses = {
2584
+ export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
2585
+ export type UpdateSeriesResponses = {
2508
2586
  /**
2509
- * Single episode response
2587
+ * OK
2510
2588
  */
2511
- 200: Episode;
2589
+ 200: Series;
2512
2590
  };
2513
- export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
2514
- export type UpdateEpisodeData = {
2515
- body: EpisodeUpdateRequest;
2516
- path: {
2591
+ export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
2592
+ export type AddMediaToSeriesData = {
2593
+ body: {
2517
2594
  /**
2518
- * ID of the media
2595
+ * Media ID to add
2519
2596
  */
2520
2597
  mediaId: number;
2521
2598
  /**
2522
- * Episode number
2599
+ * Position in the series (1-indexed)
2523
2600
  */
2524
- episodeNumber: number;
2601
+ position: number;
2602
+ };
2603
+ path: {
2604
+ /**
2605
+ * Series ID
2606
+ */
2607
+ id: number;
2525
2608
  };
2526
2609
  query?: never;
2527
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2610
+ url: '/v1/media/series/{id}/media';
2528
2611
  };
2529
- export type UpdateEpisodeErrors = {
2612
+ export type AddMediaToSeriesErrors = {
2530
2613
  /**
2531
2614
  * Bad Request
2532
2615
  */
@@ -2552,39 +2635,30 @@ export type UpdateEpisodeErrors = {
2552
2635
  */
2553
2636
  500: Error500;
2554
2637
  };
2555
- export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
2556
- export type UpdateEpisodeResponses = {
2638
+ export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
2639
+ export type AddMediaToSeriesResponses = {
2557
2640
  /**
2558
- * Single episode response
2641
+ * No Content
2559
2642
  */
2560
- 200: Episode;
2643
+ 204: void;
2561
2644
  };
2562
- export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
2563
- export type ListSegmentsData = {
2645
+ export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
2646
+ export type RemoveMediaFromSeriesData = {
2564
2647
  body?: never;
2565
2648
  path: {
2566
2649
  /**
2567
- * ID of the media
2568
- */
2569
- mediaId: number;
2570
- /**
2571
- * Episode number
2572
- */
2573
- episodeNumber: number;
2574
- };
2575
- query?: {
2576
- /**
2577
- * Maximum number of segments to return
2650
+ * Series ID
2578
2651
  */
2579
- limit?: number;
2652
+ id: number;
2580
2653
  /**
2581
- * Segment ID to start from (for pagination)
2654
+ * Media ID
2582
2655
  */
2583
- cursor?: number;
2656
+ mediaId: number;
2584
2657
  };
2585
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2658
+ query?: never;
2659
+ url: '/v1/media/series/{id}/media/{mediaId}';
2586
2660
  };
2587
- export type ListSegmentsErrors = {
2661
+ export type RemoveMediaFromSeriesErrors = {
2588
2662
  /**
2589
2663
  * Bad Request
2590
2664
  */
@@ -2610,36 +2684,35 @@ export type ListSegmentsErrors = {
2610
2684
  */
2611
2685
  500: Error500;
2612
2686
  };
2613
- export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
2614
- export type ListSegmentsResponses = {
2687
+ export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
2688
+ export type RemoveMediaFromSeriesResponses = {
2615
2689
  /**
2616
- * Paginated segment list response
2690
+ * No Content
2617
2691
  */
2618
- 200: {
2692
+ 204: void;
2693
+ };
2694
+ export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
2695
+ export type UpdateSeriesMediaData = {
2696
+ body: {
2619
2697
  /**
2620
- * Array of segment objects
2698
+ * New position in the series (1-indexed)
2621
2699
  */
2622
- segments: Array<Segment>;
2623
- pagination: CursorPagination;
2700
+ position: number;
2624
2701
  };
2625
- };
2626
- export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
2627
- export type CreateSegmentData = {
2628
- body: SegmentCreateRequest;
2629
2702
  path: {
2630
2703
  /**
2631
- * ID of the media
2704
+ * Series ID
2632
2705
  */
2633
- mediaId: number;
2706
+ id: number;
2634
2707
  /**
2635
- * Episode number
2708
+ * Media ID
2636
2709
  */
2637
- episodeNumber: number;
2710
+ mediaId: number;
2638
2711
  };
2639
2712
  query?: never;
2640
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2713
+ url: '/v1/media/series/{id}/media/{mediaId}';
2641
2714
  };
2642
- export type CreateSegmentErrors = {
2715
+ export type UpdateSeriesMediaErrors = {
2643
2716
  /**
2644
2717
  * Bad Request
2645
2718
  */
@@ -2656,10 +2729,6 @@ export type CreateSegmentErrors = {
2656
2729
  * Not Found
2657
2730
  */
2658
2731
  404: Error404;
2659
- /**
2660
- * Conflict
2661
- */
2662
- 409: Error409;
2663
2732
  /**
2664
2733
  * Too Many Requests
2665
2734
  */
@@ -2669,34 +2738,26 @@ export type CreateSegmentErrors = {
2669
2738
  */
2670
2739
  500: Error500;
2671
2740
  };
2672
- export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
2673
- export type CreateSegmentResponses = {
2741
+ export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
2742
+ export type UpdateSeriesMediaResponses = {
2674
2743
  /**
2675
- * Single segment response with internal fields
2744
+ * No Content
2676
2745
  */
2677
- 201: SegmentInternal;
2746
+ 204: void;
2678
2747
  };
2679
- export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
2680
- export type DeleteSegmentData = {
2748
+ export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
2749
+ export type GetCharacterData = {
2681
2750
  body?: never;
2682
2751
  path: {
2683
2752
  /**
2684
- * ID of the media
2685
- */
2686
- mediaId: number;
2687
- /**
2688
- * Episode number
2689
- */
2690
- episodeNumber: number;
2691
- /**
2692
- * Segment ID
2753
+ * Internal character ID
2693
2754
  */
2694
2755
  id: number;
2695
2756
  };
2696
2757
  query?: never;
2697
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2758
+ url: '/v1/media/characters/{id}';
2698
2759
  };
2699
- export type DeleteSegmentErrors = {
2760
+ export type GetCharacterErrors = {
2700
2761
  /**
2701
2762
  * Bad Request
2702
2763
  */
@@ -2722,34 +2783,26 @@ export type DeleteSegmentErrors = {
2722
2783
  */
2723
2784
  500: Error500;
2724
2785
  };
2725
- export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
2726
- export type DeleteSegmentResponses = {
2786
+ export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
2787
+ export type GetCharacterResponses = {
2727
2788
  /**
2728
- * Segment successfully deleted
2789
+ * OK
2729
2790
  */
2730
- 204: void;
2791
+ 200: CharacterWithMedia;
2731
2792
  };
2732
- export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
2733
- export type GetSegmentData = {
2793
+ export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
2794
+ export type GetSeiyuuData = {
2734
2795
  body?: never;
2735
2796
  path: {
2736
2797
  /**
2737
- * ID of the media
2738
- */
2739
- mediaId: number;
2740
- /**
2741
- * Episode number
2742
- */
2743
- episodeNumber: number;
2744
- /**
2745
- * Segment ID
2798
+ * Internal seiyuu ID
2746
2799
  */
2747
2800
  id: number;
2748
2801
  };
2749
2802
  query?: never;
2750
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2803
+ url: '/v1/media/seiyuu/{id}';
2751
2804
  };
2752
- export type GetSegmentErrors = {
2805
+ export type GetSeiyuuErrors = {
2753
2806
  /**
2754
2807
  * Bad Request
2755
2808
  */
@@ -2775,34 +2828,26 @@ export type GetSegmentErrors = {
2775
2828
  */
2776
2829
  500: Error500;
2777
2830
  };
2778
- export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
2779
- export type GetSegmentResponses = {
2831
+ export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
2832
+ export type GetSeiyuuResponses = {
2780
2833
  /**
2781
- * Single segment response
2834
+ * OK
2782
2835
  */
2783
- 200: Segment;
2836
+ 200: SeiyuuWithRoles;
2784
2837
  };
2785
- export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
2786
- export type UpdateSegmentData = {
2787
- body: SegmentUpdateRequest;
2838
+ export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
2839
+ export type DeleteMediaData = {
2840
+ body?: never;
2788
2841
  path: {
2789
2842
  /**
2790
- * ID of the media
2791
- */
2792
- mediaId: number;
2793
- /**
2794
- * Episode number
2795
- */
2796
- episodeNumber: number;
2797
- /**
2798
- * Segment ID
2843
+ * Media ID
2799
2844
  */
2800
2845
  id: number;
2801
2846
  };
2802
2847
  query?: never;
2803
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2848
+ url: '/v1/media/{id}';
2804
2849
  };
2805
- export type UpdateSegmentErrors = {
2850
+ export type DeleteMediaErrors = {
2806
2851
  /**
2807
2852
  * Bad Request
2808
2853
  */
@@ -2828,26 +2873,31 @@ export type UpdateSegmentErrors = {
2828
2873
  */
2829
2874
  500: Error500;
2830
2875
  };
2831
- export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
2832
- export type UpdateSegmentResponses = {
2876
+ export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2877
+ export type DeleteMediaResponses = {
2833
2878
  /**
2834
- * Single segment response with internal fields
2879
+ * No Content
2835
2880
  */
2836
- 200: SegmentInternal;
2881
+ 204: void;
2837
2882
  };
2838
- export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
2839
- export type GetSegmentByUuidData = {
2883
+ export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2884
+ export type GetMediaData = {
2840
2885
  body?: never;
2841
2886
  path: {
2842
2887
  /**
2843
- * Segment UUID
2888
+ * Media ID
2844
2889
  */
2845
- uuid: string;
2890
+ id: number;
2846
2891
  };
2847
- query?: never;
2848
- url: '/v1/media/segments/{uuid}';
2892
+ query?: {
2893
+ /**
2894
+ * Resources to expand in the media response (`media.characters` implies `media`)
2895
+ */
2896
+ include?: Array<MediaIncludeExpansion>;
2897
+ };
2898
+ url: '/v1/media/{id}';
2849
2899
  };
2850
- export type GetSegmentByUuidErrors = {
2900
+ export type GetMediaErrors = {
2851
2901
  /**
2852
2902
  * Bad Request
2853
2903
  */
@@ -2873,36 +2923,26 @@ export type GetSegmentByUuidErrors = {
2873
2923
  */
2874
2924
  500: Error500;
2875
2925
  };
2876
- export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2877
- export type GetSegmentByUuidResponses = {
2878
- 200: Segment;
2926
+ export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2927
+ export type GetMediaResponses = {
2928
+ /**
2929
+ * OK
2930
+ */
2931
+ 200: Media;
2879
2932
  };
2880
- export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2881
- export type GetSegmentContextData = {
2882
- body?: never;
2933
+ export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2934
+ export type UpdateMediaData = {
2935
+ body: MediaUpdateRequest;
2883
2936
  path: {
2884
2937
  /**
2885
- * Segment UUID
2886
- */
2887
- uuid: string;
2888
- };
2889
- query?: {
2890
- /**
2891
- * Number of segments to return before and after the target
2892
- */
2893
- limit?: number;
2894
- /**
2895
- * Content ratings to include (omit for all ratings)
2896
- */
2897
- contentRating?: Array<ContentRating>;
2898
- /**
2899
- * Resources to expand in the response includes block
2938
+ * Media ID
2900
2939
  */
2901
- include?: Array<IncludeExpansion>;
2940
+ id: number;
2902
2941
  };
2903
- url: '/v1/media/segments/{uuid}/context';
2942
+ query?: never;
2943
+ url: '/v1/media/{id}';
2904
2944
  };
2905
- export type GetSegmentContextErrors = {
2945
+ export type UpdateMediaErrors = {
2906
2946
  /**
2907
2947
  * Bad Request
2908
2948
  */
@@ -2928,34 +2968,35 @@ export type GetSegmentContextErrors = {
2928
2968
  */
2929
2969
  500: Error500;
2930
2970
  };
2931
- export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2932
- export type GetSegmentContextResponses = {
2971
+ export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2972
+ export type UpdateMediaResponses = {
2933
2973
  /**
2934
2974
  * OK
2935
2975
  */
2936
- 200: SegmentContextResponse;
2976
+ 200: Media;
2937
2977
  };
2938
- export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2939
- export type ListSeriesData = {
2978
+ export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
2979
+ export type ListEpisodesData = {
2940
2980
  body?: never;
2941
- path?: never;
2942
- query?: {
2981
+ path: {
2943
2982
  /**
2944
- * Number of results per page
2983
+ * ID of the media
2945
2984
  */
2946
- limit?: number;
2985
+ mediaId: number;
2986
+ };
2987
+ query?: {
2947
2988
  /**
2948
- * Pagination cursor offset
2989
+ * Maximum number of episodes to return
2949
2990
  */
2950
- cursor?: number;
2991
+ take?: number;
2951
2992
  /**
2952
- * Case-insensitive search across English, Japanese, and Romaji names
2993
+ * Opaque pagination cursor token
2953
2994
  */
2954
- query?: string;
2995
+ cursor?: string;
2955
2996
  };
2956
- url: '/v1/media/series';
2997
+ url: '/v1/media/{mediaId}/episodes';
2957
2998
  };
2958
- export type ListSeriesErrors = {
2999
+ export type ListEpisodesErrors = {
2959
3000
  /**
2960
3001
  * Bad Request
2961
3002
  */
@@ -2968,6 +3009,10 @@ export type ListSeriesErrors = {
2968
3009
  * Forbidden
2969
3010
  */
2970
3011
  403: Error403;
3012
+ /**
3013
+ * Not Found
3014
+ */
3015
+ 404: Error404;
2971
3016
  /**
2972
3017
  * Too Many Requests
2973
3018
  */
@@ -2977,34 +3022,26 @@ export type ListSeriesErrors = {
2977
3022
  */
2978
3023
  500: Error500;
2979
3024
  };
2980
- export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
2981
- export type ListSeriesResponses = {
3025
+ export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
3026
+ export type ListEpisodesResponses = {
2982
3027
  /**
2983
- * OK
3028
+ * Paginated list of episodes
2984
3029
  */
2985
- 200: SeriesListResponse;
3030
+ 200: EpisodeListResponse;
2986
3031
  };
2987
- export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
2988
- export type CreateSeriesData = {
2989
- body: {
2990
- /**
2991
- * Japanese name of the series
2992
- */
2993
- nameJa: string;
2994
- /**
2995
- * Romaji name of the series
2996
- */
2997
- nameRomaji: string;
3032
+ export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
3033
+ export type CreateEpisodeData = {
3034
+ body: EpisodeCreateRequest;
3035
+ path: {
2998
3036
  /**
2999
- * English name of the series
3037
+ * ID of the media
3000
3038
  */
3001
- nameEn: string;
3039
+ mediaId: number;
3002
3040
  };
3003
- path?: never;
3004
3041
  query?: never;
3005
- url: '/v1/media/series';
3042
+ url: '/v1/media/{mediaId}/episodes';
3006
3043
  };
3007
- export type CreateSeriesErrors = {
3044
+ export type CreateEpisodeErrors = {
3008
3045
  /**
3009
3046
  * Bad Request
3010
3047
  */
@@ -3012,11 +3049,19 @@ export type CreateSeriesErrors = {
3012
3049
  /**
3013
3050
  * Unauthorized
3014
3051
  */
3015
- 401: Error401;
3052
+ 401: Error401;
3053
+ /**
3054
+ * Forbidden
3055
+ */
3056
+ 403: Error403;
3057
+ /**
3058
+ * Not Found
3059
+ */
3060
+ 404: Error404;
3016
3061
  /**
3017
- * Forbidden
3062
+ * Conflict
3018
3063
  */
3019
- 403: Error403;
3064
+ 409: Error409;
3020
3065
  /**
3021
3066
  * Too Many Requests
3022
3067
  */
@@ -3026,26 +3071,30 @@ export type CreateSeriesErrors = {
3026
3071
  */
3027
3072
  500: Error500;
3028
3073
  };
3029
- export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
3030
- export type CreateSeriesResponses = {
3074
+ export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
3075
+ export type CreateEpisodeResponses = {
3031
3076
  /**
3032
- * Created
3077
+ * Single episode response
3033
3078
  */
3034
- 201: Series;
3079
+ 201: Episode;
3035
3080
  };
3036
- export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
3037
- export type DeleteSeriesData = {
3081
+ export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
3082
+ export type DeleteEpisodeData = {
3038
3083
  body?: never;
3039
3084
  path: {
3040
3085
  /**
3041
- * Series ID
3086
+ * ID of the media
3042
3087
  */
3043
- id: number;
3088
+ mediaId: number;
3089
+ /**
3090
+ * Episode number
3091
+ */
3092
+ episodeNumber: number;
3044
3093
  };
3045
3094
  query?: never;
3046
- url: '/v1/media/series/{id}';
3095
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3047
3096
  };
3048
- export type DeleteSeriesErrors = {
3097
+ export type DeleteEpisodeErrors = {
3049
3098
  /**
3050
3099
  * Bad Request
3051
3100
  */
@@ -3071,31 +3120,30 @@ export type DeleteSeriesErrors = {
3071
3120
  */
3072
3121
  500: Error500;
3073
3122
  };
3074
- export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
3075
- export type DeleteSeriesResponses = {
3123
+ export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
3124
+ export type DeleteEpisodeResponses = {
3076
3125
  /**
3077
- * No Content
3126
+ * Episode successfully deleted
3078
3127
  */
3079
3128
  204: void;
3080
3129
  };
3081
- export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
3082
- export type GetSeriesData = {
3130
+ export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
3131
+ export type GetEpisodeData = {
3083
3132
  body?: never;
3084
3133
  path: {
3085
3134
  /**
3086
- * Series ID
3135
+ * ID of the media
3087
3136
  */
3088
- id: number;
3089
- };
3090
- query?: {
3137
+ mediaId: number;
3091
3138
  /**
3092
- * Resources to expand in the series response (`media.characters` implies `media`)
3139
+ * Episode number
3093
3140
  */
3094
- include?: Array<MediaIncludeExpansion>;
3141
+ episodeNumber: number;
3095
3142
  };
3096
- url: '/v1/media/series/{id}';
3143
+ query?: never;
3144
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3097
3145
  };
3098
- export type GetSeriesErrors = {
3146
+ export type GetEpisodeErrors = {
3099
3147
  /**
3100
3148
  * Bad Request
3101
3149
  */
@@ -3121,39 +3169,30 @@ export type GetSeriesErrors = {
3121
3169
  */
3122
3170
  500: Error500;
3123
3171
  };
3124
- export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
3125
- export type GetSeriesResponses = {
3172
+ export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
3173
+ export type GetEpisodeResponses = {
3126
3174
  /**
3127
- * OK
3175
+ * Single episode response
3128
3176
  */
3129
- 200: SeriesWithMedia;
3177
+ 200: Episode;
3130
3178
  };
3131
- export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
3132
- export type UpdateSeriesData = {
3133
- body: {
3134
- /**
3135
- * Updated Japanese name
3136
- */
3137
- nameJa?: string;
3138
- /**
3139
- * Updated Romaji name
3140
- */
3141
- nameRomaji?: string;
3179
+ export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
3180
+ export type UpdateEpisodeData = {
3181
+ body: EpisodeUpdateRequest;
3182
+ path: {
3142
3183
  /**
3143
- * Updated English name
3184
+ * ID of the media
3144
3185
  */
3145
- nameEn?: string;
3146
- };
3147
- path: {
3186
+ mediaId: number;
3148
3187
  /**
3149
- * Series ID
3188
+ * Episode number
3150
3189
  */
3151
- id: number;
3190
+ episodeNumber: number;
3152
3191
  };
3153
3192
  query?: never;
3154
- url: '/v1/media/series/{id}';
3193
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3155
3194
  };
3156
- export type UpdateSeriesErrors = {
3195
+ export type UpdateEpisodeErrors = {
3157
3196
  /**
3158
3197
  * Bad Request
3159
3198
  */
@@ -3179,35 +3218,39 @@ export type UpdateSeriesErrors = {
3179
3218
  */
3180
3219
  500: Error500;
3181
3220
  };
3182
- export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
3183
- export type UpdateSeriesResponses = {
3221
+ export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
3222
+ export type UpdateEpisodeResponses = {
3184
3223
  /**
3185
- * OK
3224
+ * Single episode response
3186
3225
  */
3187
- 200: Series;
3226
+ 200: Episode;
3188
3227
  };
3189
- export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
3190
- export type AddMediaToSeriesData = {
3191
- body: {
3228
+ export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
3229
+ export type ListSegmentsData = {
3230
+ body?: never;
3231
+ path: {
3192
3232
  /**
3193
- * Media ID to add
3233
+ * ID of the media
3194
3234
  */
3195
3235
  mediaId: number;
3196
3236
  /**
3197
- * Position in the series (1-indexed)
3237
+ * Episode number
3198
3238
  */
3199
- position: number;
3239
+ episodeNumber: number;
3200
3240
  };
3201
- path: {
3241
+ query?: {
3202
3242
  /**
3203
- * Series ID
3243
+ * Maximum number of segments to return
3204
3244
  */
3205
- id: number;
3245
+ take?: number;
3246
+ /**
3247
+ * Opaque pagination cursor token
3248
+ */
3249
+ cursor?: string;
3206
3250
  };
3207
- query?: never;
3208
- url: '/v1/media/series/{id}/media';
3251
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3209
3252
  };
3210
- export type AddMediaToSeriesErrors = {
3253
+ export type ListSegmentsErrors = {
3211
3254
  /**
3212
3255
  * Bad Request
3213
3256
  */
@@ -3233,30 +3276,36 @@ export type AddMediaToSeriesErrors = {
3233
3276
  */
3234
3277
  500: Error500;
3235
3278
  };
3236
- export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
3237
- export type AddMediaToSeriesResponses = {
3279
+ export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
3280
+ export type ListSegmentsResponses = {
3238
3281
  /**
3239
- * No Content
3282
+ * Paginated segment list response
3240
3283
  */
3241
- 204: void;
3284
+ 200: {
3285
+ /**
3286
+ * Array of segment objects
3287
+ */
3288
+ segments: Array<Segment>;
3289
+ pagination: OpaqueCursorPagination;
3290
+ };
3242
3291
  };
3243
- export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
3244
- export type RemoveMediaFromSeriesData = {
3245
- body?: never;
3292
+ export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
3293
+ export type CreateSegmentData = {
3294
+ body: SegmentCreateRequest;
3246
3295
  path: {
3247
3296
  /**
3248
- * Series ID
3297
+ * ID of the media
3249
3298
  */
3250
- id: number;
3299
+ mediaId: number;
3251
3300
  /**
3252
- * Media ID
3301
+ * Episode number
3253
3302
  */
3254
- mediaId: number;
3303
+ episodeNumber: number;
3255
3304
  };
3256
3305
  query?: never;
3257
- url: '/v1/media/series/{id}/media/{mediaId}';
3306
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3258
3307
  };
3259
- export type RemoveMediaFromSeriesErrors = {
3308
+ export type CreateSegmentErrors = {
3260
3309
  /**
3261
3310
  * Bad Request
3262
3311
  */
@@ -3273,6 +3322,10 @@ export type RemoveMediaFromSeriesErrors = {
3273
3322
  * Not Found
3274
3323
  */
3275
3324
  404: Error404;
3325
+ /**
3326
+ * Conflict
3327
+ */
3328
+ 409: Error409;
3276
3329
  /**
3277
3330
  * Too Many Requests
3278
3331
  */
@@ -3282,35 +3335,34 @@ export type RemoveMediaFromSeriesErrors = {
3282
3335
  */
3283
3336
  500: Error500;
3284
3337
  };
3285
- export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
3286
- export type RemoveMediaFromSeriesResponses = {
3338
+ export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
3339
+ export type CreateSegmentResponses = {
3287
3340
  /**
3288
- * No Content
3341
+ * Single segment response with internal fields
3289
3342
  */
3290
- 204: void;
3343
+ 201: SegmentInternal;
3291
3344
  };
3292
- export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
3293
- export type UpdateSeriesMediaData = {
3294
- body: {
3345
+ export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
3346
+ export type DeleteSegmentData = {
3347
+ body?: never;
3348
+ path: {
3295
3349
  /**
3296
- * New position in the series (1-indexed)
3350
+ * ID of the media
3297
3351
  */
3298
- position: number;
3299
- };
3300
- path: {
3352
+ mediaId: number;
3301
3353
  /**
3302
- * Series ID
3354
+ * Episode number
3303
3355
  */
3304
- id: number;
3356
+ episodeNumber: number;
3305
3357
  /**
3306
- * Media ID
3358
+ * Segment ID
3307
3359
  */
3308
- mediaId: number;
3360
+ id: number;
3309
3361
  };
3310
3362
  query?: never;
3311
- url: '/v1/media/series/{id}/media/{mediaId}';
3363
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3312
3364
  };
3313
- export type UpdateSeriesMediaErrors = {
3365
+ export type DeleteSegmentErrors = {
3314
3366
  /**
3315
3367
  * Bad Request
3316
3368
  */
@@ -3336,26 +3388,34 @@ export type UpdateSeriesMediaErrors = {
3336
3388
  */
3337
3389
  500: Error500;
3338
3390
  };
3339
- export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
3340
- export type UpdateSeriesMediaResponses = {
3391
+ export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
3392
+ export type DeleteSegmentResponses = {
3341
3393
  /**
3342
- * No Content
3394
+ * Segment successfully deleted
3343
3395
  */
3344
3396
  204: void;
3345
3397
  };
3346
- export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
3347
- export type GetCharacterData = {
3398
+ export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
3399
+ export type GetSegmentData = {
3348
3400
  body?: never;
3349
3401
  path: {
3350
3402
  /**
3351
- * AniList character ID
3403
+ * ID of the media
3404
+ */
3405
+ mediaId: number;
3406
+ /**
3407
+ * Episode number
3408
+ */
3409
+ episodeNumber: number;
3410
+ /**
3411
+ * Segment ID
3352
3412
  */
3353
3413
  id: number;
3354
3414
  };
3355
3415
  query?: never;
3356
- url: '/v1/media/characters/{id}';
3416
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3357
3417
  };
3358
- export type GetCharacterErrors = {
3418
+ export type GetSegmentErrors = {
3359
3419
  /**
3360
3420
  * Bad Request
3361
3421
  */
@@ -3381,31 +3441,34 @@ export type GetCharacterErrors = {
3381
3441
  */
3382
3442
  500: Error500;
3383
3443
  };
3384
- export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
3385
- export type GetCharacterResponses = {
3444
+ export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
3445
+ export type GetSegmentResponses = {
3386
3446
  /**
3387
- * OK
3447
+ * Single segment response
3388
3448
  */
3389
- 200: CharacterWithMedia;
3449
+ 200: Segment;
3390
3450
  };
3391
- export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
3392
- export type GetSeiyuuData = {
3393
- body?: never;
3451
+ export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
3452
+ export type UpdateSegmentData = {
3453
+ body: SegmentUpdateRequest;
3394
3454
  path: {
3395
3455
  /**
3396
- * AniList staff ID
3456
+ * ID of the media
3457
+ */
3458
+ mediaId: number;
3459
+ /**
3460
+ * Episode number
3397
3461
  */
3398
- id: number;
3399
- };
3400
- query?: {
3462
+ episodeNumber: number;
3401
3463
  /**
3402
- * Resources to expand in the response (`character` is included by default)
3464
+ * Segment ID
3403
3465
  */
3404
- include?: Array<'character'>;
3466
+ id: number;
3405
3467
  };
3406
- url: '/v1/media/seiyuu/{id}';
3468
+ query?: never;
3469
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3407
3470
  };
3408
- export type GetSeiyuuErrors = {
3471
+ export type UpdateSegmentErrors = {
3409
3472
  /**
3410
3473
  * Bad Request
3411
3474
  */
@@ -3431,14 +3494,14 @@ export type GetSeiyuuErrors = {
3431
3494
  */
3432
3495
  500: Error500;
3433
3496
  };
3434
- export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
3435
- export type GetSeiyuuResponses = {
3497
+ export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
3498
+ export type UpdateSegmentResponses = {
3436
3499
  /**
3437
- * OK
3500
+ * Single segment response with internal fields
3438
3501
  */
3439
- 200: SeiyuuWithRoles;
3502
+ 200: SegmentInternal;
3440
3503
  };
3441
- export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
3504
+ export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
3442
3505
  export type GetUserQuotaData = {
3443
3506
  body?: never;
3444
3507
  path?: never;
@@ -3450,6 +3513,10 @@ export type GetUserQuotaErrors = {
3450
3513
  * Unauthorized
3451
3514
  */
3452
3515
  401: Error401;
3516
+ /**
3517
+ * Forbidden
3518
+ */
3519
+ 403: Error403;
3453
3520
  /**
3454
3521
  * Too Many Requests
3455
3522
  */
@@ -3467,43 +3534,6 @@ export type GetUserQuotaResponses = {
3467
3534
  200: UserQuotaResponse;
3468
3535
  };
3469
3536
  export type GetUserQuotaResponse = GetUserQuotaResponses[keyof GetUserQuotaResponses];
3470
- export type ListUserReportsData = {
3471
- body?: never;
3472
- path?: never;
3473
- query?: {
3474
- /**
3475
- * Cursor for pagination (report ID to start after)
3476
- */
3477
- cursor?: number;
3478
- /**
3479
- * Number of results per page
3480
- */
3481
- limit?: number;
3482
- /**
3483
- * Filter by report status
3484
- */
3485
- status?: 'PENDING' | 'CONCERN' | 'ACCEPTED' | 'REJECTED' | 'RESOLVED' | 'IGNORED';
3486
- };
3487
- url: '/v1/user/reports';
3488
- };
3489
- export type ListUserReportsErrors = {
3490
- /**
3491
- * Unauthorized
3492
- */
3493
- 401: Error401;
3494
- /**
3495
- * Internal Server Error
3496
- */
3497
- 500: Error500;
3498
- };
3499
- export type ListUserReportsError = ListUserReportsErrors[keyof ListUserReportsErrors];
3500
- export type ListUserReportsResponses = {
3501
- /**
3502
- * OK
3503
- */
3504
- 200: ReportListResponse;
3505
- };
3506
- export type ListUserReportsResponse = ListUserReportsResponses[keyof ListUserReportsResponses];
3507
3537
  export type CreateUserReportData = {
3508
3538
  body: CreateReportRequest;
3509
3539
  path?: never;
@@ -3611,7 +3641,6 @@ export type DeleteUserActivityResponses = {
3611
3641
  * OK
3612
3642
  */
3613
3643
  200: {
3614
- message: string;
3615
3644
  deletedCount: number;
3616
3645
  };
3617
3646
  };
@@ -3621,13 +3650,13 @@ export type ListUserActivityData = {
3621
3650
  path?: never;
3622
3651
  query?: {
3623
3652
  /**
3624
- * Cursor for pagination (activity ID to start after)
3653
+ * Opaque cursor token for keyset pagination
3625
3654
  */
3626
- cursor?: number;
3655
+ cursor?: string;
3627
3656
  /**
3628
3657
  * Number of results per page
3629
3658
  */
3630
- limit?: number;
3659
+ take?: number;
3631
3660
  /**
3632
3661
  * Filter by activity type
3633
3662
  */
@@ -3656,10 +3685,44 @@ export type ListUserActivityResponses = {
3656
3685
  */
3657
3686
  200: {
3658
3687
  activities: Array<UserActivity>;
3659
- pagination: CursorPagination;
3688
+ pagination: OpaqueCursorPagination;
3660
3689
  };
3661
3690
  };
3662
3691
  export type ListUserActivityResponse = ListUserActivityResponses[keyof ListUserActivityResponses];
3692
+ export type TrackUserActivityData = {
3693
+ body: {
3694
+ activityType: 'SEGMENT_PLAY';
3695
+ segmentUuid?: string;
3696
+ mediaId?: number;
3697
+ animeName?: string;
3698
+ japaneseText?: string;
3699
+ };
3700
+ path?: never;
3701
+ query?: never;
3702
+ url: '/v1/user/activity';
3703
+ };
3704
+ export type TrackUserActivityErrors = {
3705
+ /**
3706
+ * Bad Request
3707
+ */
3708
+ 400: Error400;
3709
+ /**
3710
+ * Unauthorized
3711
+ */
3712
+ 401: Error401;
3713
+ /**
3714
+ * Internal Server Error
3715
+ */
3716
+ 500: Error500;
3717
+ };
3718
+ export type TrackUserActivityError = TrackUserActivityErrors[keyof TrackUserActivityErrors];
3719
+ export type TrackUserActivityResponses = {
3720
+ /**
3721
+ * Activity tracked
3722
+ */
3723
+ 204: void;
3724
+ };
3725
+ export type TrackUserActivityResponse = TrackUserActivityResponses[keyof TrackUserActivityResponses];
3663
3726
  export type GetUserActivityHeatmapData = {
3664
3727
  body?: never;
3665
3728
  path?: never;
@@ -3692,9 +3755,9 @@ export type GetUserActivityHeatmapResponses = {
3692
3755
  */
3693
3756
  200: {
3694
3757
  /**
3695
- * Map of YYYY-MM-DD date strings to activity counts
3758
+ * Map of YYYY-MM-DD date strings to activity activityByDay
3696
3759
  */
3697
- counts: {
3760
+ activityByDay: {
3698
3761
  [key: string]: number;
3699
3762
  };
3700
3763
  };
@@ -3731,10 +3794,6 @@ export type GetUserActivityStatsResponses = {
3731
3794
  totalExports: number;
3732
3795
  totalPlays: number;
3733
3796
  totalListAdds: number;
3734
- /**
3735
- * Consecutive days with at least one activity
3736
- */
3737
- streakDays: number;
3738
3797
  topMedia: Array<{
3739
3798
  mediaId: number;
3740
3799
  count: number;
@@ -3742,6 +3801,72 @@ export type GetUserActivityStatsResponses = {
3742
3801
  };
3743
3802
  };
3744
3803
  export type GetUserActivityStatsResponse = GetUserActivityStatsResponses[keyof GetUserActivityStatsResponses];
3804
+ export type DeleteUserActivityByDateData = {
3805
+ body?: never;
3806
+ path: {
3807
+ /**
3808
+ * Date in YYYY-MM-DD format
3809
+ */
3810
+ date: string;
3811
+ };
3812
+ query?: never;
3813
+ url: '/v1/user/activity/date/{date}';
3814
+ };
3815
+ export type DeleteUserActivityByDateErrors = {
3816
+ /**
3817
+ * Unauthorized
3818
+ */
3819
+ 401: Error401;
3820
+ /**
3821
+ * Internal Server Error
3822
+ */
3823
+ 500: Error500;
3824
+ };
3825
+ export type DeleteUserActivityByDateError = DeleteUserActivityByDateErrors[keyof DeleteUserActivityByDateErrors];
3826
+ export type DeleteUserActivityByDateResponses = {
3827
+ /**
3828
+ * OK
3829
+ */
3830
+ 200: {
3831
+ deletedCount: number;
3832
+ };
3833
+ };
3834
+ export type DeleteUserActivityByDateResponse = DeleteUserActivityByDateResponses[keyof DeleteUserActivityByDateResponses];
3835
+ export type DeleteUserActivityByIdData = {
3836
+ body?: never;
3837
+ path: {
3838
+ /**
3839
+ * Activity record ID
3840
+ */
3841
+ id: number;
3842
+ };
3843
+ query?: never;
3844
+ url: '/v1/user/activity/{id}';
3845
+ };
3846
+ export type DeleteUserActivityByIdErrors = {
3847
+ /**
3848
+ * Unauthorized
3849
+ */
3850
+ 401: Error401;
3851
+ /**
3852
+ * Activity not found
3853
+ */
3854
+ 404: {
3855
+ message?: string;
3856
+ };
3857
+ /**
3858
+ * Internal Server Error
3859
+ */
3860
+ 500: Error500;
3861
+ };
3862
+ export type DeleteUserActivityByIdError = DeleteUserActivityByIdErrors[keyof DeleteUserActivityByIdErrors];
3863
+ export type DeleteUserActivityByIdResponses = {
3864
+ /**
3865
+ * Activity deleted
3866
+ */
3867
+ 204: void;
3868
+ };
3869
+ export type DeleteUserActivityByIdResponse = DeleteUserActivityByIdResponses[keyof DeleteUserActivityByIdResponses];
3745
3870
  export type ExportUserDataData = {
3746
3871
  body?: never;
3747
3872
  path?: never;
@@ -3790,6 +3915,72 @@ export type ListUserLabsResponses = {
3790
3915
  200: Array<UserLabFeature>;
3791
3916
  };
3792
3917
  export type ListUserLabsResponse = ListUserLabsResponses[keyof ListUserLabsResponses];
3918
+ export type UnenrollUserLabData = {
3919
+ body?: never;
3920
+ path: {
3921
+ /**
3922
+ * Lab feature key
3923
+ */
3924
+ key: string;
3925
+ };
3926
+ query?: never;
3927
+ url: '/v1/user/labs/{key}';
3928
+ };
3929
+ export type UnenrollUserLabErrors = {
3930
+ /**
3931
+ * Unauthorized
3932
+ */
3933
+ 401: Error401;
3934
+ /**
3935
+ * Not Found
3936
+ */
3937
+ 404: Error404;
3938
+ /**
3939
+ * Internal Server Error
3940
+ */
3941
+ 500: Error500;
3942
+ };
3943
+ export type UnenrollUserLabError = UnenrollUserLabErrors[keyof UnenrollUserLabErrors];
3944
+ export type UnenrollUserLabResponses = {
3945
+ /**
3946
+ * Unenrolled successfully
3947
+ */
3948
+ 204: void;
3949
+ };
3950
+ export type UnenrollUserLabResponse = UnenrollUserLabResponses[keyof UnenrollUserLabResponses];
3951
+ export type EnrollUserLabData = {
3952
+ body?: never;
3953
+ path: {
3954
+ /**
3955
+ * Lab feature key
3956
+ */
3957
+ key: string;
3958
+ };
3959
+ query?: never;
3960
+ url: '/v1/user/labs/{key}';
3961
+ };
3962
+ export type EnrollUserLabErrors = {
3963
+ /**
3964
+ * Unauthorized
3965
+ */
3966
+ 401: Error401;
3967
+ /**
3968
+ * Not Found
3969
+ */
3970
+ 404: Error404;
3971
+ /**
3972
+ * Internal Server Error
3973
+ */
3974
+ 500: Error500;
3975
+ };
3976
+ export type EnrollUserLabError = EnrollUserLabErrors[keyof EnrollUserLabErrors];
3977
+ export type EnrollUserLabResponses = {
3978
+ /**
3979
+ * Enrolled successfully
3980
+ */
3981
+ 204: void;
3982
+ };
3983
+ export type EnrollUserLabResponse = EnrollUserLabResponses[keyof EnrollUserLabResponses];
3793
3984
  export type ListCollectionsData = {
3794
3985
  body?: never;
3795
3986
  path?: never;
@@ -3799,9 +3990,9 @@ export type ListCollectionsData = {
3799
3990
  */
3800
3991
  visibility?: 'public' | 'private';
3801
3992
  /**
3802
- * Cursor offset for pagination
3993
+ * Opaque pagination cursor token
3803
3994
  */
3804
- cursor?: number;
3995
+ cursor?: string;
3805
3996
  /**
3806
3997
  * Page number (1-indexed)
3807
3998
  *
@@ -3811,7 +4002,7 @@ export type ListCollectionsData = {
3811
4002
  /**
3812
4003
  * Items per page
3813
4004
  */
3814
- limit?: number;
4005
+ take?: number;
3815
4006
  };
3816
4007
  url: '/v1/collections';
3817
4008
  };
@@ -3936,9 +4127,9 @@ export type GetCollectionData = {
3936
4127
  };
3937
4128
  query?: {
3938
4129
  /**
3939
- * Cursor offset for paginated segments
4130
+ * Opaque pagination cursor token for paginated segments
3940
4131
  */
3941
- cursor?: number;
4132
+ cursor?: string;
3942
4133
  /**
3943
4134
  * Page number (1-indexed)
3944
4135
  *
@@ -3948,7 +4139,7 @@ export type GetCollectionData = {
3948
4139
  /**
3949
4140
  * Items per page
3950
4141
  */
3951
- limit?: number;
4142
+ take?: number;
3952
4143
  };
3953
4144
  url: '/v1/collections/{id}';
3954
4145
  };
@@ -4037,11 +4228,114 @@ export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCol
4037
4228
  export type AddSegmentToCollectionData = {
4038
4229
  body: {
4039
4230
  /**
4040
- * UUID of the segment to add
4231
+ * UUID of the segment to add
4232
+ */
4233
+ segmentUuid: string;
4234
+ /**
4235
+ * Optional annotation
4236
+ */
4237
+ note?: string;
4238
+ };
4239
+ path: {
4240
+ /**
4241
+ * Collection ID
4242
+ */
4243
+ id: number;
4244
+ };
4245
+ query?: never;
4246
+ url: '/v1/collections/{id}/segments';
4247
+ };
4248
+ export type AddSegmentToCollectionErrors = {
4249
+ /**
4250
+ * Bad Request
4251
+ */
4252
+ 400: Error400;
4253
+ /**
4254
+ * Unauthorized
4255
+ */
4256
+ 401: Error401;
4257
+ /**
4258
+ * Forbidden
4259
+ */
4260
+ 403: Error403;
4261
+ /**
4262
+ * Not Found
4263
+ */
4264
+ 404: Error404;
4265
+ /**
4266
+ * Too Many Requests
4267
+ */
4268
+ 429: Error429;
4269
+ /**
4270
+ * Internal Server Error
4271
+ */
4272
+ 500: Error500;
4273
+ };
4274
+ export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4275
+ export type AddSegmentToCollectionResponses = {
4276
+ /**
4277
+ * No Content
4278
+ */
4279
+ 204: void;
4280
+ };
4281
+ export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4282
+ export type RemoveSegmentFromCollectionData = {
4283
+ body?: never;
4284
+ path: {
4285
+ /**
4286
+ * Collection ID
4287
+ */
4288
+ id: number;
4289
+ /**
4290
+ * Segment UUID
4291
+ */
4292
+ uuid: string;
4293
+ };
4294
+ query?: never;
4295
+ url: '/v1/collections/{id}/segments/{uuid}';
4296
+ };
4297
+ export type RemoveSegmentFromCollectionErrors = {
4298
+ /**
4299
+ * Bad Request
4300
+ */
4301
+ 400: Error400;
4302
+ /**
4303
+ * Unauthorized
4304
+ */
4305
+ 401: Error401;
4306
+ /**
4307
+ * Forbidden
4308
+ */
4309
+ 403: Error403;
4310
+ /**
4311
+ * Not Found
4312
+ */
4313
+ 404: Error404;
4314
+ /**
4315
+ * Too Many Requests
4316
+ */
4317
+ 429: Error429;
4318
+ /**
4319
+ * Internal Server Error
4320
+ */
4321
+ 500: Error500;
4322
+ };
4323
+ export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4324
+ export type RemoveSegmentFromCollectionResponses = {
4325
+ /**
4326
+ * No Content
4327
+ */
4328
+ 204: void;
4329
+ };
4330
+ export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4331
+ export type UpdateCollectionSegmentData = {
4332
+ body: {
4333
+ /**
4334
+ * New position in the collection
4041
4335
  */
4042
- segmentUuid: string;
4336
+ position?: number;
4043
4337
  /**
4044
- * Optional annotation
4338
+ * Updated annotation
4045
4339
  */
4046
4340
  note?: string;
4047
4341
  };
@@ -4050,11 +4344,15 @@ export type AddSegmentToCollectionData = {
4050
4344
  * Collection ID
4051
4345
  */
4052
4346
  id: number;
4347
+ /**
4348
+ * Segment UUID
4349
+ */
4350
+ uuid: string;
4053
4351
  };
4054
4352
  query?: never;
4055
- url: '/v1/collections/{id}/segments';
4353
+ url: '/v1/collections/{id}/segments/{uuid}';
4056
4354
  };
4057
- export type AddSegmentToCollectionErrors = {
4355
+ export type UpdateCollectionSegmentErrors = {
4058
4356
  /**
4059
4357
  * Bad Request
4060
4358
  */
@@ -4080,30 +4378,35 @@ export type AddSegmentToCollectionErrors = {
4080
4378
  */
4081
4379
  500: Error500;
4082
4380
  };
4083
- export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4084
- export type AddSegmentToCollectionResponses = {
4381
+ export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4382
+ export type UpdateCollectionSegmentResponses = {
4085
4383
  /**
4086
4384
  * No Content
4087
4385
  */
4088
4386
  204: void;
4089
4387
  };
4090
- export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4091
- export type RemoveSegmentFromCollectionData = {
4388
+ export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4389
+ export type SearchCollectionSegmentsData = {
4092
4390
  body?: never;
4093
4391
  path: {
4094
4392
  /**
4095
4393
  * Collection ID
4096
4394
  */
4097
4395
  id: number;
4396
+ };
4397
+ query?: {
4098
4398
  /**
4099
- * Segment UUID
4399
+ * Opaque cursor token for pagination
4100
4400
  */
4101
- uuid: string;
4401
+ cursor?: string;
4402
+ /**
4403
+ * Items per page
4404
+ */
4405
+ take?: number;
4102
4406
  };
4103
- query?: never;
4104
- url: '/v1/collections/{id}/segments/{uuid}';
4407
+ url: '/v1/collections/{id}/search';
4105
4408
  };
4106
- export type RemoveSegmentFromCollectionErrors = {
4409
+ export type SearchCollectionSegmentsErrors = {
4107
4410
  /**
4108
4411
  * Bad Request
4109
4412
  */
@@ -4129,39 +4432,26 @@ export type RemoveSegmentFromCollectionErrors = {
4129
4432
  */
4130
4433
  500: Error500;
4131
4434
  };
4132
- export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4133
- export type RemoveSegmentFromCollectionResponses = {
4435
+ export type SearchCollectionSegmentsError = SearchCollectionSegmentsErrors[keyof SearchCollectionSegmentsErrors];
4436
+ export type SearchCollectionSegmentsResponses = {
4134
4437
  /**
4135
- * No Content
4438
+ * OK
4136
4439
  */
4137
- 204: void;
4440
+ 200: SearchResponse;
4138
4441
  };
4139
- export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4140
- export type UpdateCollectionSegmentData = {
4141
- body: {
4142
- /**
4143
- * New position in the collection
4144
- */
4145
- position?: number;
4146
- /**
4147
- * Updated annotation
4148
- */
4149
- note?: string;
4150
- };
4442
+ export type SearchCollectionSegmentsResponse = SearchCollectionSegmentsResponses[keyof SearchCollectionSegmentsResponses];
4443
+ export type GetCollectionStatsData = {
4444
+ body?: never;
4151
4445
  path: {
4152
4446
  /**
4153
4447
  * Collection ID
4154
4448
  */
4155
4449
  id: number;
4156
- /**
4157
- * Segment UUID
4158
- */
4159
- uuid: string;
4160
4450
  };
4161
4451
  query?: never;
4162
- url: '/v1/collections/{id}/segments/{uuid}';
4452
+ url: '/v1/collections/{id}/stats';
4163
4453
  };
4164
- export type UpdateCollectionSegmentErrors = {
4454
+ export type GetCollectionStatsErrors = {
4165
4455
  /**
4166
4456
  * Bad Request
4167
4457
  */
@@ -4187,14 +4477,14 @@ export type UpdateCollectionSegmentErrors = {
4187
4477
  */
4188
4478
  500: Error500;
4189
4479
  };
4190
- export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4191
- export type UpdateCollectionSegmentResponses = {
4480
+ export type GetCollectionStatsError = GetCollectionStatsErrors[keyof GetCollectionStatsErrors];
4481
+ export type GetCollectionStatsResponses = {
4192
4482
  /**
4193
- * No Content
4483
+ * OK
4194
4484
  */
4195
- 204: void;
4485
+ 200: SearchStatsResponse;
4196
4486
  };
4197
- export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4487
+ export type GetCollectionStatsResponse = GetCollectionStatsResponses[keyof GetCollectionStatsResponses];
4198
4488
  export type GetAdminDashboardData = {
4199
4489
  body?: never;
4200
4490
  path?: never;
@@ -4666,18 +4956,104 @@ export type PurgeAdminQueueFailedResponses = {
4666
4956
  };
4667
4957
  };
4668
4958
  export type PurgeAdminQueueFailedResponse = PurgeAdminQueueFailedResponses[keyof PurgeAdminQueueFailedResponses];
4959
+ export type ClearAdminImpersonationData = {
4960
+ body?: never;
4961
+ path?: never;
4962
+ query?: never;
4963
+ url: '/v1/admin/impersonation';
4964
+ };
4965
+ export type ClearAdminImpersonationErrors = {
4966
+ /**
4967
+ * Unauthorized
4968
+ */
4969
+ 401: Error401;
4970
+ /**
4971
+ * Forbidden
4972
+ */
4973
+ 403: Error403;
4974
+ /**
4975
+ * Too Many Requests
4976
+ */
4977
+ 429: Error429;
4978
+ /**
4979
+ * Internal Server Error
4980
+ */
4981
+ 500: Error500;
4982
+ };
4983
+ export type ClearAdminImpersonationError = ClearAdminImpersonationErrors[keyof ClearAdminImpersonationErrors];
4984
+ export type ClearAdminImpersonationResponses = {
4985
+ /**
4986
+ * Impersonation session cleared
4987
+ */
4988
+ 200: {
4989
+ message: string;
4990
+ };
4991
+ };
4992
+ export type ClearAdminImpersonationResponse = ClearAdminImpersonationResponses[keyof ClearAdminImpersonationResponses];
4993
+ export type ImpersonateAdminUserData = {
4994
+ body: {
4995
+ /**
4996
+ * User ID to impersonate
4997
+ */
4998
+ userId: number;
4999
+ };
5000
+ path?: never;
5001
+ query?: never;
5002
+ url: '/v1/admin/impersonation';
5003
+ };
5004
+ export type ImpersonateAdminUserErrors = {
5005
+ /**
5006
+ * Bad Request
5007
+ */
5008
+ 400: Error400;
5009
+ /**
5010
+ * Unauthorized
5011
+ */
5012
+ 401: Error401;
5013
+ /**
5014
+ * Forbidden
5015
+ */
5016
+ 403: Error403;
5017
+ /**
5018
+ * Not Found
5019
+ */
5020
+ 404: Error404;
5021
+ /**
5022
+ * Too Many Requests
5023
+ */
5024
+ 429: Error429;
5025
+ /**
5026
+ * Internal Server Error
5027
+ */
5028
+ 500: Error500;
5029
+ };
5030
+ export type ImpersonateAdminUserError = ImpersonateAdminUserErrors[keyof ImpersonateAdminUserErrors];
5031
+ export type ImpersonateAdminUserResponses = {
5032
+ /**
5033
+ * Impersonation session created
5034
+ */
5035
+ 200: {
5036
+ message: string;
5037
+ user: {
5038
+ id: number;
5039
+ username: string;
5040
+ email: string;
5041
+ };
5042
+ };
5043
+ };
5044
+ export type ImpersonateAdminUserResponse = ImpersonateAdminUserResponses[keyof ImpersonateAdminUserResponses];
4669
5045
  export type ListAdminReportsData = {
4670
5046
  body?: never;
4671
5047
  path?: never;
4672
5048
  query?: {
4673
5049
  /**
4674
- * Cursor for pagination (report ID to start after)
5050
+ * Opaque pagination cursor token
4675
5051
  */
4676
- cursor?: number;
5052
+ cursor?: string;
4677
5053
  /**
4678
5054
  * Number of results per page
4679
5055
  */
4680
- limit?: number;
5056
+ take?: number;
4681
5057
  /**
4682
5058
  * Filter by report status
4683
5059
  */
@@ -4703,9 +5079,9 @@ export type ListAdminReportsData = {
4703
5079
  */
4704
5080
  'target.segmentUuid'?: string;
4705
5081
  /**
4706
- * Filter by review check run ID
5082
+ * Filter by audit run ID
4707
5083
  */
4708
- reviewCheckRunId?: number;
5084
+ auditRunId?: number;
4709
5085
  };
4710
5086
  url: '/v1/admin/reports';
4711
5087
  };
@@ -4780,54 +5156,13 @@ export type UpdateAdminReportResponses = {
4780
5156
  200: Report;
4781
5157
  };
4782
5158
  export type UpdateAdminReportResponse = UpdateAdminReportResponses[keyof UpdateAdminReportResponses];
4783
- export type RunAdminReviewData = {
4784
- body?: never;
4785
- path?: never;
4786
- query?: {
4787
- /**
4788
- * Optional category filter
4789
- */
4790
- category?: 'ANIME' | 'JDRAMA';
4791
- /**
4792
- * Optional check name to run a single check instead of all
4793
- */
4794
- checkName?: string;
4795
- };
4796
- url: '/v1/admin/review/run';
4797
- };
4798
- export type RunAdminReviewErrors = {
4799
- /**
4800
- * Unauthorized
4801
- */
4802
- 401: Error401;
4803
- /**
4804
- * Forbidden
4805
- */
4806
- 403: Error403;
4807
- /**
4808
- * Too Many Requests
4809
- */
4810
- 429: Error429;
4811
- /**
4812
- * Internal Server Error
4813
- */
4814
- 500: Error500;
4815
- };
4816
- export type RunAdminReviewError = RunAdminReviewErrors[keyof RunAdminReviewErrors];
4817
- export type RunAdminReviewResponses = {
4818
- /**
4819
- * Check run completed
4820
- */
4821
- 200: RunReviewResponse;
4822
- };
4823
- export type RunAdminReviewResponse = RunAdminReviewResponses[keyof RunAdminReviewResponses];
4824
- export type ListAdminReviewChecksData = {
5159
+ export type ListAdminMediaAuditsData = {
4825
5160
  body?: never;
4826
5161
  path?: never;
4827
5162
  query?: never;
4828
- url: '/v1/admin/review/checks';
5163
+ url: '/v1/admin/media/audits';
4829
5164
  };
4830
- export type ListAdminReviewChecksErrors = {
5165
+ export type ListAdminMediaAuditsErrors = {
4831
5166
  /**
4832
5167
  * Unauthorized
4833
5168
  */
@@ -4845,15 +5180,15 @@ export type ListAdminReviewChecksErrors = {
4845
5180
  */
4846
5181
  500: Error500;
4847
5182
  };
4848
- export type ListAdminReviewChecksError = ListAdminReviewChecksErrors[keyof ListAdminReviewChecksErrors];
4849
- export type ListAdminReviewChecksResponses = {
5183
+ export type ListAdminMediaAuditsError = ListAdminMediaAuditsErrors[keyof ListAdminMediaAuditsErrors];
5184
+ export type ListAdminMediaAuditsResponses = {
4850
5185
  /**
4851
5186
  * OK
4852
5187
  */
4853
- 200: Array<ReviewCheck>;
5188
+ 200: Array<MediaAudit>;
4854
5189
  };
4855
- export type ListAdminReviewChecksResponse = ListAdminReviewChecksResponses[keyof ListAdminReviewChecksResponses];
4856
- export type UpdateAdminReviewCheckData = {
5190
+ export type ListAdminMediaAuditsResponse = ListAdminMediaAuditsResponses[keyof ListAdminMediaAuditsResponses];
5191
+ export type UpdateAdminMediaAuditData = {
4857
5192
  body: {
4858
5193
  /**
4859
5194
  * New threshold values
@@ -4862,20 +5197,20 @@ export type UpdateAdminReviewCheckData = {
4862
5197
  [key: string]: unknown;
4863
5198
  };
4864
5199
  /**
4865
- * Enable or disable this check
5200
+ * Enable or disable this audit
4866
5201
  */
4867
5202
  enabled?: boolean;
4868
5203
  };
4869
5204
  path: {
4870
5205
  /**
4871
- * Check name identifier
5206
+ * Audit name identifier
4872
5207
  */
4873
5208
  name: string;
4874
5209
  };
4875
5210
  query?: never;
4876
- url: '/v1/admin/review/checks/{name}';
5211
+ url: '/v1/admin/media/audits/{name}';
4877
5212
  };
4878
- export type UpdateAdminReviewCheckErrors = {
5213
+ export type UpdateAdminMediaAuditErrors = {
4879
5214
  /**
4880
5215
  * Bad Request
4881
5216
  */
@@ -4901,74 +5236,31 @@ export type UpdateAdminReviewCheckErrors = {
4901
5236
  */
4902
5237
  500: Error500;
4903
5238
  };
4904
- export type UpdateAdminReviewCheckError = UpdateAdminReviewCheckErrors[keyof UpdateAdminReviewCheckErrors];
4905
- export type UpdateAdminReviewCheckResponses = {
5239
+ export type UpdateAdminMediaAuditError = UpdateAdminMediaAuditErrors[keyof UpdateAdminMediaAuditErrors];
5240
+ export type UpdateAdminMediaAuditResponses = {
4906
5241
  /**
4907
- * Check updated successfully
5242
+ * Audit updated successfully
4908
5243
  */
4909
- 200: ReviewCheck;
5244
+ 200: MediaAudit;
4910
5245
  };
4911
- export type UpdateAdminReviewCheckResponse = UpdateAdminReviewCheckResponses[keyof UpdateAdminReviewCheckResponses];
4912
- export type ListAdminReviewRunsData = {
5246
+ export type UpdateAdminMediaAuditResponse = UpdateAdminMediaAuditResponses[keyof UpdateAdminMediaAuditResponses];
5247
+ export type RunAdminMediaAuditData = {
4913
5248
  body?: never;
4914
- path?: never;
4915
- query?: {
4916
- /**
4917
- * Filter by check name
4918
- */
4919
- checkName?: string;
4920
- /**
4921
- * Cursor for pagination
4922
- */
4923
- cursor?: number;
5249
+ path: {
4924
5250
  /**
4925
- * Number of results per page
5251
+ * Audit name to run, or "all" to run all enabled audits
4926
5252
  */
4927
- limit?: number;
4928
- };
4929
- url: '/v1/admin/review/runs';
4930
- };
4931
- export type ListAdminReviewRunsErrors = {
4932
- /**
4933
- * Unauthorized
4934
- */
4935
- 401: Error401;
4936
- /**
4937
- * Forbidden
4938
- */
4939
- 403: Error403;
4940
- /**
4941
- * Too Many Requests
4942
- */
4943
- 429: Error429;
4944
- /**
4945
- * Internal Server Error
4946
- */
4947
- 500: Error500;
4948
- };
4949
- export type ListAdminReviewRunsError = ListAdminReviewRunsErrors[keyof ListAdminReviewRunsErrors];
4950
- export type ListAdminReviewRunsResponses = {
4951
- /**
4952
- * OK
4953
- */
4954
- 200: {
4955
- runs: Array<ReviewCheckRun>;
4956
- pagination: CursorPagination;
5253
+ name: string;
4957
5254
  };
4958
- };
4959
- export type ListAdminReviewRunsResponse = ListAdminReviewRunsResponses[keyof ListAdminReviewRunsResponses];
4960
- export type GetAdminReviewRunData = {
4961
- body?: never;
4962
- path: {
5255
+ query?: {
4963
5256
  /**
4964
- * Run ID
5257
+ * Optional category filter
4965
5258
  */
4966
- id: number;
5259
+ category?: 'ANIME' | 'JDRAMA';
4967
5260
  };
4968
- query?: never;
4969
- url: '/v1/admin/review/runs/{id}';
5261
+ url: '/v1/admin/media/audits/{name}/run';
4970
5262
  };
4971
- export type GetAdminReviewRunErrors = {
5263
+ export type RunAdminMediaAuditErrors = {
4972
5264
  /**
4973
5265
  * Unauthorized
4974
5266
  */
@@ -4990,82 +5282,34 @@ export type GetAdminReviewRunErrors = {
4990
5282
  */
4991
5283
  500: Error500;
4992
5284
  };
4993
- export type GetAdminReviewRunError = GetAdminReviewRunErrors[keyof GetAdminReviewRunErrors];
4994
- export type GetAdminReviewRunResponses = {
5285
+ export type RunAdminMediaAuditError = RunAdminMediaAuditErrors[keyof RunAdminMediaAuditErrors];
5286
+ export type RunAdminMediaAuditResponses = {
4995
5287
  /**
4996
- * OK
5288
+ * Audit run completed
4997
5289
  */
4998
- 200: {
4999
- run: ReviewCheckRun;
5000
- reports: Array<Report>;
5001
- };
5290
+ 200: RunAuditResponse;
5002
5291
  };
5003
- export type GetAdminReviewRunResponse = GetAdminReviewRunResponses[keyof GetAdminReviewRunResponses];
5004
- export type ListAdminReviewAllowlistData = {
5292
+ export type RunAdminMediaAuditResponse = RunAdminMediaAuditResponses[keyof RunAdminMediaAuditResponses];
5293
+ export type ListAdminMediaAuditRunsData = {
5005
5294
  body?: never;
5006
5295
  path?: never;
5007
5296
  query?: {
5008
5297
  /**
5009
- * Filter by check name
5010
- */
5011
- checkName?: string;
5012
- };
5013
- url: '/v1/admin/review/allowlist';
5014
- };
5015
- export type ListAdminReviewAllowlistErrors = {
5016
- /**
5017
- * Unauthorized
5018
- */
5019
- 401: Error401;
5020
- /**
5021
- * Forbidden
5022
- */
5023
- 403: Error403;
5024
- /**
5025
- * Too Many Requests
5026
- */
5027
- 429: Error429;
5028
- /**
5029
- * Internal Server Error
5030
- */
5031
- 500: Error500;
5032
- };
5033
- export type ListAdminReviewAllowlistError = ListAdminReviewAllowlistErrors[keyof ListAdminReviewAllowlistErrors];
5034
- export type ListAdminReviewAllowlistResponses = {
5035
- /**
5036
- * OK
5037
- */
5038
- 200: Array<ReviewAllowlist>;
5039
- };
5040
- export type ListAdminReviewAllowlistResponse = ListAdminReviewAllowlistResponses[keyof ListAdminReviewAllowlistResponses];
5041
- export type CreateAdminReviewAllowlistEntryData = {
5042
- body: {
5043
- /**
5044
- * Check name to allowlist for
5045
- */
5046
- checkName: string;
5047
- /**
5048
- * Media ID to allowlist
5298
+ * Filter by audit name
5049
5299
  */
5050
- mediaId: number;
5300
+ auditName?: string;
5051
5301
  /**
5052
- * Episode number (for episode-level checks)
5302
+ * Opaque pagination cursor token
5053
5303
  */
5054
- episodeNumber?: number;
5304
+ cursor?: string;
5055
5305
  /**
5056
- * Reason for allowlisting
5306
+ * Number of results per page
5057
5307
  */
5058
- reason?: string;
5308
+ take?: number;
5059
5309
  };
5060
- path?: never;
5061
- query?: never;
5062
- url: '/v1/admin/review/allowlist';
5310
+ url: '/v1/admin/media/audits/runs';
5063
5311
  };
5064
- export type CreateAdminReviewAllowlistEntryErrors = {
5065
- /**
5066
- * Bad Request
5067
- */
5068
- 400: Error400;
5312
+ export type ListAdminMediaAuditRunsErrors = {
5069
5313
  /**
5070
5314
  * Unauthorized
5071
5315
  */
@@ -5074,10 +5318,6 @@ export type CreateAdminReviewAllowlistEntryErrors = {
5074
5318
  * Forbidden
5075
5319
  */
5076
5320
  403: Error403;
5077
- /**
5078
- * Conflict
5079
- */
5080
- 409: Error409;
5081
5321
  /**
5082
5322
  * Too Many Requests
5083
5323
  */
@@ -5087,26 +5327,29 @@ export type CreateAdminReviewAllowlistEntryErrors = {
5087
5327
  */
5088
5328
  500: Error500;
5089
5329
  };
5090
- export type CreateAdminReviewAllowlistEntryError = CreateAdminReviewAllowlistEntryErrors[keyof CreateAdminReviewAllowlistEntryErrors];
5091
- export type CreateAdminReviewAllowlistEntryResponses = {
5330
+ export type ListAdminMediaAuditRunsError = ListAdminMediaAuditRunsErrors[keyof ListAdminMediaAuditRunsErrors];
5331
+ export type ListAdminMediaAuditRunsResponses = {
5092
5332
  /**
5093
- * Added to allowlist
5333
+ * OK
5094
5334
  */
5095
- 201: ReviewAllowlist;
5335
+ 200: {
5336
+ runs: Array<MediaAuditRun>;
5337
+ pagination: OpaqueCursorPagination;
5338
+ };
5096
5339
  };
5097
- export type CreateAdminReviewAllowlistEntryResponse = CreateAdminReviewAllowlistEntryResponses[keyof CreateAdminReviewAllowlistEntryResponses];
5098
- export type DeleteAdminReviewAllowlistEntryData = {
5340
+ export type ListAdminMediaAuditRunsResponse = ListAdminMediaAuditRunsResponses[keyof ListAdminMediaAuditRunsResponses];
5341
+ export type GetAdminMediaAuditRunData = {
5099
5342
  body?: never;
5100
5343
  path: {
5101
5344
  /**
5102
- * Allowlist entry ID
5345
+ * Run ID
5103
5346
  */
5104
5347
  id: number;
5105
5348
  };
5106
5349
  query?: never;
5107
- url: '/v1/admin/review/allowlist/{id}';
5350
+ url: '/v1/admin/media/audits/runs/{id}';
5108
5351
  };
5109
- export type DeleteAdminReviewAllowlistEntryErrors = {
5352
+ export type GetAdminMediaAuditRunErrors = {
5110
5353
  /**
5111
5354
  * Unauthorized
5112
5355
  */
@@ -5128,12 +5371,15 @@ export type DeleteAdminReviewAllowlistEntryErrors = {
5128
5371
  */
5129
5372
  500: Error500;
5130
5373
  };
5131
- export type DeleteAdminReviewAllowlistEntryError = DeleteAdminReviewAllowlistEntryErrors[keyof DeleteAdminReviewAllowlistEntryErrors];
5132
- export type DeleteAdminReviewAllowlistEntryResponses = {
5374
+ export type GetAdminMediaAuditRunError = GetAdminMediaAuditRunErrors[keyof GetAdminMediaAuditRunErrors];
5375
+ export type GetAdminMediaAuditRunResponses = {
5133
5376
  /**
5134
- * Removed from allowlist
5377
+ * OK
5135
5378
  */
5136
- 204: void;
5379
+ 200: {
5380
+ run: MediaAuditRun;
5381
+ reports: Array<Report>;
5382
+ };
5137
5383
  };
5138
- export type DeleteAdminReviewAllowlistEntryResponse = DeleteAdminReviewAllowlistEntryResponses[keyof DeleteAdminReviewAllowlistEntryResponses];
5384
+ export type GetAdminMediaAuditRunResponse = GetAdminMediaAuditRunResponses[keyof GetAdminMediaAuditRunResponses];
5139
5385
  //# sourceMappingURL=types.gen.d.ts.map