@brigadasos/nadeshiko-sdk 1.4.3-dev.09dcbc3 → 1.4.3-dev.2ba18e0

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.
@@ -1,5 +1,5 @@
1
1
  export type ClientOptions = {
2
- baseUrl: 'http://localhost:5000' | 'https://api.nadeshiko.co' | (string & {});
2
+ baseUrl: 'https://api.nadeshiko.co' | (string & {});
3
3
  };
4
4
  /**
5
5
  * A media filter entry with optional episode restriction
@@ -108,11 +108,11 @@ export type SearchRequest = {
108
108
  /**
109
109
  * Max amount of entries by response
110
110
  */
111
- limit?: number;
111
+ take?: number;
112
112
  /**
113
- * Current page of search
113
+ * Opaque cursor token returned from the previous search page
114
114
  */
115
- cursor?: Array<number>;
115
+ cursor?: string;
116
116
  /**
117
117
  * Sort configuration
118
118
  */
@@ -247,9 +247,10 @@ export type ExternalId = {
247
247
  */
248
248
  export type Seiyuu = {
249
249
  /**
250
- * AniList staff ID
250
+ * Internal seiyuu ID
251
251
  */
252
252
  id: number;
253
+ externalIds: ExternalId;
253
254
  /**
254
255
  * Japanese name of the voice actor
255
256
  */
@@ -371,31 +372,31 @@ export type PaginationInfo = {
371
372
  /**
372
373
  * Whether there are more results after this page
373
374
  */
374
- hasMore?: boolean;
375
+ hasMore: boolean;
375
376
  /**
376
377
  * Estimated total number of matching segments
377
378
  */
378
- estimatedTotalHits?: number;
379
+ estimatedTotalHits: number;
379
380
  /**
380
381
  * Whether estimatedTotalHits is exact or a lower bound
381
382
  */
382
- estimatedTotalHitsRelation?: 'EXACT' | 'LOWER_BOUND';
383
+ estimatedTotalHitsRelation: 'EXACT' | 'LOWER_BOUND';
383
384
  /**
384
- * 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)
385
386
  */
386
- cursor?: Array<number>;
387
+ cursor: string;
387
388
  };
388
389
  export type SearchResponse = {
389
- segments?: Array<Segment>;
390
- includes?: {
390
+ segments: Array<Segment>;
391
+ includes: {
391
392
  /**
392
393
  * Media objects keyed by mediaId
393
394
  */
394
- media?: {
395
+ media: {
395
396
  [key: string]: Media;
396
397
  };
397
398
  };
398
- pagination?: PaginationInfo;
399
+ pagination: PaginationInfo;
399
400
  };
400
401
  /**
401
402
  * Bad Request error response
@@ -615,20 +616,20 @@ export type MediaSearchStats = {
615
616
  * Count of entries grouped by media category
616
617
  */
617
618
  export type CategoryCount = {
618
- category?: Category;
619
+ category: Category;
619
620
  /**
620
621
  * Number of entries in this category
621
622
  */
622
- count?: number;
623
+ count: number;
623
624
  };
624
625
  export type SearchStatsResponse = {
625
- media?: Array<MediaSearchStats>;
626
- categories?: Array<CategoryCount>;
627
- includes?: {
626
+ media: Array<MediaSearchStats>;
627
+ categories: Array<CategoryCount>;
628
+ includes: {
628
629
  /**
629
630
  * Media objects keyed by mediaId
630
631
  */
631
- media?: {
632
+ media: {
632
633
  [key: string]: Media;
633
634
  };
634
635
  };
@@ -673,27 +674,27 @@ export type WordMatch = {
673
674
  /**
674
675
  * The word that was searched for
675
676
  */
676
- word?: string;
677
+ word: string;
677
678
  /**
678
679
  * Indicates whether the word was found in any segment
679
680
  */
680
- isMatch?: boolean;
681
+ isMatch: boolean;
681
682
  /**
682
683
  * Total number of times this word appears across all media
683
684
  */
684
- matchCount?: number;
685
+ matchCount: number;
685
686
  /**
686
687
  * List of media containing this word
687
688
  */
688
- media?: Array<WordMatchMedia>;
689
+ media: Array<WordMatchMedia>;
689
690
  };
690
691
  export type SearchMultipleResponse = {
691
- results?: Array<WordMatch>;
692
- includes?: {
692
+ results: Array<WordMatch>;
693
+ includes: {
693
694
  /**
694
695
  * Media objects keyed by mediaId
695
696
  */
696
- media?: {
697
+ media: {
697
698
  [key: string]: Media;
698
699
  };
699
700
  };
@@ -701,32 +702,29 @@ export type SearchMultipleResponse = {
701
702
  /**
702
703
  * Resource to expand in media responses
703
704
  */
704
- export type MediaIncludeExpansion = 'media' | 'media.characters';
705
+ export type MediaIncludeExpansion = 'media.characters';
705
706
  /**
706
- * Cursor pagination metadata
707
+ * Opaque cursor pagination metadata
707
708
  */
708
- export type CursorPagination = {
709
+ export type OpaqueCursorPagination = {
709
710
  /**
710
711
  * Whether more results are available
711
712
  */
712
713
  hasMore: boolean;
713
714
  /**
714
- * Cursor for the next page (`null` when `hasMore` is `false`)
715
+ * Opaque token for the next page (`null` when `hasMore` is `false`)
715
716
  */
716
- cursor: number;
717
+ cursor: string;
717
718
  };
718
719
  export type MediaListResponse = {
719
720
  media: Array<Media>;
720
- pagination: CursorPagination;
721
+ pagination: OpaqueCursorPagination;
721
722
  };
722
723
  /**
723
724
  * Character data for creating/updating media
724
725
  */
725
726
  export type CharacterInput = {
726
- /**
727
- * AniList character ID
728
- */
729
- id: number;
727
+ externalIds: ExternalId;
730
728
  /**
731
729
  * Japanese name of the character
732
730
  */
@@ -743,22 +741,21 @@ export type CharacterInput = {
743
741
  * Character's role in the media
744
742
  */
745
743
  role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
746
- /**
747
- * AniList staff ID for the Japanese voice actor
748
- */
749
- seiyuuId: number;
750
- /**
751
- * Japanese name of the voice actor
752
- */
753
- seiyuuNameJa: string;
754
- /**
755
- * English name of the voice actor
756
- */
757
- seiyuuNameEn: string;
758
- /**
759
- * Voice actor profile image URL
760
- */
761
- 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
+ };
762
759
  };
763
760
  /**
764
761
  * Request body for creating a new media entry
@@ -907,205 +904,14 @@ export type Error404 = {
907
904
  [key: string]: string;
908
905
  };
909
906
  };
910
- /**
911
- * Request body for updating an existing media entry (all fields optional)
912
- */
913
- export type MediaUpdateRequest = {
914
- externalIds?: ExternalId;
915
- /**
916
- * Original Japanese name of the media
917
- */
918
- nameJa?: string;
919
- /**
920
- * Romaji transliteration of the media name
921
- */
922
- nameRomaji?: string;
923
- /**
924
- * English name of the media
925
- */
926
- nameEn?: string;
927
- /**
928
- * Format of the media release (e.g., TV, OVA, Movie)
929
- */
930
- airingFormat?: string;
931
- /**
932
- * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
933
- */
934
- airingStatus?: string;
935
- /**
936
- * List of genres associated with the media
937
- */
938
- genres?: Array<string>;
939
- /**
940
- * Storage backend for media assets
941
- */
942
- storage?: 'LOCAL' | 'R2';
943
- /**
944
- * Start date of the media (first airing/release)
945
- */
946
- startDate?: string;
947
- /**
948
- * End date of the media (last airing/release)
949
- */
950
- endDate?: string;
951
- /**
952
- * Media category
953
- */
954
- category?: 'ANIME' | 'JDRAMA';
955
- /**
956
- * Version of the media-sub-splitter used
957
- */
958
- version?: string;
959
- /**
960
- * Hash salt used when generating the hash for the related media assets
961
- */
962
- hashSalt?: string;
963
- /**
964
- * Animation studio that produced the media
965
- */
966
- studio?: string;
967
- /**
968
- * Airing season label for the media
969
- */
970
- seasonName?: string;
971
- /**
972
- * Airing year for the media
973
- */
974
- seasonYear?: number;
975
- /**
976
- * Base path for R2/CDN storage (e.g. "media/21459")
977
- */
978
- storageBasePath?: string;
979
- /**
980
- * List of characters appearing in the media with their voice actors
981
- */
982
- characters?: Array<CharacterInput>;
983
- /**
984
- * Total number of subtitle segments available
985
- */
986
- segmentCount?: number;
987
- };
988
- export type Episode = {
989
- /**
990
- * ID of the media this episode belongs to
991
- */
992
- mediaId: number;
993
- /**
994
- * Episode number within the media
995
- */
996
- episodeNumber: number;
997
- /**
998
- * English title of the episode
999
- */
1000
- titleEn?: string;
1001
- /**
1002
- * Romanized title of the episode
1003
- */
1004
- titleRomaji?: string;
1005
- /**
1006
- * Japanese title of the episode
1007
- */
1008
- titleJa?: string;
1009
- /**
1010
- * Episode description or synopsis
1011
- */
1012
- description?: string;
1013
- /**
1014
- * When the episode originally aired
1015
- */
1016
- airedAt?: string;
1017
- /**
1018
- * Episode duration in seconds
1019
- */
1020
- lengthSeconds?: number;
1021
- /**
1022
- * URL to episode thumbnail image
1023
- */
1024
- thumbnailUrl?: string;
1025
- /**
1026
- * Number of segments in this episode
1027
- */
1028
- segmentCount: number;
1029
- };
1030
- export type EpisodeListResponse = {
1031
- /**
1032
- * Array of episode objects
1033
- */
1034
- episodes: Array<Episode>;
1035
- pagination: CursorPagination;
1036
- };
1037
- export type EpisodeCreateRequest = {
1038
- /**
1039
- * English title of the episode
1040
- */
1041
- titleEn?: string;
1042
- /**
1043
- * Romanized title of the episode
1044
- */
1045
- titleRomaji?: string;
1046
- /**
1047
- * Japanese title of the episode
1048
- */
1049
- titleJa?: string;
1050
- /**
1051
- * Episode description or synopsis
1052
- */
1053
- description?: string;
1054
- /**
1055
- * When the episode originally aired
1056
- */
1057
- airedAt?: string;
1058
- /**
1059
- * Episode duration in seconds
1060
- */
1061
- lengthSeconds?: number;
1062
- /**
1063
- * URL to episode thumbnail image
1064
- */
1065
- thumbnailUrl?: string;
1066
- /**
1067
- * Episode number within the media (must be unique for this media)
1068
- */
1069
- episodeNumber: number;
1070
- };
1071
907
  /**
1072
908
  * All fields are optional for partial updates
1073
909
  */
1074
- export type EpisodeUpdateRequest = {
1075
- /**
1076
- * English title of the episode
1077
- */
1078
- titleEn?: string;
1079
- /**
1080
- * Romanized title of the episode
1081
- */
1082
- titleRomaji?: string;
1083
- /**
1084
- * Japanese title of the episode
1085
- */
1086
- titleJa?: string;
1087
- /**
1088
- * Episode description or synopsis
1089
- */
1090
- description?: string;
1091
- /**
1092
- * When the episode originally aired
1093
- */
1094
- airedAt?: string;
1095
- /**
1096
- * Episode duration in seconds
1097
- */
1098
- lengthSeconds?: number;
1099
- /**
1100
- * URL to episode thumbnail image
1101
- */
1102
- thumbnailUrl?: string;
1103
- };
1104
- export type SegmentCreateRequest = {
910
+ export type SegmentUpdateRequest = {
1105
911
  /**
1106
912
  * Position of the segment within the episode
1107
913
  */
1108
- position: number;
914
+ position?: number;
1109
915
  /**
1110
916
  * Segment status
1111
917
  */
@@ -1113,12 +919,12 @@ export type SegmentCreateRequest = {
1113
919
  /**
1114
920
  * Start time of the segment in milliseconds from the beginning of the episode
1115
921
  */
1116
- startTimeMs: number;
922
+ startTimeMs?: number;
1117
923
  /**
1118
924
  * End time of the segment in milliseconds from the beginning of the episode
1119
925
  */
1120
- endTimeMs: number;
1121
- textJa: {
926
+ endTimeMs?: number;
927
+ textJa?: {
1122
928
  /**
1123
929
  * Original Japanese content of the segment
1124
930
  */
@@ -1160,11 +966,11 @@ export type SegmentCreateRequest = {
1160
966
  /**
1161
967
  * Storage backend for segment assets
1162
968
  */
1163
- storage: 'LOCAL' | 'R2';
969
+ storage?: 'LOCAL' | 'R2';
1164
970
  /**
1165
971
  * Hash identifier for the segment (from segment JSON)
1166
972
  */
1167
- hashedId: string;
973
+ hashedId?: string;
1168
974
  };
1169
975
  /**
1170
976
  * Segment with internal fields (for internal API responses)
@@ -1173,99 +979,31 @@ export type SegmentInternal = Segment & {
1173
979
  /**
1174
980
  * Storage backend for segment assets
1175
981
  */
1176
- storage?: 'LOCAL' | 'R2';
982
+ storage: 'LOCAL' | 'R2';
1177
983
  /**
1178
984
  * Hash identifier for the segment
1179
985
  */
1180
- hashedId?: string;
986
+ hashedId: string;
1181
987
  /**
1182
988
  * Base path in the storage backend
1183
989
  */
1184
- storageBasePath?: string;
990
+ storageBasePath: string;
1185
991
  /**
1186
992
  * Raw WD Tagger v3 classifier output used to derive content rating
1187
993
  */
1188
- ratingAnalysis?: {
994
+ ratingAnalysis: {
1189
995
  [key: string]: unknown;
1190
996
  };
1191
997
  /**
1192
998
  * POS tokenization results keyed by engine (sudachi, unidic)
1193
999
  */
1194
- posAnalysis?: {
1000
+ posAnalysis: {
1195
1001
  [key: string]: unknown;
1196
1002
  };
1197
1003
  };
1198
- /**
1199
- * All fields are optional for partial updates
1200
- */
1201
- export type SegmentUpdateRequest = {
1202
- /**
1203
- * Position of the segment within the episode
1204
- */
1205
- position?: number;
1206
- /**
1207
- * Segment status
1208
- */
1209
- status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
1210
- /**
1211
- * Start time of the segment in milliseconds from the beginning of the episode
1212
- */
1213
- startTimeMs?: number;
1214
- /**
1215
- * End time of the segment in milliseconds from the beginning of the episode
1216
- */
1217
- endTimeMs?: number;
1218
- textJa?: {
1219
- /**
1220
- * Original Japanese content of the segment
1221
- */
1222
- content?: string;
1223
- };
1224
- textEs?: {
1225
- /**
1226
- * Spanish translation of the segment content
1227
- */
1228
- content?: string;
1229
- /**
1230
- * Whether the Spanish translation was machine-translated
1231
- */
1232
- isMachineTranslated?: boolean;
1233
- };
1234
- textEn?: {
1235
- /**
1236
- * English translation of the segment content
1237
- */
1238
- content?: string;
1239
- /**
1240
- * Whether the English translation was machine-translated
1241
- */
1242
- isMachineTranslated?: boolean;
1243
- };
1244
- contentRating?: ContentRating;
1245
- /**
1246
- * Raw WD Tagger v3 classifier output used to derive content rating
1247
- */
1248
- ratingAnalysis?: {
1249
- [key: string]: unknown;
1250
- };
1251
- /**
1252
- * POS tokenization results keyed by engine (sudachi, unidic)
1253
- */
1254
- posAnalysis?: {
1255
- [key: string]: unknown;
1256
- };
1257
- /**
1258
- * Storage backend for segment assets
1259
- */
1260
- storage?: 'LOCAL' | 'R2';
1261
- /**
1262
- * Hash identifier for the segment (from segment JSON)
1263
- */
1264
- hashedId?: string;
1265
- };
1266
1004
  export type SegmentContextResponse = {
1267
1005
  segments: Array<Segment>;
1268
- includes?: {
1006
+ includes: {
1269
1007
  /**
1270
1008
  * Media objects keyed by mediaId
1271
1009
  */
@@ -1297,7 +1035,7 @@ export type Series = {
1297
1035
  };
1298
1036
  export type SeriesListResponse = {
1299
1037
  series: Array<Series>;
1300
- pagination: CursorPagination;
1038
+ pagination: OpaqueCursorPagination;
1301
1039
  };
1302
1040
  /**
1303
1041
  * Series with ordered media entries
@@ -1326,8 +1064,8 @@ export type SeriesWithMedia = {
1326
1064
  /**
1327
1065
  * Position in the series (1-indexed)
1328
1066
  */
1329
- position?: number;
1330
- media?: Media;
1067
+ position: number;
1068
+ media: Media;
1331
1069
  }>;
1332
1070
  };
1333
1071
  /**
@@ -1335,9 +1073,10 @@ export type SeriesWithMedia = {
1335
1073
  */
1336
1074
  export type Character = {
1337
1075
  /**
1338
- * AniList character ID
1076
+ * Internal character ID
1339
1077
  */
1340
1078
  id: number;
1079
+ externalIds: ExternalId;
1341
1080
  /**
1342
1081
  * Japanese name of the character
1343
1082
  */
@@ -1360,11 +1099,11 @@ export type CharacterWithMedia = Character & {
1360
1099
  * All media this character appears in
1361
1100
  */
1362
1101
  mediaAppearances: Array<{
1363
- media?: Media;
1102
+ media: Media;
1364
1103
  /**
1365
1104
  * Character role in this media
1366
1105
  */
1367
- role?: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1106
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1368
1107
  }>;
1369
1108
  };
1370
1109
  /**
@@ -1372,31 +1111,291 @@ export type CharacterWithMedia = Character & {
1372
1111
  */
1373
1112
  export type SeiyuuWithRoles = {
1374
1113
  /**
1375
- * AniList staff ID
1114
+ * AniList staff ID
1115
+ */
1116
+ id: number;
1117
+ externalIds: ExternalId;
1118
+ /**
1119
+ * Japanese name of the voice actor
1120
+ */
1121
+ nameJa: string;
1122
+ /**
1123
+ * English name of the voice actor
1124
+ */
1125
+ nameEn: string;
1126
+ /**
1127
+ * Profile image URL
1128
+ */
1129
+ imageUrl: string;
1130
+ /**
1131
+ * Characters voiced by this seiyuu with their media appearances
1132
+ */
1133
+ characters: Array<Character & {
1134
+ media: Media;
1135
+ /**
1136
+ * Character role in this media
1137
+ */
1138
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1139
+ }>;
1140
+ };
1141
+ /**
1142
+ * Request body for updating an existing media entry (all fields optional)
1143
+ */
1144
+ export type MediaUpdateRequest = {
1145
+ externalIds?: ExternalId;
1146
+ /**
1147
+ * Original Japanese name of the media
1148
+ */
1149
+ nameJa?: string;
1150
+ /**
1151
+ * Romaji transliteration of the media name
1152
+ */
1153
+ nameRomaji?: string;
1154
+ /**
1155
+ * English name of the media
1156
+ */
1157
+ nameEn?: string;
1158
+ /**
1159
+ * Format of the media release (e.g., TV, OVA, Movie)
1160
+ */
1161
+ airingFormat?: string;
1162
+ /**
1163
+ * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
1164
+ */
1165
+ airingStatus?: string;
1166
+ /**
1167
+ * List of genres associated with the media
1168
+ */
1169
+ genres?: Array<string>;
1170
+ /**
1171
+ * Storage backend for media assets
1172
+ */
1173
+ storage?: 'LOCAL' | 'R2';
1174
+ /**
1175
+ * Start date of the media (first airing/release)
1176
+ */
1177
+ startDate?: string;
1178
+ /**
1179
+ * End date of the media (last airing/release)
1180
+ */
1181
+ endDate?: string;
1182
+ /**
1183
+ * Media category
1184
+ */
1185
+ category?: 'ANIME' | 'JDRAMA';
1186
+ /**
1187
+ * Version of the media-sub-splitter used
1188
+ */
1189
+ version?: string;
1190
+ /**
1191
+ * Hash salt used when generating the hash for the related media assets
1192
+ */
1193
+ hashSalt?: string;
1194
+ /**
1195
+ * Animation studio that produced the media
1196
+ */
1197
+ studio?: string;
1198
+ /**
1199
+ * Airing season label for the media
1200
+ */
1201
+ seasonName?: string;
1202
+ /**
1203
+ * Airing year for the media
1204
+ */
1205
+ seasonYear?: number;
1206
+ /**
1207
+ * Base path for R2/CDN storage (e.g. "media/21459")
1208
+ */
1209
+ storageBasePath?: string;
1210
+ /**
1211
+ * List of characters appearing in the media with their voice actors
1212
+ */
1213
+ characters?: Array<CharacterInput>;
1214
+ /**
1215
+ * Total number of subtitle segments available
1216
+ */
1217
+ segmentCount?: number;
1218
+ };
1219
+ export type Episode = {
1220
+ /**
1221
+ * ID of the media this episode belongs to
1222
+ */
1223
+ mediaId: number;
1224
+ /**
1225
+ * Episode number within the media
1226
+ */
1227
+ episodeNumber: number;
1228
+ /**
1229
+ * English title of the episode
1230
+ */
1231
+ titleEn?: string;
1232
+ /**
1233
+ * Romanized title of the episode
1234
+ */
1235
+ titleRomaji?: string;
1236
+ /**
1237
+ * Japanese title of the episode
1238
+ */
1239
+ titleJa?: string;
1240
+ /**
1241
+ * Episode description or synopsis
1242
+ */
1243
+ description?: string;
1244
+ /**
1245
+ * When the episode originally aired
1246
+ */
1247
+ airedAt?: string;
1248
+ /**
1249
+ * Episode duration in seconds
1250
+ */
1251
+ lengthSeconds?: number;
1252
+ /**
1253
+ * URL to episode thumbnail image
1254
+ */
1255
+ thumbnailUrl?: string;
1256
+ /**
1257
+ * Number of segments in this episode
1258
+ */
1259
+ segmentCount: number;
1260
+ };
1261
+ export type EpisodeListResponse = {
1262
+ /**
1263
+ * Array of episode objects
1264
+ */
1265
+ episodes: Array<Episode>;
1266
+ pagination: OpaqueCursorPagination;
1267
+ };
1268
+ export type EpisodeCreateRequest = {
1269
+ /**
1270
+ * English title of the episode
1271
+ */
1272
+ titleEn?: string;
1273
+ /**
1274
+ * Romanized title of the episode
1275
+ */
1276
+ titleRomaji?: string;
1277
+ /**
1278
+ * Japanese title of the episode
1279
+ */
1280
+ titleJa?: string;
1281
+ /**
1282
+ * Episode description or synopsis
1283
+ */
1284
+ description?: string;
1285
+ /**
1286
+ * When the episode originally aired
1287
+ */
1288
+ airedAt?: string;
1289
+ /**
1290
+ * Episode duration in seconds
1291
+ */
1292
+ lengthSeconds?: number;
1293
+ /**
1294
+ * URL to episode thumbnail image
1295
+ */
1296
+ thumbnailUrl?: string;
1297
+ /**
1298
+ * Episode number within the media (must be unique for this media)
1299
+ */
1300
+ episodeNumber: number;
1301
+ };
1302
+ /**
1303
+ * All fields are optional for partial updates
1304
+ */
1305
+ export type EpisodeUpdateRequest = {
1306
+ /**
1307
+ * English title of the episode
1308
+ */
1309
+ titleEn?: string;
1310
+ /**
1311
+ * Romanized title of the episode
1312
+ */
1313
+ titleRomaji?: string;
1314
+ /**
1315
+ * Japanese title of the episode
1316
+ */
1317
+ titleJa?: string;
1318
+ /**
1319
+ * Episode description or synopsis
1320
+ */
1321
+ description?: string;
1322
+ /**
1323
+ * When the episode originally aired
1324
+ */
1325
+ airedAt?: string;
1326
+ /**
1327
+ * Episode duration in seconds
1328
+ */
1329
+ lengthSeconds?: number;
1330
+ /**
1331
+ * URL to episode thumbnail image
1332
+ */
1333
+ thumbnailUrl?: string;
1334
+ };
1335
+ export type SegmentCreateRequest = {
1336
+ /**
1337
+ * Position of the segment within the episode
1338
+ */
1339
+ position: number;
1340
+ /**
1341
+ * Segment status
1342
+ */
1343
+ status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
1344
+ /**
1345
+ * Start time of the segment in milliseconds from the beginning of the episode
1346
+ */
1347
+ startTimeMs: number;
1348
+ /**
1349
+ * End time of the segment in milliseconds from the beginning of the episode
1376
1350
  */
1377
- id: number;
1351
+ endTimeMs: number;
1352
+ textJa: {
1353
+ /**
1354
+ * Original Japanese content of the segment
1355
+ */
1356
+ content?: string;
1357
+ };
1358
+ textEs?: {
1359
+ /**
1360
+ * Spanish translation of the segment content
1361
+ */
1362
+ content?: string;
1363
+ /**
1364
+ * Whether the Spanish translation was machine-translated
1365
+ */
1366
+ isMachineTranslated?: boolean;
1367
+ };
1368
+ textEn?: {
1369
+ /**
1370
+ * English translation of the segment content
1371
+ */
1372
+ content?: string;
1373
+ /**
1374
+ * Whether the English translation was machine-translated
1375
+ */
1376
+ isMachineTranslated?: boolean;
1377
+ };
1378
+ contentRating?: ContentRating;
1378
1379
  /**
1379
- * Japanese name of the voice actor
1380
+ * Raw WD Tagger v3 classifier output used to derive content rating
1380
1381
  */
1381
- nameJa: string;
1382
+ ratingAnalysis?: {
1383
+ [key: string]: unknown;
1384
+ };
1382
1385
  /**
1383
- * English name of the voice actor
1386
+ * POS tokenization results keyed by engine (sudachi, unidic)
1384
1387
  */
1385
- nameEn: string;
1388
+ posAnalysis?: {
1389
+ [key: string]: unknown;
1390
+ };
1386
1391
  /**
1387
- * Profile image URL
1392
+ * Storage backend for segment assets
1388
1393
  */
1389
- imageUrl: string;
1394
+ storage: 'LOCAL' | 'R2';
1390
1395
  /**
1391
- * Characters voiced by this seiyuu with their media appearances
1396
+ * Hash identifier for the segment (from segment JSON)
1392
1397
  */
1393
- characters: Array<Character & {
1394
- media: Media;
1395
- /**
1396
- * Character role in this media
1397
- */
1398
- role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1399
- }>;
1398
+ hashedId: string;
1400
1399
  };
1401
1400
  export type UserQuotaResponse = {
1402
1401
  /**
@@ -1434,37 +1433,53 @@ export type ReportTargetMedia = {
1434
1433
  */
1435
1434
  mediaId: number;
1436
1435
  };
1437
- export type ReportTargetEpisode = {
1436
+ export type ReportTargetSegment = {
1438
1437
  /**
1439
1438
  * Report target type
1440
1439
  */
1441
- type: 'EPISODE';
1440
+ type: 'SEGMENT';
1442
1441
  /**
1443
1442
  * Media ID this report targets
1444
1443
  */
1445
1444
  mediaId: number;
1446
1445
  /**
1447
- * Episode number this report targets
1446
+ * Episode number containing the segment
1448
1447
  */
1449
- episodeNumber: number;
1448
+ episodeNumber?: number;
1449
+ /**
1450
+ * Segment UUID this report targets
1451
+ */
1452
+ segmentUuid: string;
1450
1453
  };
1451
- export type ReportTargetSegment = {
1454
+ export type UserReportTarget = ({
1455
+ type: 'MEDIA';
1456
+ } & ReportTargetMedia) | ({
1457
+ type: 'SEGMENT';
1458
+ } & ReportTargetSegment);
1459
+ export type CreateReportRequest = {
1460
+ target: UserReportTarget;
1461
+ /**
1462
+ * Reason for the report
1463
+ */
1464
+ reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1465
+ /**
1466
+ * Optional description with additional details
1467
+ */
1468
+ description?: string;
1469
+ };
1470
+ export type ReportTargetEpisode = {
1452
1471
  /**
1453
1472
  * Report target type
1454
1473
  */
1455
- type: 'SEGMENT';
1474
+ type: 'EPISODE';
1456
1475
  /**
1457
1476
  * Media ID this report targets
1458
1477
  */
1459
1478
  mediaId: number;
1460
1479
  /**
1461
- * Episode number containing the segment
1462
- */
1463
- episodeNumber?: number;
1464
- /**
1465
- * Segment UUID this report targets
1480
+ * Episode number this report targets
1466
1481
  */
1467
- segmentUuid: string;
1482
+ episodeNumber: number;
1468
1483
  };
1469
1484
  export type ReportTarget = ({
1470
1485
  type: 'MEDIA';
@@ -1484,9 +1499,9 @@ export type Report = {
1484
1499
  source: 'USER' | 'AUTO';
1485
1500
  target: ReportTarget;
1486
1501
  /**
1487
- * ID of the auto-check run that created this report (AUTO only)
1502
+ * ID of the audit run that created this report (AUTO only)
1488
1503
  */
1489
- reviewCheckRunId?: number;
1504
+ auditRunId: number;
1490
1505
  /**
1491
1506
  * Reason for the report
1492
1507
  */
@@ -1494,11 +1509,11 @@ export type Report = {
1494
1509
  /**
1495
1510
  * Optional description with additional details
1496
1511
  */
1497
- description?: string;
1512
+ description: string;
1498
1513
  /**
1499
1514
  * Check-specific metrics (AUTO reports) or null (USER reports)
1500
1515
  */
1501
- data?: {
1516
+ data: {
1502
1517
  [key: string]: unknown;
1503
1518
  };
1504
1519
  /**
@@ -1508,11 +1523,11 @@ export type Report = {
1508
1523
  /**
1509
1524
  * Notes from the admin who reviewed the report
1510
1525
  */
1511
- adminNotes?: string;
1526
+ adminNotes: string;
1512
1527
  /**
1513
1528
  * ID of the user who submitted the report (USER reports only)
1514
1529
  */
1515
- userId?: number;
1530
+ userId: number;
1516
1531
  /**
1517
1532
  * When the report was created
1518
1533
  */
@@ -1520,35 +1535,9 @@ export type Report = {
1520
1535
  /**
1521
1536
  * When the report was last updated
1522
1537
  */
1523
- updatedAt?: string;
1524
- };
1525
- export type ReportListResponse = {
1526
- reports: Array<Report>;
1527
- pagination: CursorPagination;
1528
- };
1529
- export type UserReportTarget = ({
1530
- type: 'MEDIA';
1531
- } & ReportTargetMedia) | ({
1532
- type: 'SEGMENT';
1533
- } & ReportTargetSegment);
1534
- export type CreateReportRequest = {
1535
- target: UserReportTarget;
1536
- /**
1537
- * Reason for the report
1538
- */
1539
- reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1540
- /**
1541
- * Optional description with additional details
1542
- */
1543
- description?: string;
1538
+ updatedAt: string;
1544
1539
  };
1545
1540
  export type UserPreferences = {
1546
- /**
1547
- * Lab feature opt-in flags keyed by feature key
1548
- */
1549
- labs?: {
1550
- [key: string]: boolean;
1551
- };
1552
1541
  /**
1553
1542
  * Preferred language for media names display
1554
1543
  */
@@ -1599,11 +1588,11 @@ export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'LIST_ADD
1599
1588
  export type UserActivity = {
1600
1589
  id: number;
1601
1590
  activityType: ActivityType;
1602
- segmentUuid?: string;
1603
- mediaId?: number;
1604
- searchQuery?: string;
1605
- animeName?: string;
1606
- japaneseText?: string;
1591
+ segmentUuid: string;
1592
+ mediaId: number;
1593
+ searchQuery: string;
1594
+ mediaName: string;
1595
+ japaneseText: string;
1607
1596
  createdAt: string;
1608
1597
  };
1609
1598
  /**
@@ -1618,10 +1607,6 @@ export type Collection = {
1618
1607
  * Name of the collection
1619
1608
  */
1620
1609
  name: string;
1621
- /**
1622
- * User ID who owns the collection
1623
- */
1624
- userId: number;
1625
1610
  /**
1626
1611
  * Visibility of the collection
1627
1612
  */
@@ -1629,15 +1614,15 @@ export type Collection = {
1629
1614
  /**
1630
1615
  * Number of segments in the collection
1631
1616
  */
1632
- segmentCount?: number;
1617
+ segmentCount: number;
1633
1618
  /**
1634
1619
  * When the collection was created
1635
1620
  */
1636
- createdAt?: string;
1621
+ createdAt: string;
1637
1622
  /**
1638
1623
  * When the collection was last updated
1639
1624
  */
1640
- updatedAt?: string;
1625
+ updatedAt: string;
1641
1626
  };
1642
1627
  export type UserExportCollection = Collection & {
1643
1628
  /**
@@ -1662,32 +1647,32 @@ export type UserExportResponse = {
1662
1647
  };
1663
1648
  export type UserLabFeature = {
1664
1649
  /**
1665
- * Unique identifier for the lab feature
1650
+ * Unique identifier for the feature
1666
1651
  */
1667
1652
  key: string;
1668
1653
  /**
1669
- * Human-readable feature name
1654
+ * Human-readable feature name (only present for labs)
1670
1655
  */
1671
- name: string;
1656
+ name?: string;
1672
1657
  /**
1673
- * Description of what the feature does
1658
+ * Description of what the feature does (only present for labs)
1674
1659
  */
1675
- description: string;
1660
+ description?: string;
1676
1661
  /**
1677
- * Whether the feature is globally available
1662
+ * Whether this feature is currently active for the user
1678
1663
  */
1679
- enabled: boolean;
1664
+ active: boolean;
1680
1665
  /**
1681
- * Whether the user has opted in to this feature
1666
+ * Whether the user can toggle this feature (lab=true, flag=false)
1682
1667
  */
1683
- userEnabled: boolean;
1668
+ userControllable: boolean;
1684
1669
  };
1685
1670
  /**
1686
1671
  * Paginated collection list response
1687
1672
  */
1688
1673
  export type CollectionListResponse = {
1689
1674
  collections: Array<Collection>;
1690
- pagination: CursorPagination;
1675
+ pagination: OpaqueCursorPagination;
1691
1676
  };
1692
1677
  /**
1693
1678
  * Request body for creating a new collection
@@ -1714,14 +1699,22 @@ export type CollectionWithSegments = {
1714
1699
  * Name of the collection
1715
1700
  */
1716
1701
  name: string;
1717
- /**
1718
- * User ID who owns the collection
1719
- */
1720
- userId: number;
1721
1702
  /**
1722
1703
  * Visibility of the collection
1723
1704
  */
1724
1705
  visibility: 'PUBLIC' | 'PRIVATE';
1706
+ /**
1707
+ * Number of segments in the collection
1708
+ */
1709
+ segmentCount: number;
1710
+ /**
1711
+ * When the collection was created
1712
+ */
1713
+ createdAt: string;
1714
+ /**
1715
+ * When the collection was last updated
1716
+ */
1717
+ updatedAt: string;
1725
1718
  /**
1726
1719
  * Saved segments with their search result data
1727
1720
  */
@@ -1729,18 +1722,18 @@ export type CollectionWithSegments = {
1729
1722
  /**
1730
1723
  * Position in the collection
1731
1724
  */
1732
- position?: number;
1725
+ position: number;
1733
1726
  /**
1734
1727
  * User annotation
1735
1728
  */
1736
- note?: string;
1737
- result?: Segment;
1729
+ note: string;
1730
+ result: Segment;
1738
1731
  }>;
1739
- includes?: {
1732
+ includes: {
1740
1733
  /**
1741
1734
  * Media objects keyed by mediaId
1742
1735
  */
1743
- media?: {
1736
+ media: {
1744
1737
  [key: string]: Media;
1745
1738
  };
1746
1739
  };
@@ -1748,7 +1741,7 @@ export type CollectionWithSegments = {
1748
1741
  * Total number of segments in the collection
1749
1742
  */
1750
1743
  totalCount: number;
1751
- pagination: CursorPagination;
1744
+ pagination: OpaqueCursorPagination;
1752
1745
  };
1753
1746
  /**
1754
1747
  * Request to reindex segments from the database into Elasticsearch
@@ -1778,44 +1771,44 @@ export type ReindexResponse = {
1778
1771
  /**
1779
1772
  * Whether the reindex operation completed successfully
1780
1773
  */
1781
- success?: boolean;
1774
+ success: boolean;
1782
1775
  /**
1783
1776
  * Human-readable message about the reindex operation
1784
1777
  */
1785
- message?: string;
1778
+ message: string;
1786
1779
  /**
1787
1780
  * Statistics about the reindex operation
1788
1781
  */
1789
- stats?: {
1782
+ stats: {
1790
1783
  /**
1791
1784
  * Total number of segments processed
1792
1785
  */
1793
- totalSegments?: number;
1786
+ totalSegments: number;
1794
1787
  /**
1795
1788
  * Number of segments successfully indexed
1796
1789
  */
1797
- successfulIndexes?: number;
1790
+ successfulIndexes: number;
1798
1791
  /**
1799
1792
  * Number of segments that failed to index
1800
1793
  */
1801
- failedIndexes?: number;
1794
+ failedIndexes: number;
1802
1795
  /**
1803
1796
  * Number of media items processed
1804
1797
  */
1805
- mediaProcessed?: number;
1798
+ mediaProcessed: number;
1806
1799
  };
1807
1800
  /**
1808
1801
  * Array of errors that occurred during reindexing (if any)
1809
1802
  */
1810
- errors?: Array<{
1803
+ errors: Array<{
1811
1804
  /**
1812
1805
  * ID of the segment that failed
1813
1806
  */
1814
- segmentId?: number;
1807
+ segmentId: number;
1815
1808
  /**
1816
1809
  * Error message
1817
1810
  */
1818
- error?: string;
1811
+ error: string;
1819
1812
  }>;
1820
1813
  };
1821
1814
  export type AdminReport = Report & {
@@ -1830,7 +1823,7 @@ export type AdminReport = Report & {
1830
1823
  };
1831
1824
  export type AdminReportListResponse = {
1832
1825
  reports: Array<AdminReport>;
1833
- pagination: CursorPagination;
1826
+ pagination: OpaqueCursorPagination;
1834
1827
  };
1835
1828
  export type UpdateReportRequest = {
1836
1829
  /**
@@ -1842,41 +1835,13 @@ export type UpdateReportRequest = {
1842
1835
  */
1843
1836
  adminNotes?: string;
1844
1837
  };
1845
- export type RunReviewResponse = {
1846
- /**
1847
- * Category filter used
1848
- */
1849
- category: string;
1850
- checksRun: Array<{
1851
- /**
1852
- * Check identifier
1853
- */
1854
- checkName: string;
1855
- /**
1856
- * Human-readable check name
1857
- */
1858
- label: string;
1859
- /**
1860
- * Number of reports created
1861
- */
1862
- resultCount: number;
1863
- /**
1864
- * ID of the created run record
1865
- */
1866
- runId: number;
1867
- }>;
1868
- /**
1869
- * Total reports created across all checks
1870
- */
1871
- totalReports: number;
1872
- };
1873
- export type ReviewCheck = {
1838
+ export type MediaAudit = {
1874
1839
  /**
1875
- * Check ID
1840
+ * Audit ID
1876
1841
  */
1877
1842
  id: number;
1878
1843
  /**
1879
- * Unique check identifier
1844
+ * Unique audit identifier
1880
1845
  */
1881
1846
  name: string;
1882
1847
  /**
@@ -1884,11 +1849,11 @@ export type ReviewCheck = {
1884
1849
  */
1885
1850
  label: string;
1886
1851
  /**
1887
- * What this check does
1852
+ * What this audit does
1888
1853
  */
1889
1854
  description: string;
1890
1855
  /**
1891
- * What level this check operates on
1856
+ * What level this audit operates on
1892
1857
  */
1893
1858
  targetType: 'MEDIA' | 'EPISODE';
1894
1859
  /**
@@ -1898,40 +1863,68 @@ export type ReviewCheck = {
1898
1863
  [key: string]: unknown;
1899
1864
  };
1900
1865
  /**
1901
- * Whether this check is active
1866
+ * Whether this audit is active
1902
1867
  */
1903
1868
  enabled: boolean;
1904
1869
  /**
1905
1870
  * Schema for threshold fields (from registry)
1906
1871
  */
1907
- thresholdSchema?: Array<{
1908
- key?: string;
1909
- label?: string;
1910
- type?: 'number' | 'boolean';
1911
- default?: number | boolean;
1872
+ thresholdSchema: Array<{
1873
+ key: string;
1874
+ label: string;
1875
+ type: 'number' | 'boolean';
1876
+ default: number | boolean;
1912
1877
  min?: number;
1913
1878
  max?: number;
1914
1879
  }>;
1915
1880
  /**
1916
- * Latest run info for this check
1881
+ * Latest run info for this audit
1917
1882
  */
1918
- latestRun?: {
1919
- id?: number;
1920
- resultCount?: number;
1921
- createdAt?: string;
1883
+ latestRun: {
1884
+ id: number;
1885
+ resultCount: number;
1886
+ createdAt: string;
1922
1887
  };
1923
- createdAt?: string;
1924
- updatedAt?: string;
1888
+ createdAt: string;
1889
+ updatedAt: string;
1890
+ };
1891
+ export type RunAuditResponse = {
1892
+ /**
1893
+ * Category filter used
1894
+ */
1895
+ category: string;
1896
+ checksRun: Array<{
1897
+ /**
1898
+ * Audit identifier
1899
+ */
1900
+ auditName: string;
1901
+ /**
1902
+ * Human-readable audit name
1903
+ */
1904
+ label: string;
1905
+ /**
1906
+ * Number of reports created
1907
+ */
1908
+ resultCount: number;
1909
+ /**
1910
+ * ID of the created run record
1911
+ */
1912
+ runId: number;
1913
+ }>;
1914
+ /**
1915
+ * Total reports created across all audits
1916
+ */
1917
+ totalReports: number;
1925
1918
  };
1926
- export type ReviewCheckRun = {
1919
+ export type MediaAuditRun = {
1927
1920
  /**
1928
1921
  * Run ID
1929
1922
  */
1930
1923
  id: number;
1931
1924
  /**
1932
- * Name of the check that was run
1925
+ * Name of the audit that was run
1933
1926
  */
1934
- checkName: string;
1927
+ auditName: string;
1935
1928
  /**
1936
1929
  * Category filter used (ANIME/JDRAMA) or null for all
1937
1930
  */
@@ -1951,32 +1944,6 @@ export type ReviewCheckRun = {
1951
1944
  */
1952
1945
  createdAt: string;
1953
1946
  };
1954
- export type ReviewAllowlist = {
1955
- /**
1956
- * Allowlist entry ID
1957
- */
1958
- id: number;
1959
- /**
1960
- * Name of the check this entry applies to
1961
- */
1962
- checkName: string;
1963
- /**
1964
- * Media ID to exclude
1965
- */
1966
- mediaId: number;
1967
- /**
1968
- * Episode number to exclude (null for media-level checks)
1969
- */
1970
- episodeNumber?: number;
1971
- /**
1972
- * Why this was allowlisted
1973
- */
1974
- reason?: string;
1975
- /**
1976
- * When this entry was created
1977
- */
1978
- createdAt: string;
1979
- };
1980
1947
  export type SearchData = {
1981
1948
  body?: SearchRequest;
1982
1949
  path?: never;
@@ -1989,7 +1956,7 @@ export type SearchErrors = {
1989
1956
  */
1990
1957
  400: Error400;
1991
1958
  /**
1992
- * Unauthorized
1959
+ * Unauthorized (API key)
1993
1960
  */
1994
1961
  401: Error401;
1995
1962
  /**
@@ -2025,7 +1992,7 @@ export type GetSearchStatsErrors = {
2025
1992
  */
2026
1993
  400: Error400;
2027
1994
  /**
2028
- * Unauthorized
1995
+ * Unauthorized (API key)
2029
1996
  */
2030
1997
  401: Error401;
2031
1998
  /**
@@ -2061,7 +2028,7 @@ export type SearchWordsErrors = {
2061
2028
  */
2062
2029
  400: Error400;
2063
2030
  /**
2064
- * Unauthorized
2031
+ * Unauthorized (API key)
2065
2032
  */
2066
2033
  401: Error401;
2067
2034
  /**
@@ -2092,11 +2059,11 @@ export type ListMediaData = {
2092
2059
  /**
2093
2060
  * Number of results per page
2094
2061
  */
2095
- limit?: number;
2062
+ take?: number;
2096
2063
  /**
2097
- * Pagination cursor offset
2064
+ * Opaque pagination cursor token
2098
2065
  */
2099
- cursor?: number;
2066
+ cursor?: string;
2100
2067
  /**
2101
2068
  * Filter by media category
2102
2069
  */
@@ -2106,7 +2073,7 @@ export type ListMediaData = {
2106
2073
  */
2107
2074
  query?: string;
2108
2075
  /**
2109
- * Resources to expand in the media response (`media.characters` implies `media`)
2076
+ * Resources to expand in the media response
2110
2077
  */
2111
2078
  include?: Array<MediaIncludeExpansion>;
2112
2079
  };
@@ -2118,7 +2085,7 @@ export type ListMediaErrors = {
2118
2085
  */
2119
2086
  400: Error400;
2120
2087
  /**
2121
- * Unauthorized
2088
+ * Unauthorized (API key)
2122
2089
  */
2123
2090
  401: Error401;
2124
2091
  /**
@@ -2154,7 +2121,7 @@ export type CreateMediaErrors = {
2154
2121
  */
2155
2122
  400: Error400;
2156
2123
  /**
2157
- * Unauthorized
2124
+ * Unauthorized (API key)
2158
2125
  */
2159
2126
  401: Error401;
2160
2127
  /**
@@ -2193,27 +2160,72 @@ export type AutocompleteMediaData = {
2193
2160
  /**
2194
2161
  * Maximum number of results to return
2195
2162
  */
2196
- limit?: number;
2163
+ take?: number;
2164
+ /**
2165
+ * Filter by media category
2166
+ */
2167
+ category?: 'ANIME' | 'JDRAMA';
2168
+ };
2169
+ url: '/v1/media/autocomplete';
2170
+ };
2171
+ export type AutocompleteMediaErrors = {
2172
+ /**
2173
+ * Bad Request
2174
+ */
2175
+ 400: Error400;
2176
+ /**
2177
+ * Unauthorized (API key)
2178
+ */
2179
+ 401: Error401;
2180
+ /**
2181
+ * Forbidden
2182
+ */
2183
+ 403: Error403;
2184
+ /**
2185
+ * Too Many Requests
2186
+ */
2187
+ 429: Error429;
2188
+ /**
2189
+ * Internal Server Error
2190
+ */
2191
+ 500: Error500;
2192
+ };
2193
+ export type AutocompleteMediaError = AutocompleteMediaErrors[keyof AutocompleteMediaErrors];
2194
+ export type AutocompleteMediaResponses = {
2195
+ /**
2196
+ * OK
2197
+ */
2198
+ 200: MediaAutocompleteResponse;
2199
+ };
2200
+ export type AutocompleteMediaResponse = AutocompleteMediaResponses[keyof AutocompleteMediaResponses];
2201
+ export type GetSegmentByUuidData = {
2202
+ body?: never;
2203
+ path: {
2197
2204
  /**
2198
- * Filter by media category
2205
+ * Segment UUID
2199
2206
  */
2200
- category?: 'ANIME' | 'JDRAMA';
2207
+ uuid: string;
2201
2208
  };
2202
- url: '/v1/media/autocomplete';
2209
+ query?: never;
2210
+ url: '/v1/media/segments/{uuid}';
2203
2211
  };
2204
- export type AutocompleteMediaErrors = {
2212
+ export type GetSegmentByUuidErrors = {
2205
2213
  /**
2206
2214
  * Bad Request
2207
2215
  */
2208
2216
  400: Error400;
2209
2217
  /**
2210
- * Unauthorized
2218
+ * Unauthorized (API key)
2211
2219
  */
2212
2220
  401: Error401;
2213
2221
  /**
2214
2222
  * Forbidden
2215
2223
  */
2216
2224
  403: Error403;
2225
+ /**
2226
+ * Not Found
2227
+ */
2228
+ 404: Error404;
2217
2229
  /**
2218
2230
  * Too Many Requests
2219
2231
  */
@@ -2223,32 +2235,32 @@ export type AutocompleteMediaErrors = {
2223
2235
  */
2224
2236
  500: Error500;
2225
2237
  };
2226
- export type AutocompleteMediaError = AutocompleteMediaErrors[keyof AutocompleteMediaErrors];
2227
- export type AutocompleteMediaResponses = {
2238
+ export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2239
+ export type GetSegmentByUuidResponses = {
2228
2240
  /**
2229
2241
  * OK
2230
2242
  */
2231
- 200: MediaAutocompleteResponse;
2243
+ 200: Segment;
2232
2244
  };
2233
- export type AutocompleteMediaResponse = AutocompleteMediaResponses[keyof AutocompleteMediaResponses];
2234
- export type DeleteMediaData = {
2235
- body?: never;
2245
+ export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2246
+ export type UpdateSegmentByUuidData = {
2247
+ body: SegmentUpdateRequest;
2236
2248
  path: {
2237
2249
  /**
2238
- * Media ID
2250
+ * Segment UUID
2239
2251
  */
2240
- id: number;
2252
+ uuid: string;
2241
2253
  };
2242
2254
  query?: never;
2243
- url: '/v1/media/{id}';
2255
+ url: '/v1/media/segments/{uuid}';
2244
2256
  };
2245
- export type DeleteMediaErrors = {
2257
+ export type UpdateSegmentByUuidErrors = {
2246
2258
  /**
2247
2259
  * Bad Request
2248
2260
  */
2249
2261
  400: Error400;
2250
2262
  /**
2251
- * Unauthorized
2263
+ * Unauthorized (API key or session)
2252
2264
  */
2253
2265
  401: Error401;
2254
2266
  /**
@@ -2268,37 +2280,41 @@ export type DeleteMediaErrors = {
2268
2280
  */
2269
2281
  500: Error500;
2270
2282
  };
2271
- export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2272
- export type DeleteMediaResponses = {
2283
+ export type UpdateSegmentByUuidError = UpdateSegmentByUuidErrors[keyof UpdateSegmentByUuidErrors];
2284
+ export type UpdateSegmentByUuidResponses = {
2273
2285
  /**
2274
- * No Content
2286
+ * Single segment response with internal fields
2275
2287
  */
2276
- 204: void;
2288
+ 200: SegmentInternal;
2277
2289
  };
2278
- export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2279
- export type GetMediaData = {
2290
+ export type UpdateSegmentByUuidResponse = UpdateSegmentByUuidResponses[keyof UpdateSegmentByUuidResponses];
2291
+ export type GetSegmentContextData = {
2280
2292
  body?: never;
2281
2293
  path: {
2282
2294
  /**
2283
- * Media ID
2295
+ * Segment UUID
2284
2296
  */
2285
- id: number;
2297
+ uuid: string;
2286
2298
  };
2287
2299
  query?: {
2288
2300
  /**
2289
- * Resources to expand in the media response (`media.characters` implies `media`)
2301
+ * Number of segments to return before and after the target
2290
2302
  */
2291
- include?: Array<MediaIncludeExpansion>;
2303
+ take?: number;
2304
+ /**
2305
+ * Content ratings to include (omit for all ratings)
2306
+ */
2307
+ contentRating?: Array<ContentRating>;
2292
2308
  };
2293
- url: '/v1/media/{id}';
2309
+ url: '/v1/media/segments/{uuid}/context';
2294
2310
  };
2295
- export type GetMediaErrors = {
2311
+ export type GetSegmentContextErrors = {
2296
2312
  /**
2297
2313
  * Bad Request
2298
2314
  */
2299
2315
  400: Error400;
2300
2316
  /**
2301
- * Unauthorized
2317
+ * Unauthorized (API key)
2302
2318
  */
2303
2319
  401: Error401;
2304
2320
  /**
@@ -2318,42 +2334,46 @@ export type GetMediaErrors = {
2318
2334
  */
2319
2335
  500: Error500;
2320
2336
  };
2321
- export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2322
- export type GetMediaResponses = {
2337
+ export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2338
+ export type GetSegmentContextResponses = {
2323
2339
  /**
2324
2340
  * OK
2325
2341
  */
2326
- 200: Media;
2342
+ 200: SegmentContextResponse;
2327
2343
  };
2328
- export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2329
- export type UpdateMediaData = {
2330
- body: MediaUpdateRequest;
2331
- path: {
2344
+ export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2345
+ export type ListSeriesData = {
2346
+ body?: never;
2347
+ path?: never;
2348
+ query?: {
2332
2349
  /**
2333
- * Media ID
2350
+ * Number of results per page
2334
2351
  */
2335
- id: number;
2352
+ take?: number;
2353
+ /**
2354
+ * Opaque pagination cursor token
2355
+ */
2356
+ cursor?: string;
2357
+ /**
2358
+ * Case-insensitive search across English, Japanese, and Romaji names
2359
+ */
2360
+ query?: string;
2336
2361
  };
2337
- query?: never;
2338
- url: '/v1/media/{id}';
2362
+ url: '/v1/media/series';
2339
2363
  };
2340
- export type UpdateMediaErrors = {
2364
+ export type ListSeriesErrors = {
2341
2365
  /**
2342
2366
  * Bad Request
2343
2367
  */
2344
2368
  400: Error400;
2345
2369
  /**
2346
- * Unauthorized
2370
+ * Unauthorized (API key)
2347
2371
  */
2348
2372
  401: Error401;
2349
2373
  /**
2350
2374
  * Forbidden
2351
2375
  */
2352
2376
  403: Error403;
2353
- /**
2354
- * Not Found
2355
- */
2356
- 404: Error404;
2357
2377
  /**
2358
2378
  * Too Many Requests
2359
2379
  */
@@ -2363,51 +2383,46 @@ export type UpdateMediaErrors = {
2363
2383
  */
2364
2384
  500: Error500;
2365
2385
  };
2366
- export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2367
- export type UpdateMediaResponses = {
2386
+ export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
2387
+ export type ListSeriesResponses = {
2368
2388
  /**
2369
2389
  * OK
2370
2390
  */
2371
- 200: Media;
2391
+ 200: SeriesListResponse;
2372
2392
  };
2373
- export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
2374
- export type ListEpisodesData = {
2375
- body?: never;
2376
- path: {
2393
+ export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
2394
+ export type CreateSeriesData = {
2395
+ body: {
2377
2396
  /**
2378
- * ID of the media
2397
+ * Japanese name of the series
2379
2398
  */
2380
- mediaId: number;
2381
- };
2382
- query?: {
2399
+ nameJa: string;
2383
2400
  /**
2384
- * Maximum number of episodes to return
2401
+ * Romaji name of the series
2385
2402
  */
2386
- limit?: number;
2403
+ nameRomaji: string;
2387
2404
  /**
2388
- * Episode number to start from (for pagination)
2405
+ * English name of the series
2389
2406
  */
2390
- cursor?: number;
2407
+ nameEn: string;
2391
2408
  };
2392
- url: '/v1/media/{mediaId}/episodes';
2409
+ path?: never;
2410
+ query?: never;
2411
+ url: '/v1/media/series';
2393
2412
  };
2394
- export type ListEpisodesErrors = {
2413
+ export type CreateSeriesErrors = {
2395
2414
  /**
2396
2415
  * Bad Request
2397
2416
  */
2398
2417
  400: Error400;
2399
2418
  /**
2400
- * Unauthorized
2419
+ * Unauthorized (API key)
2401
2420
  */
2402
2421
  401: Error401;
2403
2422
  /**
2404
2423
  * Forbidden
2405
2424
  */
2406
2425
  403: Error403;
2407
- /**
2408
- * Not Found
2409
- */
2410
- 404: Error404;
2411
2426
  /**
2412
2427
  * Too Many Requests
2413
2428
  */
@@ -2417,32 +2432,32 @@ export type ListEpisodesErrors = {
2417
2432
  */
2418
2433
  500: Error500;
2419
2434
  };
2420
- export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
2421
- export type ListEpisodesResponses = {
2435
+ export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
2436
+ export type CreateSeriesResponses = {
2422
2437
  /**
2423
- * Paginated list of episodes
2438
+ * Created
2424
2439
  */
2425
- 200: EpisodeListResponse;
2440
+ 201: Series;
2426
2441
  };
2427
- export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
2428
- export type CreateEpisodeData = {
2429
- body: EpisodeCreateRequest;
2442
+ export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
2443
+ export type DeleteSeriesData = {
2444
+ body?: never;
2430
2445
  path: {
2431
2446
  /**
2432
- * ID of the media
2447
+ * Series ID
2433
2448
  */
2434
- mediaId: number;
2449
+ id: number;
2435
2450
  };
2436
2451
  query?: never;
2437
- url: '/v1/media/{mediaId}/episodes';
2452
+ url: '/v1/media/series/{id}';
2438
2453
  };
2439
- export type CreateEpisodeErrors = {
2454
+ export type DeleteSeriesErrors = {
2440
2455
  /**
2441
2456
  * Bad Request
2442
2457
  */
2443
2458
  400: Error400;
2444
2459
  /**
2445
- * Unauthorized
2460
+ * Unauthorized (API key)
2446
2461
  */
2447
2462
  401: Error401;
2448
2463
  /**
@@ -2453,10 +2468,6 @@ export type CreateEpisodeErrors = {
2453
2468
  * Not Found
2454
2469
  */
2455
2470
  404: Error404;
2456
- /**
2457
- * Conflict
2458
- */
2459
- 409: Error409;
2460
2471
  /**
2461
2472
  * Too Many Requests
2462
2473
  */
@@ -2466,36 +2477,37 @@ export type CreateEpisodeErrors = {
2466
2477
  */
2467
2478
  500: Error500;
2468
2479
  };
2469
- export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
2470
- export type CreateEpisodeResponses = {
2480
+ export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
2481
+ export type DeleteSeriesResponses = {
2471
2482
  /**
2472
- * Single episode response
2483
+ * No Content
2473
2484
  */
2474
- 201: Episode;
2485
+ 204: void;
2475
2486
  };
2476
- export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
2477
- export type DeleteEpisodeData = {
2487
+ export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
2488
+ export type GetSeriesData = {
2478
2489
  body?: never;
2479
2490
  path: {
2480
2491
  /**
2481
- * ID of the media
2492
+ * Series ID
2482
2493
  */
2483
- mediaId: number;
2494
+ id: number;
2495
+ };
2496
+ query?: {
2484
2497
  /**
2485
- * Episode number
2498
+ * Resources to expand in the series response
2486
2499
  */
2487
- episodeNumber: number;
2500
+ include?: Array<MediaIncludeExpansion>;
2488
2501
  };
2489
- query?: never;
2490
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2502
+ url: '/v1/media/series/{id}';
2491
2503
  };
2492
- export type DeleteEpisodeErrors = {
2504
+ export type GetSeriesErrors = {
2493
2505
  /**
2494
2506
  * Bad Request
2495
2507
  */
2496
2508
  400: Error400;
2497
2509
  /**
2498
- * Unauthorized
2510
+ * Unauthorized (API key)
2499
2511
  */
2500
2512
  401: Error401;
2501
2513
  /**
@@ -2515,36 +2527,45 @@ export type DeleteEpisodeErrors = {
2515
2527
  */
2516
2528
  500: Error500;
2517
2529
  };
2518
- export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
2519
- export type DeleteEpisodeResponses = {
2530
+ export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
2531
+ export type GetSeriesResponses = {
2520
2532
  /**
2521
- * Episode successfully deleted
2533
+ * OK
2522
2534
  */
2523
- 204: void;
2535
+ 200: SeriesWithMedia;
2524
2536
  };
2525
- export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
2526
- export type GetEpisodeData = {
2527
- body?: never;
2528
- path: {
2537
+ export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
2538
+ export type UpdateSeriesData = {
2539
+ body: {
2529
2540
  /**
2530
- * ID of the media
2541
+ * Updated Japanese name
2531
2542
  */
2532
- mediaId: number;
2543
+ nameJa?: string;
2533
2544
  /**
2534
- * Episode number
2545
+ * Updated Romaji name
2535
2546
  */
2536
- episodeNumber: number;
2547
+ nameRomaji?: string;
2548
+ /**
2549
+ * Updated English name
2550
+ */
2551
+ nameEn?: string;
2552
+ };
2553
+ path: {
2554
+ /**
2555
+ * Series ID
2556
+ */
2557
+ id: number;
2537
2558
  };
2538
2559
  query?: never;
2539
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2560
+ url: '/v1/media/series/{id}';
2540
2561
  };
2541
- export type GetEpisodeErrors = {
2562
+ export type UpdateSeriesErrors = {
2542
2563
  /**
2543
2564
  * Bad Request
2544
2565
  */
2545
2566
  400: Error400;
2546
2567
  /**
2547
- * Unauthorized
2568
+ * Unauthorized (API key)
2548
2569
  */
2549
2570
  401: Error401;
2550
2571
  /**
@@ -2564,36 +2585,41 @@ export type GetEpisodeErrors = {
2564
2585
  */
2565
2586
  500: Error500;
2566
2587
  };
2567
- export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
2568
- export type GetEpisodeResponses = {
2588
+ export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
2589
+ export type UpdateSeriesResponses = {
2569
2590
  /**
2570
- * Single episode response
2591
+ * OK
2571
2592
  */
2572
- 200: Episode;
2593
+ 200: Series;
2573
2594
  };
2574
- export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
2575
- export type UpdateEpisodeData = {
2576
- body: EpisodeUpdateRequest;
2577
- path: {
2595
+ export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
2596
+ export type AddMediaToSeriesData = {
2597
+ body: {
2578
2598
  /**
2579
- * ID of the media
2599
+ * Media ID to add
2580
2600
  */
2581
2601
  mediaId: number;
2582
2602
  /**
2583
- * Episode number
2603
+ * Position in the series (1-indexed)
2584
2604
  */
2585
- episodeNumber: number;
2605
+ position: number;
2606
+ };
2607
+ path: {
2608
+ /**
2609
+ * Series ID
2610
+ */
2611
+ id: number;
2586
2612
  };
2587
2613
  query?: never;
2588
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2614
+ url: '/v1/media/series/{id}/media';
2589
2615
  };
2590
- export type UpdateEpisodeErrors = {
2616
+ export type AddMediaToSeriesErrors = {
2591
2617
  /**
2592
2618
  * Bad Request
2593
2619
  */
2594
2620
  400: Error400;
2595
2621
  /**
2596
- * Unauthorized
2622
+ * Unauthorized (API key)
2597
2623
  */
2598
2624
  401: Error401;
2599
2625
  /**
@@ -2613,45 +2639,36 @@ export type UpdateEpisodeErrors = {
2613
2639
  */
2614
2640
  500: Error500;
2615
2641
  };
2616
- export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
2617
- export type UpdateEpisodeResponses = {
2642
+ export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
2643
+ export type AddMediaToSeriesResponses = {
2618
2644
  /**
2619
- * Single episode response
2645
+ * No Content
2620
2646
  */
2621
- 200: Episode;
2647
+ 204: void;
2622
2648
  };
2623
- export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
2624
- export type ListSegmentsData = {
2649
+ export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
2650
+ export type RemoveMediaFromSeriesData = {
2625
2651
  body?: never;
2626
2652
  path: {
2627
2653
  /**
2628
- * ID of the media
2629
- */
2630
- mediaId: number;
2631
- /**
2632
- * Episode number
2633
- */
2634
- episodeNumber: number;
2635
- };
2636
- query?: {
2637
- /**
2638
- * Maximum number of segments to return
2654
+ * Series ID
2639
2655
  */
2640
- limit?: number;
2656
+ id: number;
2641
2657
  /**
2642
- * Segment ID to start from (for pagination)
2658
+ * Media ID
2643
2659
  */
2644
- cursor?: number;
2660
+ mediaId: number;
2645
2661
  };
2646
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2662
+ query?: never;
2663
+ url: '/v1/media/series/{id}/media/{mediaId}';
2647
2664
  };
2648
- export type ListSegmentsErrors = {
2665
+ export type RemoveMediaFromSeriesErrors = {
2649
2666
  /**
2650
2667
  * Bad Request
2651
2668
  */
2652
2669
  400: Error400;
2653
2670
  /**
2654
- * Unauthorized
2671
+ * Unauthorized (API key)
2655
2672
  */
2656
2673
  401: Error401;
2657
2674
  /**
@@ -2671,42 +2688,41 @@ export type ListSegmentsErrors = {
2671
2688
  */
2672
2689
  500: Error500;
2673
2690
  };
2674
- export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
2675
- export type ListSegmentsResponses = {
2691
+ export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
2692
+ export type RemoveMediaFromSeriesResponses = {
2676
2693
  /**
2677
- * Paginated segment list response
2694
+ * No Content
2678
2695
  */
2679
- 200: {
2696
+ 204: void;
2697
+ };
2698
+ export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
2699
+ export type UpdateSeriesMediaData = {
2700
+ body: {
2680
2701
  /**
2681
- * Array of segment objects
2702
+ * New position in the series (1-indexed)
2682
2703
  */
2683
- segments: Array<Segment>;
2684
- pagination: CursorPagination;
2704
+ position: number;
2685
2705
  };
2686
- };
2687
- export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
2688
- export type CreateSegmentData = {
2689
- body: SegmentCreateRequest;
2690
2706
  path: {
2691
2707
  /**
2692
- * ID of the media
2708
+ * Series ID
2693
2709
  */
2694
- mediaId: number;
2710
+ id: number;
2695
2711
  /**
2696
- * Episode number
2712
+ * Media ID
2697
2713
  */
2698
- episodeNumber: number;
2714
+ mediaId: number;
2699
2715
  };
2700
2716
  query?: never;
2701
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2717
+ url: '/v1/media/series/{id}/media/{mediaId}';
2702
2718
  };
2703
- export type CreateSegmentErrors = {
2719
+ export type UpdateSeriesMediaErrors = {
2704
2720
  /**
2705
2721
  * Bad Request
2706
2722
  */
2707
2723
  400: Error400;
2708
2724
  /**
2709
- * Unauthorized
2725
+ * Unauthorized (API key)
2710
2726
  */
2711
2727
  401: Error401;
2712
2728
  /**
@@ -2717,10 +2733,6 @@ export type CreateSegmentErrors = {
2717
2733
  * Not Found
2718
2734
  */
2719
2735
  404: Error404;
2720
- /**
2721
- * Conflict
2722
- */
2723
- 409: Error409;
2724
2736
  /**
2725
2737
  * Too Many Requests
2726
2738
  */
@@ -2730,40 +2742,32 @@ export type CreateSegmentErrors = {
2730
2742
  */
2731
2743
  500: Error500;
2732
2744
  };
2733
- export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
2734
- export type CreateSegmentResponses = {
2745
+ export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
2746
+ export type UpdateSeriesMediaResponses = {
2735
2747
  /**
2736
- * Single segment response with internal fields
2748
+ * No Content
2737
2749
  */
2738
- 201: SegmentInternal;
2750
+ 204: void;
2739
2751
  };
2740
- export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
2741
- export type DeleteSegmentData = {
2752
+ export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
2753
+ export type GetCharacterData = {
2742
2754
  body?: never;
2743
2755
  path: {
2744
2756
  /**
2745
- * ID of the media
2746
- */
2747
- mediaId: number;
2748
- /**
2749
- * Episode number
2750
- */
2751
- episodeNumber: number;
2752
- /**
2753
- * Segment ID
2757
+ * Internal character ID
2754
2758
  */
2755
2759
  id: number;
2756
2760
  };
2757
2761
  query?: never;
2758
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2762
+ url: '/v1/media/characters/{id}';
2759
2763
  };
2760
- export type DeleteSegmentErrors = {
2764
+ export type GetCharacterErrors = {
2761
2765
  /**
2762
2766
  * Bad Request
2763
2767
  */
2764
2768
  400: Error400;
2765
2769
  /**
2766
- * Unauthorized
2770
+ * Unauthorized (API key)
2767
2771
  */
2768
2772
  401: Error401;
2769
2773
  /**
@@ -2783,40 +2787,32 @@ export type DeleteSegmentErrors = {
2783
2787
  */
2784
2788
  500: Error500;
2785
2789
  };
2786
- export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
2787
- export type DeleteSegmentResponses = {
2790
+ export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
2791
+ export type GetCharacterResponses = {
2788
2792
  /**
2789
- * Segment successfully deleted
2793
+ * OK
2790
2794
  */
2791
- 204: void;
2795
+ 200: CharacterWithMedia;
2792
2796
  };
2793
- export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
2794
- export type GetSegmentData = {
2797
+ export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
2798
+ export type GetSeiyuuData = {
2795
2799
  body?: never;
2796
2800
  path: {
2797
2801
  /**
2798
- * ID of the media
2799
- */
2800
- mediaId: number;
2801
- /**
2802
- * Episode number
2803
- */
2804
- episodeNumber: number;
2805
- /**
2806
- * Segment ID
2802
+ * Internal seiyuu ID
2807
2803
  */
2808
2804
  id: number;
2809
2805
  };
2810
2806
  query?: never;
2811
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2807
+ url: '/v1/media/seiyuu/{id}';
2812
2808
  };
2813
- export type GetSegmentErrors = {
2809
+ export type GetSeiyuuErrors = {
2814
2810
  /**
2815
2811
  * Bad Request
2816
2812
  */
2817
2813
  400: Error400;
2818
2814
  /**
2819
- * Unauthorized
2815
+ * Unauthorized (API key)
2820
2816
  */
2821
2817
  401: Error401;
2822
2818
  /**
@@ -2836,40 +2832,32 @@ export type GetSegmentErrors = {
2836
2832
  */
2837
2833
  500: Error500;
2838
2834
  };
2839
- export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
2840
- export type GetSegmentResponses = {
2835
+ export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
2836
+ export type GetSeiyuuResponses = {
2841
2837
  /**
2842
- * Single segment response
2838
+ * OK
2843
2839
  */
2844
- 200: Segment;
2840
+ 200: SeiyuuWithRoles;
2845
2841
  };
2846
- export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
2847
- export type UpdateSegmentData = {
2848
- body: SegmentUpdateRequest;
2842
+ export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
2843
+ export type DeleteMediaData = {
2844
+ body?: never;
2849
2845
  path: {
2850
2846
  /**
2851
- * ID of the media
2852
- */
2853
- mediaId: number;
2854
- /**
2855
- * Episode number
2856
- */
2857
- episodeNumber: number;
2858
- /**
2859
- * Segment ID
2847
+ * Media ID
2860
2848
  */
2861
2849
  id: number;
2862
2850
  };
2863
2851
  query?: never;
2864
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2852
+ url: '/v1/media/{id}';
2865
2853
  };
2866
- export type UpdateSegmentErrors = {
2854
+ export type DeleteMediaErrors = {
2867
2855
  /**
2868
2856
  * Bad Request
2869
2857
  */
2870
2858
  400: Error400;
2871
2859
  /**
2872
- * Unauthorized
2860
+ * Unauthorized (API key)
2873
2861
  */
2874
2862
  401: Error401;
2875
2863
  /**
@@ -2889,32 +2877,37 @@ export type UpdateSegmentErrors = {
2889
2877
  */
2890
2878
  500: Error500;
2891
2879
  };
2892
- export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
2893
- export type UpdateSegmentResponses = {
2880
+ export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2881
+ export type DeleteMediaResponses = {
2894
2882
  /**
2895
- * Single segment response with internal fields
2883
+ * No Content
2896
2884
  */
2897
- 200: SegmentInternal;
2885
+ 204: void;
2898
2886
  };
2899
- export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
2900
- export type GetSegmentByUuidData = {
2887
+ export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2888
+ export type GetMediaData = {
2901
2889
  body?: never;
2902
2890
  path: {
2903
2891
  /**
2904
- * Segment UUID
2892
+ * Media ID
2905
2893
  */
2906
- uuid: string;
2894
+ id: number;
2907
2895
  };
2908
- query?: never;
2909
- url: '/v1/media/segments/{uuid}';
2896
+ query?: {
2897
+ /**
2898
+ * Resources to expand in the media response
2899
+ */
2900
+ include?: Array<MediaIncludeExpansion>;
2901
+ };
2902
+ url: '/v1/media/{id}';
2910
2903
  };
2911
- export type GetSegmentByUuidErrors = {
2904
+ export type GetMediaErrors = {
2912
2905
  /**
2913
2906
  * Bad Request
2914
2907
  */
2915
2908
  400: Error400;
2916
2909
  /**
2917
- * Unauthorized
2910
+ * Unauthorized (API key)
2918
2911
  */
2919
2912
  401: Error401;
2920
2913
  /**
@@ -2934,42 +2927,32 @@ export type GetSegmentByUuidErrors = {
2934
2927
  */
2935
2928
  500: Error500;
2936
2929
  };
2937
- export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2938
- export type GetSegmentByUuidResponses = {
2939
- 200: Segment;
2930
+ export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2931
+ export type GetMediaResponses = {
2932
+ /**
2933
+ * OK
2934
+ */
2935
+ 200: Media;
2940
2936
  };
2941
- export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2942
- export type GetSegmentContextData = {
2943
- body?: never;
2937
+ export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2938
+ export type UpdateMediaData = {
2939
+ body: MediaUpdateRequest;
2944
2940
  path: {
2945
2941
  /**
2946
- * Segment UUID
2947
- */
2948
- uuid: string;
2949
- };
2950
- query?: {
2951
- /**
2952
- * Number of segments to return before and after the target
2953
- */
2954
- limit?: number;
2955
- /**
2956
- * Content ratings to include (omit for all ratings)
2957
- */
2958
- contentRating?: Array<ContentRating>;
2959
- /**
2960
- * Resources to expand in the response includes block
2942
+ * Media ID
2961
2943
  */
2962
- include?: Array<IncludeExpansion>;
2944
+ id: number;
2963
2945
  };
2964
- url: '/v1/media/segments/{uuid}/context';
2946
+ query?: never;
2947
+ url: '/v1/media/{id}';
2965
2948
  };
2966
- export type GetSegmentContextErrors = {
2949
+ export type UpdateMediaErrors = {
2967
2950
  /**
2968
2951
  * Bad Request
2969
2952
  */
2970
2953
  400: Error400;
2971
2954
  /**
2972
- * Unauthorized
2955
+ * Unauthorized (API key)
2973
2956
  */
2974
2957
  401: Error401;
2975
2958
  /**
@@ -2989,46 +2972,51 @@ export type GetSegmentContextErrors = {
2989
2972
  */
2990
2973
  500: Error500;
2991
2974
  };
2992
- export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2993
- export type GetSegmentContextResponses = {
2975
+ export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2976
+ export type UpdateMediaResponses = {
2994
2977
  /**
2995
2978
  * OK
2996
2979
  */
2997
- 200: SegmentContextResponse;
2980
+ 200: Media;
2998
2981
  };
2999
- export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
3000
- export type ListSeriesData = {
2982
+ export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
2983
+ export type ListEpisodesData = {
3001
2984
  body?: never;
3002
- path?: never;
3003
- query?: {
2985
+ path: {
3004
2986
  /**
3005
- * Number of results per page
2987
+ * ID of the media
3006
2988
  */
3007
- limit?: number;
2989
+ mediaId: number;
2990
+ };
2991
+ query?: {
3008
2992
  /**
3009
- * Pagination cursor offset
2993
+ * Maximum number of episodes to return
3010
2994
  */
3011
- cursor?: number;
2995
+ take?: number;
3012
2996
  /**
3013
- * Case-insensitive search across English, Japanese, and Romaji names
2997
+ * Opaque pagination cursor token
3014
2998
  */
3015
- query?: string;
2999
+ cursor?: string;
3016
3000
  };
3017
- url: '/v1/media/series';
3001
+ url: '/v1/media/{mediaId}/episodes';
3018
3002
  };
3019
- export type ListSeriesErrors = {
3003
+ export type ListEpisodesErrors = {
3020
3004
  /**
3021
3005
  * Bad Request
3022
3006
  */
3023
3007
  400: Error400;
3024
3008
  /**
3025
- * Unauthorized
3009
+ * Unauthorized (API key)
3026
3010
  */
3027
3011
  401: Error401;
3028
3012
  /**
3029
3013
  * Forbidden
3030
3014
  */
3031
3015
  403: Error403;
3016
+ /**
3017
+ * Not Found
3018
+ */
3019
+ 404: Error404;
3032
3020
  /**
3033
3021
  * Too Many Requests
3034
3022
  */
@@ -3038,46 +3026,46 @@ export type ListSeriesErrors = {
3038
3026
  */
3039
3027
  500: Error500;
3040
3028
  };
3041
- export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
3042
- export type ListSeriesResponses = {
3029
+ export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
3030
+ export type ListEpisodesResponses = {
3043
3031
  /**
3044
- * OK
3032
+ * Paginated list of episodes
3045
3033
  */
3046
- 200: SeriesListResponse;
3034
+ 200: EpisodeListResponse;
3047
3035
  };
3048
- export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
3049
- export type CreateSeriesData = {
3050
- body: {
3051
- /**
3052
- * Japanese name of the series
3053
- */
3054
- nameJa: string;
3055
- /**
3056
- * Romaji name of the series
3057
- */
3058
- nameRomaji: string;
3036
+ export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
3037
+ export type CreateEpisodeData = {
3038
+ body: EpisodeCreateRequest;
3039
+ path: {
3059
3040
  /**
3060
- * English name of the series
3041
+ * ID of the media
3061
3042
  */
3062
- nameEn: string;
3043
+ mediaId: number;
3063
3044
  };
3064
- path?: never;
3065
3045
  query?: never;
3066
- url: '/v1/media/series';
3046
+ url: '/v1/media/{mediaId}/episodes';
3067
3047
  };
3068
- export type CreateSeriesErrors = {
3048
+ export type CreateEpisodeErrors = {
3069
3049
  /**
3070
3050
  * Bad Request
3071
3051
  */
3072
3052
  400: Error400;
3073
3053
  /**
3074
- * Unauthorized
3054
+ * Unauthorized (API key)
3075
3055
  */
3076
3056
  401: Error401;
3077
3057
  /**
3078
3058
  * Forbidden
3079
3059
  */
3080
3060
  403: Error403;
3061
+ /**
3062
+ * Not Found
3063
+ */
3064
+ 404: Error404;
3065
+ /**
3066
+ * Conflict
3067
+ */
3068
+ 409: Error409;
3081
3069
  /**
3082
3070
  * Too Many Requests
3083
3071
  */
@@ -3087,32 +3075,36 @@ export type CreateSeriesErrors = {
3087
3075
  */
3088
3076
  500: Error500;
3089
3077
  };
3090
- export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
3091
- export type CreateSeriesResponses = {
3078
+ export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
3079
+ export type CreateEpisodeResponses = {
3092
3080
  /**
3093
- * Created
3081
+ * Single episode response
3094
3082
  */
3095
- 201: Series;
3083
+ 201: Episode;
3096
3084
  };
3097
- export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
3098
- export type DeleteSeriesData = {
3085
+ export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
3086
+ export type DeleteEpisodeData = {
3099
3087
  body?: never;
3100
3088
  path: {
3101
3089
  /**
3102
- * Series ID
3090
+ * ID of the media
3103
3091
  */
3104
- id: number;
3092
+ mediaId: number;
3093
+ /**
3094
+ * Episode number
3095
+ */
3096
+ episodeNumber: number;
3105
3097
  };
3106
3098
  query?: never;
3107
- url: '/v1/media/series/{id}';
3099
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3108
3100
  };
3109
- export type DeleteSeriesErrors = {
3101
+ export type DeleteEpisodeErrors = {
3110
3102
  /**
3111
3103
  * Bad Request
3112
3104
  */
3113
3105
  400: Error400;
3114
3106
  /**
3115
- * Unauthorized
3107
+ * Unauthorized (API key)
3116
3108
  */
3117
3109
  401: Error401;
3118
3110
  /**
@@ -3132,37 +3124,36 @@ export type DeleteSeriesErrors = {
3132
3124
  */
3133
3125
  500: Error500;
3134
3126
  };
3135
- export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
3136
- export type DeleteSeriesResponses = {
3127
+ export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
3128
+ export type DeleteEpisodeResponses = {
3137
3129
  /**
3138
- * No Content
3130
+ * Episode successfully deleted
3139
3131
  */
3140
3132
  204: void;
3141
3133
  };
3142
- export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
3143
- export type GetSeriesData = {
3134
+ export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
3135
+ export type GetEpisodeData = {
3144
3136
  body?: never;
3145
3137
  path: {
3146
3138
  /**
3147
- * Series ID
3139
+ * ID of the media
3148
3140
  */
3149
- id: number;
3150
- };
3151
- query?: {
3141
+ mediaId: number;
3152
3142
  /**
3153
- * Resources to expand in the series response (`media.characters` implies `media`)
3143
+ * Episode number
3154
3144
  */
3155
- include?: Array<MediaIncludeExpansion>;
3145
+ episodeNumber: number;
3156
3146
  };
3157
- url: '/v1/media/series/{id}';
3147
+ query?: never;
3148
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3158
3149
  };
3159
- export type GetSeriesErrors = {
3150
+ export type GetEpisodeErrors = {
3160
3151
  /**
3161
3152
  * Bad Request
3162
3153
  */
3163
3154
  400: Error400;
3164
3155
  /**
3165
- * Unauthorized
3156
+ * Unauthorized (API key)
3166
3157
  */
3167
3158
  401: Error401;
3168
3159
  /**
@@ -3182,45 +3173,36 @@ export type GetSeriesErrors = {
3182
3173
  */
3183
3174
  500: Error500;
3184
3175
  };
3185
- export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
3186
- export type GetSeriesResponses = {
3176
+ export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
3177
+ export type GetEpisodeResponses = {
3187
3178
  /**
3188
- * OK
3179
+ * Single episode response
3189
3180
  */
3190
- 200: SeriesWithMedia;
3181
+ 200: Episode;
3191
3182
  };
3192
- export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
3193
- export type UpdateSeriesData = {
3194
- body: {
3195
- /**
3196
- * Updated Japanese name
3197
- */
3198
- nameJa?: string;
3199
- /**
3200
- * Updated Romaji name
3201
- */
3202
- nameRomaji?: string;
3183
+ export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
3184
+ export type UpdateEpisodeData = {
3185
+ body: EpisodeUpdateRequest;
3186
+ path: {
3203
3187
  /**
3204
- * Updated English name
3188
+ * ID of the media
3205
3189
  */
3206
- nameEn?: string;
3207
- };
3208
- path: {
3190
+ mediaId: number;
3209
3191
  /**
3210
- * Series ID
3192
+ * Episode number
3211
3193
  */
3212
- id: number;
3194
+ episodeNumber: number;
3213
3195
  };
3214
3196
  query?: never;
3215
- url: '/v1/media/series/{id}';
3197
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3216
3198
  };
3217
- export type UpdateSeriesErrors = {
3199
+ export type UpdateEpisodeErrors = {
3218
3200
  /**
3219
3201
  * Bad Request
3220
3202
  */
3221
3203
  400: Error400;
3222
3204
  /**
3223
- * Unauthorized
3205
+ * Unauthorized (API key)
3224
3206
  */
3225
3207
  401: Error401;
3226
3208
  /**
@@ -3240,41 +3222,45 @@ export type UpdateSeriesErrors = {
3240
3222
  */
3241
3223
  500: Error500;
3242
3224
  };
3243
- export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
3244
- export type UpdateSeriesResponses = {
3225
+ export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
3226
+ export type UpdateEpisodeResponses = {
3245
3227
  /**
3246
- * OK
3228
+ * Single episode response
3247
3229
  */
3248
- 200: Series;
3230
+ 200: Episode;
3249
3231
  };
3250
- export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
3251
- export type AddMediaToSeriesData = {
3252
- body: {
3232
+ export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
3233
+ export type ListSegmentsData = {
3234
+ body?: never;
3235
+ path: {
3253
3236
  /**
3254
- * Media ID to add
3237
+ * ID of the media
3255
3238
  */
3256
3239
  mediaId: number;
3257
3240
  /**
3258
- * Position in the series (1-indexed)
3241
+ * Episode number
3259
3242
  */
3260
- position: number;
3243
+ episodeNumber: number;
3261
3244
  };
3262
- path: {
3245
+ query?: {
3263
3246
  /**
3264
- * Series ID
3247
+ * Maximum number of segments to return
3265
3248
  */
3266
- id: number;
3249
+ take?: number;
3250
+ /**
3251
+ * Opaque pagination cursor token
3252
+ */
3253
+ cursor?: string;
3267
3254
  };
3268
- query?: never;
3269
- url: '/v1/media/series/{id}/media';
3255
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3270
3256
  };
3271
- export type AddMediaToSeriesErrors = {
3257
+ export type ListSegmentsErrors = {
3272
3258
  /**
3273
3259
  * Bad Request
3274
3260
  */
3275
3261
  400: Error400;
3276
3262
  /**
3277
- * Unauthorized
3263
+ * Unauthorized (API key)
3278
3264
  */
3279
3265
  401: Error401;
3280
3266
  /**
@@ -3294,36 +3280,42 @@ export type AddMediaToSeriesErrors = {
3294
3280
  */
3295
3281
  500: Error500;
3296
3282
  };
3297
- export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
3298
- export type AddMediaToSeriesResponses = {
3283
+ export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
3284
+ export type ListSegmentsResponses = {
3299
3285
  /**
3300
- * No Content
3286
+ * Paginated segment list response
3301
3287
  */
3302
- 204: void;
3288
+ 200: {
3289
+ /**
3290
+ * Array of segment objects
3291
+ */
3292
+ segments: Array<Segment>;
3293
+ pagination: OpaqueCursorPagination;
3294
+ };
3303
3295
  };
3304
- export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
3305
- export type RemoveMediaFromSeriesData = {
3306
- body?: never;
3296
+ export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
3297
+ export type CreateSegmentData = {
3298
+ body: SegmentCreateRequest;
3307
3299
  path: {
3308
3300
  /**
3309
- * Series ID
3301
+ * ID of the media
3310
3302
  */
3311
- id: number;
3303
+ mediaId: number;
3312
3304
  /**
3313
- * Media ID
3305
+ * Episode number
3314
3306
  */
3315
- mediaId: number;
3307
+ episodeNumber: number;
3316
3308
  };
3317
3309
  query?: never;
3318
- url: '/v1/media/series/{id}/media/{mediaId}';
3310
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3319
3311
  };
3320
- export type RemoveMediaFromSeriesErrors = {
3312
+ export type CreateSegmentErrors = {
3321
3313
  /**
3322
3314
  * Bad Request
3323
3315
  */
3324
3316
  400: Error400;
3325
3317
  /**
3326
- * Unauthorized
3318
+ * Unauthorized (API key)
3327
3319
  */
3328
3320
  401: Error401;
3329
3321
  /**
@@ -3334,6 +3326,10 @@ export type RemoveMediaFromSeriesErrors = {
3334
3326
  * Not Found
3335
3327
  */
3336
3328
  404: Error404;
3329
+ /**
3330
+ * Conflict
3331
+ */
3332
+ 409: Error409;
3337
3333
  /**
3338
3334
  * Too Many Requests
3339
3335
  */
@@ -3343,41 +3339,40 @@ export type RemoveMediaFromSeriesErrors = {
3343
3339
  */
3344
3340
  500: Error500;
3345
3341
  };
3346
- export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
3347
- export type RemoveMediaFromSeriesResponses = {
3342
+ export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
3343
+ export type CreateSegmentResponses = {
3348
3344
  /**
3349
- * No Content
3345
+ * Single segment response with internal fields
3350
3346
  */
3351
- 204: void;
3347
+ 201: SegmentInternal;
3352
3348
  };
3353
- export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
3354
- export type UpdateSeriesMediaData = {
3355
- body: {
3349
+ export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
3350
+ export type DeleteSegmentData = {
3351
+ body?: never;
3352
+ path: {
3356
3353
  /**
3357
- * New position in the series (1-indexed)
3354
+ * ID of the media
3358
3355
  */
3359
- position: number;
3360
- };
3361
- path: {
3356
+ mediaId: number;
3362
3357
  /**
3363
- * Series ID
3358
+ * Episode number
3364
3359
  */
3365
- id: number;
3360
+ episodeNumber: number;
3366
3361
  /**
3367
- * Media ID
3362
+ * Segment ID
3368
3363
  */
3369
- mediaId: number;
3364
+ id: number;
3370
3365
  };
3371
3366
  query?: never;
3372
- url: '/v1/media/series/{id}/media/{mediaId}';
3367
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3373
3368
  };
3374
- export type UpdateSeriesMediaErrors = {
3369
+ export type DeleteSegmentErrors = {
3375
3370
  /**
3376
3371
  * Bad Request
3377
3372
  */
3378
3373
  400: Error400;
3379
3374
  /**
3380
- * Unauthorized
3375
+ * Unauthorized (API key)
3381
3376
  */
3382
3377
  401: Error401;
3383
3378
  /**
@@ -3397,32 +3392,40 @@ export type UpdateSeriesMediaErrors = {
3397
3392
  */
3398
3393
  500: Error500;
3399
3394
  };
3400
- export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
3401
- export type UpdateSeriesMediaResponses = {
3395
+ export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
3396
+ export type DeleteSegmentResponses = {
3402
3397
  /**
3403
- * No Content
3398
+ * Segment successfully deleted
3404
3399
  */
3405
3400
  204: void;
3406
3401
  };
3407
- export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
3408
- export type GetCharacterData = {
3402
+ export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
3403
+ export type GetSegmentData = {
3409
3404
  body?: never;
3410
3405
  path: {
3411
3406
  /**
3412
- * AniList character ID
3407
+ * ID of the media
3408
+ */
3409
+ mediaId: number;
3410
+ /**
3411
+ * Episode number
3412
+ */
3413
+ episodeNumber: number;
3414
+ /**
3415
+ * Segment ID
3413
3416
  */
3414
3417
  id: number;
3415
3418
  };
3416
3419
  query?: never;
3417
- url: '/v1/media/characters/{id}';
3420
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3418
3421
  };
3419
- export type GetCharacterErrors = {
3422
+ export type GetSegmentErrors = {
3420
3423
  /**
3421
3424
  * Bad Request
3422
3425
  */
3423
3426
  400: Error400;
3424
3427
  /**
3425
- * Unauthorized
3428
+ * Unauthorized (API key)
3426
3429
  */
3427
3430
  401: Error401;
3428
3431
  /**
@@ -3442,37 +3445,40 @@ export type GetCharacterErrors = {
3442
3445
  */
3443
3446
  500: Error500;
3444
3447
  };
3445
- export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
3446
- export type GetCharacterResponses = {
3448
+ export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
3449
+ export type GetSegmentResponses = {
3447
3450
  /**
3448
- * OK
3451
+ * Single segment response
3449
3452
  */
3450
- 200: CharacterWithMedia;
3453
+ 200: Segment;
3451
3454
  };
3452
- export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
3453
- export type GetSeiyuuData = {
3454
- body?: never;
3455
+ export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
3456
+ export type UpdateSegmentData = {
3457
+ body: SegmentUpdateRequest;
3455
3458
  path: {
3456
3459
  /**
3457
- * AniList staff ID
3460
+ * ID of the media
3458
3461
  */
3459
- id: number;
3460
- };
3461
- query?: {
3462
+ mediaId: number;
3463
+ /**
3464
+ * Episode number
3465
+ */
3466
+ episodeNumber: number;
3462
3467
  /**
3463
- * Resources to expand in the response (`character` is included by default)
3468
+ * Segment ID
3464
3469
  */
3465
- include?: Array<'character'>;
3470
+ id: number;
3466
3471
  };
3467
- url: '/v1/media/seiyuu/{id}';
3472
+ query?: never;
3473
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3468
3474
  };
3469
- export type GetSeiyuuErrors = {
3475
+ export type UpdateSegmentErrors = {
3470
3476
  /**
3471
3477
  * Bad Request
3472
3478
  */
3473
3479
  400: Error400;
3474
3480
  /**
3475
- * Unauthorized
3481
+ * Unauthorized (API key)
3476
3482
  */
3477
3483
  401: Error401;
3478
3484
  /**
@@ -3492,14 +3498,14 @@ export type GetSeiyuuErrors = {
3492
3498
  */
3493
3499
  500: Error500;
3494
3500
  };
3495
- export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
3496
- export type GetSeiyuuResponses = {
3501
+ export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
3502
+ export type UpdateSegmentResponses = {
3497
3503
  /**
3498
- * OK
3504
+ * Single segment response with internal fields
3499
3505
  */
3500
- 200: SeiyuuWithRoles;
3506
+ 200: SegmentInternal;
3501
3507
  };
3502
- export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
3508
+ export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
3503
3509
  export type GetUserQuotaData = {
3504
3510
  body?: never;
3505
3511
  path?: never;
@@ -3508,9 +3514,13 @@ export type GetUserQuotaData = {
3508
3514
  };
3509
3515
  export type GetUserQuotaErrors = {
3510
3516
  /**
3511
- * Unauthorized
3517
+ * Unauthorized (session)
3512
3518
  */
3513
3519
  401: Error401;
3520
+ /**
3521
+ * Forbidden
3522
+ */
3523
+ 403: Error403;
3514
3524
  /**
3515
3525
  * Too Many Requests
3516
3526
  */
@@ -3528,43 +3538,6 @@ export type GetUserQuotaResponses = {
3528
3538
  200: UserQuotaResponse;
3529
3539
  };
3530
3540
  export type GetUserQuotaResponse = GetUserQuotaResponses[keyof GetUserQuotaResponses];
3531
- export type ListUserReportsData = {
3532
- body?: never;
3533
- path?: never;
3534
- query?: {
3535
- /**
3536
- * Cursor for pagination (report ID to start after)
3537
- */
3538
- cursor?: number;
3539
- /**
3540
- * Number of results per page
3541
- */
3542
- limit?: number;
3543
- /**
3544
- * Filter by report status
3545
- */
3546
- status?: 'PENDING' | 'CONCERN' | 'ACCEPTED' | 'REJECTED' | 'RESOLVED' | 'IGNORED';
3547
- };
3548
- url: '/v1/user/reports';
3549
- };
3550
- export type ListUserReportsErrors = {
3551
- /**
3552
- * Unauthorized
3553
- */
3554
- 401: Error401;
3555
- /**
3556
- * Internal Server Error
3557
- */
3558
- 500: Error500;
3559
- };
3560
- export type ListUserReportsError = ListUserReportsErrors[keyof ListUserReportsErrors];
3561
- export type ListUserReportsResponses = {
3562
- /**
3563
- * OK
3564
- */
3565
- 200: ReportListResponse;
3566
- };
3567
- export type ListUserReportsResponse = ListUserReportsResponses[keyof ListUserReportsResponses];
3568
3541
  export type CreateUserReportData = {
3569
3542
  body: CreateReportRequest;
3570
3543
  path?: never;
@@ -3577,7 +3550,7 @@ export type CreateUserReportErrors = {
3577
3550
  */
3578
3551
  400: Error400;
3579
3552
  /**
3580
- * Unauthorized
3553
+ * Unauthorized (session)
3581
3554
  */
3582
3555
  401: Error401;
3583
3556
  /**
@@ -3605,7 +3578,7 @@ export type GetUserPreferencesData = {
3605
3578
  };
3606
3579
  export type GetUserPreferencesErrors = {
3607
3580
  /**
3608
- * Unauthorized
3581
+ * Unauthorized (session)
3609
3582
  */
3610
3583
  401: Error401;
3611
3584
  /**
@@ -3629,7 +3602,7 @@ export type UpdateUserPreferencesData = {
3629
3602
  };
3630
3603
  export type UpdateUserPreferencesErrors = {
3631
3604
  /**
3632
- * Unauthorized
3605
+ * Unauthorized (session)
3633
3606
  */
3634
3607
  401: Error401;
3635
3608
  /**
@@ -3658,7 +3631,7 @@ export type DeleteUserActivityData = {
3658
3631
  };
3659
3632
  export type DeleteUserActivityErrors = {
3660
3633
  /**
3661
- * Unauthorized
3634
+ * Unauthorized (session)
3662
3635
  */
3663
3636
  401: Error401;
3664
3637
  /**
@@ -3672,7 +3645,6 @@ export type DeleteUserActivityResponses = {
3672
3645
  * OK
3673
3646
  */
3674
3647
  200: {
3675
- message: string;
3676
3648
  deletedCount: number;
3677
3649
  };
3678
3650
  };
@@ -3682,13 +3654,13 @@ export type ListUserActivityData = {
3682
3654
  path?: never;
3683
3655
  query?: {
3684
3656
  /**
3685
- * Cursor for pagination (activity ID to start after)
3657
+ * Opaque cursor token for keyset pagination
3686
3658
  */
3687
- cursor?: number;
3659
+ cursor?: string;
3688
3660
  /**
3689
3661
  * Number of results per page
3690
3662
  */
3691
- limit?: number;
3663
+ take?: number;
3692
3664
  /**
3693
3665
  * Filter by activity type
3694
3666
  */
@@ -3702,7 +3674,7 @@ export type ListUserActivityData = {
3702
3674
  };
3703
3675
  export type ListUserActivityErrors = {
3704
3676
  /**
3705
- * Unauthorized
3677
+ * Unauthorized (session)
3706
3678
  */
3707
3679
  401: Error401;
3708
3680
  /**
@@ -3717,10 +3689,44 @@ export type ListUserActivityResponses = {
3717
3689
  */
3718
3690
  200: {
3719
3691
  activities: Array<UserActivity>;
3720
- pagination: CursorPagination;
3692
+ pagination: OpaqueCursorPagination;
3721
3693
  };
3722
3694
  };
3723
3695
  export type ListUserActivityResponse = ListUserActivityResponses[keyof ListUserActivityResponses];
3696
+ export type TrackUserActivityData = {
3697
+ body: {
3698
+ activityType: 'SEGMENT_PLAY';
3699
+ segmentUuid?: string;
3700
+ mediaId?: number;
3701
+ mediaName?: string;
3702
+ japaneseText?: string;
3703
+ };
3704
+ path?: never;
3705
+ query?: never;
3706
+ url: '/v1/user/activity';
3707
+ };
3708
+ export type TrackUserActivityErrors = {
3709
+ /**
3710
+ * Bad Request
3711
+ */
3712
+ 400: Error400;
3713
+ /**
3714
+ * Unauthorized (session)
3715
+ */
3716
+ 401: Error401;
3717
+ /**
3718
+ * Internal Server Error
3719
+ */
3720
+ 500: Error500;
3721
+ };
3722
+ export type TrackUserActivityError = TrackUserActivityErrors[keyof TrackUserActivityErrors];
3723
+ export type TrackUserActivityResponses = {
3724
+ /**
3725
+ * Activity tracked
3726
+ */
3727
+ 204: void;
3728
+ };
3729
+ export type TrackUserActivityResponse = TrackUserActivityResponses[keyof TrackUserActivityResponses];
3724
3730
  export type GetUserActivityHeatmapData = {
3725
3731
  body?: never;
3726
3732
  path?: never;
@@ -3738,7 +3744,7 @@ export type GetUserActivityHeatmapData = {
3738
3744
  };
3739
3745
  export type GetUserActivityHeatmapErrors = {
3740
3746
  /**
3741
- * Unauthorized
3747
+ * Unauthorized (session)
3742
3748
  */
3743
3749
  401: Error401;
3744
3750
  /**
@@ -3753,9 +3759,9 @@ export type GetUserActivityHeatmapResponses = {
3753
3759
  */
3754
3760
  200: {
3755
3761
  /**
3756
- * Map of YYYY-MM-DD date strings to activity counts
3762
+ * Map of YYYY-MM-DD date strings to activity activityByDay
3757
3763
  */
3758
- counts: {
3764
+ activityByDay: {
3759
3765
  [key: string]: number;
3760
3766
  };
3761
3767
  };
@@ -3774,7 +3780,7 @@ export type GetUserActivityStatsData = {
3774
3780
  };
3775
3781
  export type GetUserActivityStatsErrors = {
3776
3782
  /**
3777
- * Unauthorized
3783
+ * Unauthorized (session)
3778
3784
  */
3779
3785
  401: Error401;
3780
3786
  /**
@@ -3792,10 +3798,6 @@ export type GetUserActivityStatsResponses = {
3792
3798
  totalExports: number;
3793
3799
  totalPlays: number;
3794
3800
  totalListAdds: number;
3795
- /**
3796
- * Consecutive days with at least one activity
3797
- */
3798
- streakDays: number;
3799
3801
  topMedia: Array<{
3800
3802
  mediaId: number;
3801
3803
  count: number;
@@ -3803,6 +3805,70 @@ export type GetUserActivityStatsResponses = {
3803
3805
  };
3804
3806
  };
3805
3807
  export type GetUserActivityStatsResponse = GetUserActivityStatsResponses[keyof GetUserActivityStatsResponses];
3808
+ export type DeleteUserActivityByDateData = {
3809
+ body?: never;
3810
+ path: {
3811
+ /**
3812
+ * Date in YYYY-MM-DD format
3813
+ */
3814
+ date: string;
3815
+ };
3816
+ query?: never;
3817
+ url: '/v1/user/activity/date/{date}';
3818
+ };
3819
+ export type DeleteUserActivityByDateErrors = {
3820
+ /**
3821
+ * Unauthorized (session)
3822
+ */
3823
+ 401: Error401;
3824
+ /**
3825
+ * Internal Server Error
3826
+ */
3827
+ 500: Error500;
3828
+ };
3829
+ export type DeleteUserActivityByDateError = DeleteUserActivityByDateErrors[keyof DeleteUserActivityByDateErrors];
3830
+ export type DeleteUserActivityByDateResponses = {
3831
+ /**
3832
+ * OK
3833
+ */
3834
+ 200: {
3835
+ deletedCount: number;
3836
+ };
3837
+ };
3838
+ export type DeleteUserActivityByDateResponse = DeleteUserActivityByDateResponses[keyof DeleteUserActivityByDateResponses];
3839
+ export type DeleteUserActivityByIdData = {
3840
+ body?: never;
3841
+ path: {
3842
+ /**
3843
+ * Activity record ID
3844
+ */
3845
+ id: number;
3846
+ };
3847
+ query?: never;
3848
+ url: '/v1/user/activity/{id}';
3849
+ };
3850
+ export type DeleteUserActivityByIdErrors = {
3851
+ /**
3852
+ * Unauthorized (session)
3853
+ */
3854
+ 401: Error401;
3855
+ /**
3856
+ * Not Found
3857
+ */
3858
+ 404: Error404;
3859
+ /**
3860
+ * Internal Server Error
3861
+ */
3862
+ 500: Error500;
3863
+ };
3864
+ export type DeleteUserActivityByIdError = DeleteUserActivityByIdErrors[keyof DeleteUserActivityByIdErrors];
3865
+ export type DeleteUserActivityByIdResponses = {
3866
+ /**
3867
+ * Activity deleted
3868
+ */
3869
+ 204: void;
3870
+ };
3871
+ export type DeleteUserActivityByIdResponse = DeleteUserActivityByIdResponses[keyof DeleteUserActivityByIdResponses];
3806
3872
  export type ExportUserDataData = {
3807
3873
  body?: never;
3808
3874
  path?: never;
@@ -3811,7 +3877,7 @@ export type ExportUserDataData = {
3811
3877
  };
3812
3878
  export type ExportUserDataErrors = {
3813
3879
  /**
3814
- * Unauthorized
3880
+ * Unauthorized (session)
3815
3881
  */
3816
3882
  401: Error401;
3817
3883
  /**
@@ -3835,7 +3901,7 @@ export type ListUserLabsData = {
3835
3901
  };
3836
3902
  export type ListUserLabsErrors = {
3837
3903
  /**
3838
- * Unauthorized
3904
+ * Unauthorized (session)
3839
3905
  */
3840
3906
  401: Error401;
3841
3907
  /**
@@ -3851,6 +3917,72 @@ export type ListUserLabsResponses = {
3851
3917
  200: Array<UserLabFeature>;
3852
3918
  };
3853
3919
  export type ListUserLabsResponse = ListUserLabsResponses[keyof ListUserLabsResponses];
3920
+ export type UnenrollUserLabData = {
3921
+ body?: never;
3922
+ path: {
3923
+ /**
3924
+ * Lab feature key
3925
+ */
3926
+ key: string;
3927
+ };
3928
+ query?: never;
3929
+ url: '/v1/user/labs/{key}';
3930
+ };
3931
+ export type UnenrollUserLabErrors = {
3932
+ /**
3933
+ * Unauthorized (session)
3934
+ */
3935
+ 401: Error401;
3936
+ /**
3937
+ * Not Found
3938
+ */
3939
+ 404: Error404;
3940
+ /**
3941
+ * Internal Server Error
3942
+ */
3943
+ 500: Error500;
3944
+ };
3945
+ export type UnenrollUserLabError = UnenrollUserLabErrors[keyof UnenrollUserLabErrors];
3946
+ export type UnenrollUserLabResponses = {
3947
+ /**
3948
+ * Unenrolled successfully
3949
+ */
3950
+ 204: void;
3951
+ };
3952
+ export type UnenrollUserLabResponse = UnenrollUserLabResponses[keyof UnenrollUserLabResponses];
3953
+ export type EnrollUserLabData = {
3954
+ body?: never;
3955
+ path: {
3956
+ /**
3957
+ * Lab feature key
3958
+ */
3959
+ key: string;
3960
+ };
3961
+ query?: never;
3962
+ url: '/v1/user/labs/{key}';
3963
+ };
3964
+ export type EnrollUserLabErrors = {
3965
+ /**
3966
+ * Unauthorized (session)
3967
+ */
3968
+ 401: Error401;
3969
+ /**
3970
+ * Not Found
3971
+ */
3972
+ 404: Error404;
3973
+ /**
3974
+ * Internal Server Error
3975
+ */
3976
+ 500: Error500;
3977
+ };
3978
+ export type EnrollUserLabError = EnrollUserLabErrors[keyof EnrollUserLabErrors];
3979
+ export type EnrollUserLabResponses = {
3980
+ /**
3981
+ * Enrolled successfully
3982
+ */
3983
+ 204: void;
3984
+ };
3985
+ export type EnrollUserLabResponse = EnrollUserLabResponses[keyof EnrollUserLabResponses];
3854
3986
  export type ListCollectionsData = {
3855
3987
  body?: never;
3856
3988
  path?: never;
@@ -3860,19 +3992,13 @@ export type ListCollectionsData = {
3860
3992
  */
3861
3993
  visibility?: 'public' | 'private';
3862
3994
  /**
3863
- * Cursor offset for pagination
3864
- */
3865
- cursor?: number;
3866
- /**
3867
- * Page number (1-indexed)
3868
- *
3869
- * @deprecated
3995
+ * Opaque pagination cursor token
3870
3996
  */
3871
- page?: number;
3997
+ cursor?: string;
3872
3998
  /**
3873
3999
  * Items per page
3874
4000
  */
3875
- limit?: number;
4001
+ take?: number;
3876
4002
  };
3877
4003
  url: '/v1/collections';
3878
4004
  };
@@ -3882,7 +4008,7 @@ export type ListCollectionsErrors = {
3882
4008
  */
3883
4009
  400: Error400;
3884
4010
  /**
3885
- * Unauthorized
4011
+ * Unauthorized (session)
3886
4012
  */
3887
4013
  401: Error401;
3888
4014
  /**
@@ -3918,7 +4044,7 @@ export type CreateCollectionErrors = {
3918
4044
  */
3919
4045
  400: Error400;
3920
4046
  /**
3921
- * Unauthorized
4047
+ * Unauthorized (session)
3922
4048
  */
3923
4049
  401: Error401;
3924
4050
  /**
@@ -3959,7 +4085,7 @@ export type DeleteCollectionErrors = {
3959
4085
  */
3960
4086
  400: Error400;
3961
4087
  /**
3962
- * Unauthorized
4088
+ * Unauthorized (session)
3963
4089
  */
3964
4090
  401: Error401;
3965
4091
  /**
@@ -3997,19 +4123,13 @@ export type GetCollectionData = {
3997
4123
  };
3998
4124
  query?: {
3999
4125
  /**
4000
- * Cursor offset for paginated segments
4126
+ * Opaque pagination cursor token for paginated segments
4001
4127
  */
4002
- cursor?: number;
4003
- /**
4004
- * Page number (1-indexed)
4005
- *
4006
- * @deprecated
4007
- */
4008
- page?: number;
4128
+ cursor?: string;
4009
4129
  /**
4010
4130
  * Items per page
4011
4131
  */
4012
- limit?: number;
4132
+ take?: number;
4013
4133
  };
4014
4134
  url: '/v1/collections/{id}';
4015
4135
  };
@@ -4019,7 +4139,7 @@ export type GetCollectionErrors = {
4019
4139
  */
4020
4140
  400: Error400;
4021
4141
  /**
4022
- * Unauthorized
4142
+ * Unauthorized (session)
4023
4143
  */
4024
4144
  401: Error401;
4025
4145
  /**
@@ -4067,7 +4187,7 @@ export type UpdateCollectionErrors = {
4067
4187
  */
4068
4188
  400: Error400;
4069
4189
  /**
4070
- * Unauthorized
4190
+ * Unauthorized (session)
4071
4191
  */
4072
4192
  401: Error401;
4073
4193
  /**
@@ -4098,11 +4218,114 @@ export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCol
4098
4218
  export type AddSegmentToCollectionData = {
4099
4219
  body: {
4100
4220
  /**
4101
- * UUID of the segment to add
4221
+ * UUID of the segment to add
4222
+ */
4223
+ segmentUuid: string;
4224
+ /**
4225
+ * Optional annotation
4226
+ */
4227
+ note?: string;
4228
+ };
4229
+ path: {
4230
+ /**
4231
+ * Collection ID
4232
+ */
4233
+ id: number;
4234
+ };
4235
+ query?: never;
4236
+ url: '/v1/collections/{id}/segments';
4237
+ };
4238
+ export type AddSegmentToCollectionErrors = {
4239
+ /**
4240
+ * Bad Request
4241
+ */
4242
+ 400: Error400;
4243
+ /**
4244
+ * Unauthorized (session)
4245
+ */
4246
+ 401: Error401;
4247
+ /**
4248
+ * Forbidden
4249
+ */
4250
+ 403: Error403;
4251
+ /**
4252
+ * Not Found
4253
+ */
4254
+ 404: Error404;
4255
+ /**
4256
+ * Too Many Requests
4257
+ */
4258
+ 429: Error429;
4259
+ /**
4260
+ * Internal Server Error
4261
+ */
4262
+ 500: Error500;
4263
+ };
4264
+ export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4265
+ export type AddSegmentToCollectionResponses = {
4266
+ /**
4267
+ * No Content
4268
+ */
4269
+ 204: void;
4270
+ };
4271
+ export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4272
+ export type RemoveSegmentFromCollectionData = {
4273
+ body?: never;
4274
+ path: {
4275
+ /**
4276
+ * Collection ID
4277
+ */
4278
+ id: number;
4279
+ /**
4280
+ * Segment UUID
4281
+ */
4282
+ uuid: string;
4283
+ };
4284
+ query?: never;
4285
+ url: '/v1/collections/{id}/segments/{uuid}';
4286
+ };
4287
+ export type RemoveSegmentFromCollectionErrors = {
4288
+ /**
4289
+ * Bad Request
4290
+ */
4291
+ 400: Error400;
4292
+ /**
4293
+ * Unauthorized (session)
4294
+ */
4295
+ 401: Error401;
4296
+ /**
4297
+ * Forbidden
4298
+ */
4299
+ 403: Error403;
4300
+ /**
4301
+ * Not Found
4302
+ */
4303
+ 404: Error404;
4304
+ /**
4305
+ * Too Many Requests
4306
+ */
4307
+ 429: Error429;
4308
+ /**
4309
+ * Internal Server Error
4310
+ */
4311
+ 500: Error500;
4312
+ };
4313
+ export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4314
+ export type RemoveSegmentFromCollectionResponses = {
4315
+ /**
4316
+ * No Content
4317
+ */
4318
+ 204: void;
4319
+ };
4320
+ export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4321
+ export type UpdateCollectionSegmentData = {
4322
+ body: {
4323
+ /**
4324
+ * New position in the collection
4102
4325
  */
4103
- segmentUuid: string;
4326
+ position?: number;
4104
4327
  /**
4105
- * Optional annotation
4328
+ * Updated annotation
4106
4329
  */
4107
4330
  note?: string;
4108
4331
  };
@@ -4111,17 +4334,21 @@ export type AddSegmentToCollectionData = {
4111
4334
  * Collection ID
4112
4335
  */
4113
4336
  id: number;
4337
+ /**
4338
+ * Segment UUID
4339
+ */
4340
+ uuid: string;
4114
4341
  };
4115
4342
  query?: never;
4116
- url: '/v1/collections/{id}/segments';
4343
+ url: '/v1/collections/{id}/segments/{uuid}';
4117
4344
  };
4118
- export type AddSegmentToCollectionErrors = {
4345
+ export type UpdateCollectionSegmentErrors = {
4119
4346
  /**
4120
4347
  * Bad Request
4121
4348
  */
4122
4349
  400: Error400;
4123
4350
  /**
4124
- * Unauthorized
4351
+ * Unauthorized (session)
4125
4352
  */
4126
4353
  401: Error401;
4127
4354
  /**
@@ -4141,36 +4368,41 @@ export type AddSegmentToCollectionErrors = {
4141
4368
  */
4142
4369
  500: Error500;
4143
4370
  };
4144
- export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4145
- export type AddSegmentToCollectionResponses = {
4371
+ export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4372
+ export type UpdateCollectionSegmentResponses = {
4146
4373
  /**
4147
4374
  * No Content
4148
4375
  */
4149
4376
  204: void;
4150
4377
  };
4151
- export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4152
- export type RemoveSegmentFromCollectionData = {
4378
+ export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4379
+ export type SearchCollectionSegmentsData = {
4153
4380
  body?: never;
4154
4381
  path: {
4155
4382
  /**
4156
4383
  * Collection ID
4157
4384
  */
4158
4385
  id: number;
4386
+ };
4387
+ query?: {
4159
4388
  /**
4160
- * Segment UUID
4389
+ * Opaque cursor token for pagination
4161
4390
  */
4162
- uuid: string;
4391
+ cursor?: string;
4392
+ /**
4393
+ * Items per page
4394
+ */
4395
+ take?: number;
4163
4396
  };
4164
- query?: never;
4165
- url: '/v1/collections/{id}/segments/{uuid}';
4397
+ url: '/v1/collections/{id}/search';
4166
4398
  };
4167
- export type RemoveSegmentFromCollectionErrors = {
4399
+ export type SearchCollectionSegmentsErrors = {
4168
4400
  /**
4169
4401
  * Bad Request
4170
4402
  */
4171
4403
  400: Error400;
4172
4404
  /**
4173
- * Unauthorized
4405
+ * Unauthorized (session)
4174
4406
  */
4175
4407
  401: Error401;
4176
4408
  /**
@@ -4190,45 +4422,32 @@ export type RemoveSegmentFromCollectionErrors = {
4190
4422
  */
4191
4423
  500: Error500;
4192
4424
  };
4193
- export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4194
- export type RemoveSegmentFromCollectionResponses = {
4425
+ export type SearchCollectionSegmentsError = SearchCollectionSegmentsErrors[keyof SearchCollectionSegmentsErrors];
4426
+ export type SearchCollectionSegmentsResponses = {
4195
4427
  /**
4196
- * No Content
4428
+ * OK
4197
4429
  */
4198
- 204: void;
4430
+ 200: SearchResponse;
4199
4431
  };
4200
- export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4201
- export type UpdateCollectionSegmentData = {
4202
- body: {
4203
- /**
4204
- * New position in the collection
4205
- */
4206
- position?: number;
4207
- /**
4208
- * Updated annotation
4209
- */
4210
- note?: string;
4211
- };
4432
+ export type SearchCollectionSegmentsResponse = SearchCollectionSegmentsResponses[keyof SearchCollectionSegmentsResponses];
4433
+ export type GetCollectionStatsData = {
4434
+ body?: never;
4212
4435
  path: {
4213
4436
  /**
4214
4437
  * Collection ID
4215
4438
  */
4216
4439
  id: number;
4217
- /**
4218
- * Segment UUID
4219
- */
4220
- uuid: string;
4221
4440
  };
4222
4441
  query?: never;
4223
- url: '/v1/collections/{id}/segments/{uuid}';
4442
+ url: '/v1/collections/{id}/stats';
4224
4443
  };
4225
- export type UpdateCollectionSegmentErrors = {
4444
+ export type GetCollectionStatsErrors = {
4226
4445
  /**
4227
4446
  * Bad Request
4228
4447
  */
4229
4448
  400: Error400;
4230
4449
  /**
4231
- * Unauthorized
4450
+ * Unauthorized (session)
4232
4451
  */
4233
4452
  401: Error401;
4234
4453
  /**
@@ -4248,14 +4467,14 @@ export type UpdateCollectionSegmentErrors = {
4248
4467
  */
4249
4468
  500: Error500;
4250
4469
  };
4251
- export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4252
- export type UpdateCollectionSegmentResponses = {
4470
+ export type GetCollectionStatsError = GetCollectionStatsErrors[keyof GetCollectionStatsErrors];
4471
+ export type GetCollectionStatsResponses = {
4253
4472
  /**
4254
- * No Content
4473
+ * OK
4255
4474
  */
4256
- 204: void;
4475
+ 200: SearchStatsResponse;
4257
4476
  };
4258
- export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4477
+ export type GetCollectionStatsResponse = GetCollectionStatsResponses[keyof GetCollectionStatsResponses];
4259
4478
  export type GetAdminDashboardData = {
4260
4479
  body?: never;
4261
4480
  path?: never;
@@ -4264,7 +4483,7 @@ export type GetAdminDashboardData = {
4264
4483
  };
4265
4484
  export type GetAdminDashboardErrors = {
4266
4485
  /**
4267
- * Unauthorized
4486
+ * Unauthorized (API key)
4268
4487
  */
4269
4488
  401: Error401;
4270
4489
  /**
@@ -4356,7 +4575,7 @@ export type GetAdminHealthData = {
4356
4575
  };
4357
4576
  export type GetAdminHealthErrors = {
4358
4577
  /**
4359
- * Unauthorized
4578
+ * Unauthorized (API key)
4360
4579
  */
4361
4580
  401: Error401;
4362
4581
  /**
@@ -4418,7 +4637,7 @@ export type TriggerReindexErrors = {
4418
4637
  */
4419
4638
  400: Error400;
4420
4639
  /**
4421
- * Unauthorized
4640
+ * Unauthorized (API key)
4422
4641
  */
4423
4642
  401: Error401;
4424
4643
  /**
@@ -4454,7 +4673,7 @@ export type ListAdminQueueStatsErrors = {
4454
4673
  */
4455
4674
  400: Error400;
4456
4675
  /**
4457
- * Unauthorized
4676
+ * Unauthorized (API key)
4458
4677
  */
4459
4678
  401: Error401;
4460
4679
  /**
@@ -4476,15 +4695,15 @@ export type ListAdminQueueStatsResponses = {
4476
4695
  * Queue statistics retrieved successfully
4477
4696
  */
4478
4697
  200: Array<{
4479
- queue?: string;
4698
+ queue: string;
4480
4699
  /**
4481
4700
  * Number of jobs currently pending/active
4482
4701
  */
4483
- stuckCount?: number;
4702
+ stuckCount: number;
4484
4703
  /**
4485
4704
  * Number of failed jobs
4486
4705
  */
4487
- failedCount?: number;
4706
+ failedCount: number;
4488
4707
  }>;
4489
4708
  };
4490
4709
  export type ListAdminQueueStatsResponse = ListAdminQueueStatsResponses[keyof ListAdminQueueStatsResponses];
@@ -4505,7 +4724,7 @@ export type GetAdminQueueErrors = {
4505
4724
  */
4506
4725
  400: Error400;
4507
4726
  /**
4508
- * Unauthorized
4727
+ * Unauthorized (API key)
4509
4728
  */
4510
4729
  401: Error401;
4511
4730
  /**
@@ -4590,7 +4809,7 @@ export type ListAdminQueueFailedErrors = {
4590
4809
  */
4591
4810
  400: Error400;
4592
4811
  /**
4593
- * Unauthorized
4812
+ * Unauthorized (API key)
4594
4813
  */
4595
4814
  401: Error401;
4596
4815
  /**
@@ -4615,19 +4834,19 @@ export type ListAdminQueueFailedResponses = {
4615
4834
  /**
4616
4835
  * Job ID
4617
4836
  */
4618
- id?: string;
4837
+ id: string;
4619
4838
  /**
4620
4839
  * The segment ID that failed to sync
4621
4840
  */
4622
- segmentId?: number;
4841
+ segmentId: number;
4623
4842
  /**
4624
4843
  * Error message from the last attempt
4625
4844
  */
4626
- error?: string;
4845
+ error: string;
4627
4846
  /**
4628
4847
  * When the job was created
4629
4848
  */
4630
- createdOn?: string;
4849
+ createdOn: string;
4631
4850
  }>;
4632
4851
  };
4633
4852
  export type ListAdminQueueFailedResponse = ListAdminQueueFailedResponses[keyof ListAdminQueueFailedResponses];
@@ -4648,7 +4867,7 @@ export type RetryAdminQueueFailedErrors = {
4648
4867
  */
4649
4868
  400: Error400;
4650
4869
  /**
4651
- * Unauthorized
4870
+ * Unauthorized (API key)
4652
4871
  */
4653
4872
  401: Error401;
4654
4873
  /**
@@ -4670,12 +4889,12 @@ export type RetryAdminQueueFailedResponses = {
4670
4889
  * Jobs queued for retry
4671
4890
  */
4672
4891
  200: {
4673
- success?: boolean;
4892
+ success: boolean;
4674
4893
  /**
4675
4894
  * Number of jobs queued for retry
4676
4895
  */
4677
- retriedCount?: number;
4678
- message?: string;
4896
+ retriedCount: number;
4897
+ message: string;
4679
4898
  };
4680
4899
  };
4681
4900
  export type RetryAdminQueueFailedResponse = RetryAdminQueueFailedResponses[keyof RetryAdminQueueFailedResponses];
@@ -4696,7 +4915,7 @@ export type PurgeAdminQueueFailedErrors = {
4696
4915
  */
4697
4916
  400: Error400;
4698
4917
  /**
4699
- * Unauthorized
4918
+ * Unauthorized (API key)
4700
4919
  */
4701
4920
  401: Error401;
4702
4921
  /**
@@ -4718,27 +4937,113 @@ export type PurgeAdminQueueFailedResponses = {
4718
4937
  * Failed jobs purged successfully
4719
4938
  */
4720
4939
  200: {
4721
- success?: boolean;
4940
+ success: boolean;
4722
4941
  /**
4723
4942
  * Number of failed jobs deleted
4724
4943
  */
4725
- purgedCount?: number;
4726
- message?: string;
4944
+ purgedCount: number;
4945
+ message: string;
4727
4946
  };
4728
4947
  };
4729
4948
  export type PurgeAdminQueueFailedResponse = PurgeAdminQueueFailedResponses[keyof PurgeAdminQueueFailedResponses];
4949
+ export type ClearAdminImpersonationData = {
4950
+ body?: never;
4951
+ path?: never;
4952
+ query?: never;
4953
+ url: '/v1/admin/impersonation';
4954
+ };
4955
+ export type ClearAdminImpersonationErrors = {
4956
+ /**
4957
+ * Unauthorized (session)
4958
+ */
4959
+ 401: Error401;
4960
+ /**
4961
+ * Forbidden
4962
+ */
4963
+ 403: Error403;
4964
+ /**
4965
+ * Too Many Requests
4966
+ */
4967
+ 429: Error429;
4968
+ /**
4969
+ * Internal Server Error
4970
+ */
4971
+ 500: Error500;
4972
+ };
4973
+ export type ClearAdminImpersonationError = ClearAdminImpersonationErrors[keyof ClearAdminImpersonationErrors];
4974
+ export type ClearAdminImpersonationResponses = {
4975
+ /**
4976
+ * Impersonation session cleared
4977
+ */
4978
+ 200: {
4979
+ message: string;
4980
+ };
4981
+ };
4982
+ export type ClearAdminImpersonationResponse = ClearAdminImpersonationResponses[keyof ClearAdminImpersonationResponses];
4983
+ export type ImpersonateAdminUserData = {
4984
+ body: {
4985
+ /**
4986
+ * User ID to impersonate
4987
+ */
4988
+ userId: number;
4989
+ };
4990
+ path?: never;
4991
+ query?: never;
4992
+ url: '/v1/admin/impersonation';
4993
+ };
4994
+ export type ImpersonateAdminUserErrors = {
4995
+ /**
4996
+ * Bad Request
4997
+ */
4998
+ 400: Error400;
4999
+ /**
5000
+ * Unauthorized (session)
5001
+ */
5002
+ 401: Error401;
5003
+ /**
5004
+ * Forbidden
5005
+ */
5006
+ 403: Error403;
5007
+ /**
5008
+ * Not Found
5009
+ */
5010
+ 404: Error404;
5011
+ /**
5012
+ * Too Many Requests
5013
+ */
5014
+ 429: Error429;
5015
+ /**
5016
+ * Internal Server Error
5017
+ */
5018
+ 500: Error500;
5019
+ };
5020
+ export type ImpersonateAdminUserError = ImpersonateAdminUserErrors[keyof ImpersonateAdminUserErrors];
5021
+ export type ImpersonateAdminUserResponses = {
5022
+ /**
5023
+ * Impersonation session created
5024
+ */
5025
+ 200: {
5026
+ message: string;
5027
+ user: {
5028
+ id: number;
5029
+ username: string;
5030
+ email: string;
5031
+ };
5032
+ };
5033
+ };
5034
+ export type ImpersonateAdminUserResponse = ImpersonateAdminUserResponses[keyof ImpersonateAdminUserResponses];
4730
5035
  export type ListAdminReportsData = {
4731
5036
  body?: never;
4732
5037
  path?: never;
4733
5038
  query?: {
4734
5039
  /**
4735
- * Cursor for pagination (report ID to start after)
5040
+ * Opaque pagination cursor token
4736
5041
  */
4737
- cursor?: number;
5042
+ cursor?: string;
4738
5043
  /**
4739
5044
  * Number of results per page
4740
5045
  */
4741
- limit?: number;
5046
+ take?: number;
4742
5047
  /**
4743
5048
  * Filter by report status
4744
5049
  */
@@ -4764,15 +5069,15 @@ export type ListAdminReportsData = {
4764
5069
  */
4765
5070
  'target.segmentUuid'?: string;
4766
5071
  /**
4767
- * Filter by review check run ID
5072
+ * Filter by audit run ID
4768
5073
  */
4769
- reviewCheckRunId?: number;
5074
+ auditRunId?: number;
4770
5075
  };
4771
5076
  url: '/v1/admin/reports';
4772
5077
  };
4773
5078
  export type ListAdminReportsErrors = {
4774
5079
  /**
4775
- * Unauthorized
5080
+ * Unauthorized (API key)
4776
5081
  */
4777
5082
  401: Error401;
4778
5083
  /**
@@ -4813,7 +5118,7 @@ export type UpdateAdminReportErrors = {
4813
5118
  */
4814
5119
  400: Error400;
4815
5120
  /**
4816
- * Unauthorized
5121
+ * Unauthorized (API key)
4817
5122
  */
4818
5123
  401: Error401;
4819
5124
  /**
@@ -4841,56 +5146,15 @@ export type UpdateAdminReportResponses = {
4841
5146
  200: Report;
4842
5147
  };
4843
5148
  export type UpdateAdminReportResponse = UpdateAdminReportResponses[keyof UpdateAdminReportResponses];
4844
- export type RunAdminReviewData = {
4845
- body?: never;
4846
- path?: never;
4847
- query?: {
4848
- /**
4849
- * Optional category filter
4850
- */
4851
- category?: 'ANIME' | 'JDRAMA';
4852
- /**
4853
- * Optional check name to run a single check instead of all
4854
- */
4855
- checkName?: string;
4856
- };
4857
- url: '/v1/admin/review/run';
4858
- };
4859
- export type RunAdminReviewErrors = {
4860
- /**
4861
- * Unauthorized
4862
- */
4863
- 401: Error401;
4864
- /**
4865
- * Forbidden
4866
- */
4867
- 403: Error403;
4868
- /**
4869
- * Too Many Requests
4870
- */
4871
- 429: Error429;
4872
- /**
4873
- * Internal Server Error
4874
- */
4875
- 500: Error500;
4876
- };
4877
- export type RunAdminReviewError = RunAdminReviewErrors[keyof RunAdminReviewErrors];
4878
- export type RunAdminReviewResponses = {
4879
- /**
4880
- * Check run completed
4881
- */
4882
- 200: RunReviewResponse;
4883
- };
4884
- export type RunAdminReviewResponse = RunAdminReviewResponses[keyof RunAdminReviewResponses];
4885
- export type ListAdminReviewChecksData = {
5149
+ export type ListAdminMediaAuditsData = {
4886
5150
  body?: never;
4887
5151
  path?: never;
4888
5152
  query?: never;
4889
- url: '/v1/admin/review/checks';
5153
+ url: '/v1/admin/media/audits';
4890
5154
  };
4891
- export type ListAdminReviewChecksErrors = {
5155
+ export type ListAdminMediaAuditsErrors = {
4892
5156
  /**
4893
- * Unauthorized
5157
+ * Unauthorized (API key)
4894
5158
  */
4895
5159
  401: Error401;
4896
5160
  /**
@@ -4906,15 +5170,15 @@ export type ListAdminReviewChecksErrors = {
4906
5170
  */
4907
5171
  500: Error500;
4908
5172
  };
4909
- export type ListAdminReviewChecksError = ListAdminReviewChecksErrors[keyof ListAdminReviewChecksErrors];
4910
- export type ListAdminReviewChecksResponses = {
5173
+ export type ListAdminMediaAuditsError = ListAdminMediaAuditsErrors[keyof ListAdminMediaAuditsErrors];
5174
+ export type ListAdminMediaAuditsResponses = {
4911
5175
  /**
4912
5176
  * OK
4913
5177
  */
4914
- 200: Array<ReviewCheck>;
5178
+ 200: Array<MediaAudit>;
4915
5179
  };
4916
- export type ListAdminReviewChecksResponse = ListAdminReviewChecksResponses[keyof ListAdminReviewChecksResponses];
4917
- export type UpdateAdminReviewCheckData = {
5180
+ export type ListAdminMediaAuditsResponse = ListAdminMediaAuditsResponses[keyof ListAdminMediaAuditsResponses];
5181
+ export type UpdateAdminMediaAuditData = {
4918
5182
  body: {
4919
5183
  /**
4920
5184
  * New threshold values
@@ -4923,26 +5187,26 @@ export type UpdateAdminReviewCheckData = {
4923
5187
  [key: string]: unknown;
4924
5188
  };
4925
5189
  /**
4926
- * Enable or disable this check
5190
+ * Enable or disable this audit
4927
5191
  */
4928
5192
  enabled?: boolean;
4929
5193
  };
4930
5194
  path: {
4931
5195
  /**
4932
- * Check name identifier
5196
+ * Audit name identifier
4933
5197
  */
4934
5198
  name: string;
4935
5199
  };
4936
5200
  query?: never;
4937
- url: '/v1/admin/review/checks/{name}';
5201
+ url: '/v1/admin/media/audits/{name}';
4938
5202
  };
4939
- export type UpdateAdminReviewCheckErrors = {
5203
+ export type UpdateAdminMediaAuditErrors = {
4940
5204
  /**
4941
5205
  * Bad Request
4942
5206
  */
4943
5207
  400: Error400;
4944
5208
  /**
4945
- * Unauthorized
5209
+ * Unauthorized (API key)
4946
5210
  */
4947
5211
  401: Error401;
4948
5212
  /**
@@ -4962,76 +5226,33 @@ export type UpdateAdminReviewCheckErrors = {
4962
5226
  */
4963
5227
  500: Error500;
4964
5228
  };
4965
- export type UpdateAdminReviewCheckError = UpdateAdminReviewCheckErrors[keyof UpdateAdminReviewCheckErrors];
4966
- export type UpdateAdminReviewCheckResponses = {
5229
+ export type UpdateAdminMediaAuditError = UpdateAdminMediaAuditErrors[keyof UpdateAdminMediaAuditErrors];
5230
+ export type UpdateAdminMediaAuditResponses = {
4967
5231
  /**
4968
- * Check updated successfully
5232
+ * Audit updated successfully
4969
5233
  */
4970
- 200: ReviewCheck;
5234
+ 200: MediaAudit;
4971
5235
  };
4972
- export type UpdateAdminReviewCheckResponse = UpdateAdminReviewCheckResponses[keyof UpdateAdminReviewCheckResponses];
4973
- export type ListAdminReviewRunsData = {
5236
+ export type UpdateAdminMediaAuditResponse = UpdateAdminMediaAuditResponses[keyof UpdateAdminMediaAuditResponses];
5237
+ export type RunAdminMediaAuditData = {
4974
5238
  body?: never;
4975
- path?: never;
4976
- query?: {
4977
- /**
4978
- * Filter by check name
4979
- */
4980
- checkName?: string;
4981
- /**
4982
- * Cursor for pagination
4983
- */
4984
- cursor?: number;
5239
+ path: {
4985
5240
  /**
4986
- * Number of results per page
5241
+ * Audit name to run, or "all" to run all enabled audits
4987
5242
  */
4988
- limit?: number;
4989
- };
4990
- url: '/v1/admin/review/runs';
4991
- };
4992
- export type ListAdminReviewRunsErrors = {
4993
- /**
4994
- * Unauthorized
4995
- */
4996
- 401: Error401;
4997
- /**
4998
- * Forbidden
4999
- */
5000
- 403: Error403;
5001
- /**
5002
- * Too Many Requests
5003
- */
5004
- 429: Error429;
5005
- /**
5006
- * Internal Server Error
5007
- */
5008
- 500: Error500;
5009
- };
5010
- export type ListAdminReviewRunsError = ListAdminReviewRunsErrors[keyof ListAdminReviewRunsErrors];
5011
- export type ListAdminReviewRunsResponses = {
5012
- /**
5013
- * OK
5014
- */
5015
- 200: {
5016
- runs: Array<ReviewCheckRun>;
5017
- pagination: CursorPagination;
5243
+ name: string;
5018
5244
  };
5019
- };
5020
- export type ListAdminReviewRunsResponse = ListAdminReviewRunsResponses[keyof ListAdminReviewRunsResponses];
5021
- export type GetAdminReviewRunData = {
5022
- body?: never;
5023
- path: {
5245
+ query?: {
5024
5246
  /**
5025
- * Run ID
5247
+ * Optional category filter
5026
5248
  */
5027
- id: number;
5249
+ category?: 'ANIME' | 'JDRAMA';
5028
5250
  };
5029
- query?: never;
5030
- url: '/v1/admin/review/runs/{id}';
5251
+ url: '/v1/admin/media/audits/{name}/run';
5031
5252
  };
5032
- export type GetAdminReviewRunErrors = {
5253
+ export type RunAdminMediaAuditErrors = {
5033
5254
  /**
5034
- * Unauthorized
5255
+ * Unauthorized (API key)
5035
5256
  */
5036
5257
  401: Error401;
5037
5258
  /**
@@ -5051,94 +5272,42 @@ export type GetAdminReviewRunErrors = {
5051
5272
  */
5052
5273
  500: Error500;
5053
5274
  };
5054
- export type GetAdminReviewRunError = GetAdminReviewRunErrors[keyof GetAdminReviewRunErrors];
5055
- export type GetAdminReviewRunResponses = {
5275
+ export type RunAdminMediaAuditError = RunAdminMediaAuditErrors[keyof RunAdminMediaAuditErrors];
5276
+ export type RunAdminMediaAuditResponses = {
5056
5277
  /**
5057
- * OK
5278
+ * Audit run completed
5058
5279
  */
5059
- 200: {
5060
- run: ReviewCheckRun;
5061
- reports: Array<Report>;
5062
- };
5280
+ 200: RunAuditResponse;
5063
5281
  };
5064
- export type GetAdminReviewRunResponse = GetAdminReviewRunResponses[keyof GetAdminReviewRunResponses];
5065
- export type ListAdminReviewAllowlistData = {
5282
+ export type RunAdminMediaAuditResponse = RunAdminMediaAuditResponses[keyof RunAdminMediaAuditResponses];
5283
+ export type ListAdminMediaAuditRunsData = {
5066
5284
  body?: never;
5067
5285
  path?: never;
5068
5286
  query?: {
5069
5287
  /**
5070
- * Filter by check name
5071
- */
5072
- checkName?: string;
5073
- };
5074
- url: '/v1/admin/review/allowlist';
5075
- };
5076
- export type ListAdminReviewAllowlistErrors = {
5077
- /**
5078
- * Unauthorized
5079
- */
5080
- 401: Error401;
5081
- /**
5082
- * Forbidden
5083
- */
5084
- 403: Error403;
5085
- /**
5086
- * Too Many Requests
5087
- */
5088
- 429: Error429;
5089
- /**
5090
- * Internal Server Error
5091
- */
5092
- 500: Error500;
5093
- };
5094
- export type ListAdminReviewAllowlistError = ListAdminReviewAllowlistErrors[keyof ListAdminReviewAllowlistErrors];
5095
- export type ListAdminReviewAllowlistResponses = {
5096
- /**
5097
- * OK
5098
- */
5099
- 200: Array<ReviewAllowlist>;
5100
- };
5101
- export type ListAdminReviewAllowlistResponse = ListAdminReviewAllowlistResponses[keyof ListAdminReviewAllowlistResponses];
5102
- export type CreateAdminReviewAllowlistEntryData = {
5103
- body: {
5104
- /**
5105
- * Check name to allowlist for
5106
- */
5107
- checkName: string;
5108
- /**
5109
- * Media ID to allowlist
5288
+ * Filter by audit name
5110
5289
  */
5111
- mediaId: number;
5290
+ auditName?: string;
5112
5291
  /**
5113
- * Episode number (for episode-level checks)
5292
+ * Opaque pagination cursor token
5114
5293
  */
5115
- episodeNumber?: number;
5294
+ cursor?: string;
5116
5295
  /**
5117
- * Reason for allowlisting
5296
+ * Number of results per page
5118
5297
  */
5119
- reason?: string;
5298
+ take?: number;
5120
5299
  };
5121
- path?: never;
5122
- query?: never;
5123
- url: '/v1/admin/review/allowlist';
5300
+ url: '/v1/admin/media/audits/runs';
5124
5301
  };
5125
- export type CreateAdminReviewAllowlistEntryErrors = {
5126
- /**
5127
- * Bad Request
5128
- */
5129
- 400: Error400;
5302
+ export type ListAdminMediaAuditRunsErrors = {
5130
5303
  /**
5131
- * Unauthorized
5304
+ * Unauthorized (API key)
5132
5305
  */
5133
5306
  401: Error401;
5134
5307
  /**
5135
5308
  * Forbidden
5136
5309
  */
5137
5310
  403: Error403;
5138
- /**
5139
- * Conflict
5140
- */
5141
- 409: Error409;
5142
5311
  /**
5143
5312
  * Too Many Requests
5144
5313
  */
@@ -5148,28 +5317,31 @@ export type CreateAdminReviewAllowlistEntryErrors = {
5148
5317
  */
5149
5318
  500: Error500;
5150
5319
  };
5151
- export type CreateAdminReviewAllowlistEntryError = CreateAdminReviewAllowlistEntryErrors[keyof CreateAdminReviewAllowlistEntryErrors];
5152
- export type CreateAdminReviewAllowlistEntryResponses = {
5320
+ export type ListAdminMediaAuditRunsError = ListAdminMediaAuditRunsErrors[keyof ListAdminMediaAuditRunsErrors];
5321
+ export type ListAdminMediaAuditRunsResponses = {
5153
5322
  /**
5154
- * Added to allowlist
5323
+ * OK
5155
5324
  */
5156
- 201: ReviewAllowlist;
5325
+ 200: {
5326
+ runs: Array<MediaAuditRun>;
5327
+ pagination: OpaqueCursorPagination;
5328
+ };
5157
5329
  };
5158
- export type CreateAdminReviewAllowlistEntryResponse = CreateAdminReviewAllowlistEntryResponses[keyof CreateAdminReviewAllowlistEntryResponses];
5159
- export type DeleteAdminReviewAllowlistEntryData = {
5330
+ export type ListAdminMediaAuditRunsResponse = ListAdminMediaAuditRunsResponses[keyof ListAdminMediaAuditRunsResponses];
5331
+ export type GetAdminMediaAuditRunData = {
5160
5332
  body?: never;
5161
5333
  path: {
5162
5334
  /**
5163
- * Allowlist entry ID
5335
+ * Run ID
5164
5336
  */
5165
5337
  id: number;
5166
5338
  };
5167
5339
  query?: never;
5168
- url: '/v1/admin/review/allowlist/{id}';
5340
+ url: '/v1/admin/media/audits/runs/{id}';
5169
5341
  };
5170
- export type DeleteAdminReviewAllowlistEntryErrors = {
5342
+ export type GetAdminMediaAuditRunErrors = {
5171
5343
  /**
5172
- * Unauthorized
5344
+ * Unauthorized (API key)
5173
5345
  */
5174
5346
  401: Error401;
5175
5347
  /**
@@ -5189,12 +5361,15 @@ export type DeleteAdminReviewAllowlistEntryErrors = {
5189
5361
  */
5190
5362
  500: Error500;
5191
5363
  };
5192
- export type DeleteAdminReviewAllowlistEntryError = DeleteAdminReviewAllowlistEntryErrors[keyof DeleteAdminReviewAllowlistEntryErrors];
5193
- export type DeleteAdminReviewAllowlistEntryResponses = {
5364
+ export type GetAdminMediaAuditRunError = GetAdminMediaAuditRunErrors[keyof GetAdminMediaAuditRunErrors];
5365
+ export type GetAdminMediaAuditRunResponses = {
5194
5366
  /**
5195
- * Removed from allowlist
5367
+ * OK
5196
5368
  */
5197
- 204: void;
5369
+ 200: {
5370
+ run: MediaAuditRun;
5371
+ reports: Array<Report>;
5372
+ };
5198
5373
  };
5199
- export type DeleteAdminReviewAllowlistEntryResponse = DeleteAdminReviewAllowlistEntryResponses[keyof DeleteAdminReviewAllowlistEntryResponses];
5374
+ export type GetAdminMediaAuditRunResponse = GetAdminMediaAuditRunResponses[keyof GetAdminMediaAuditRunResponses];
5200
5375
  //# sourceMappingURL=types.gen.d.ts.map