@brigadasos/nadeshiko-sdk 1.4.3-dev.e5c01f0 → 1.5.0-dev.66d279f

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
@@ -872,6 +869,37 @@ export type Error409 = {
872
869
  export type MediaAutocompleteResponse = {
873
870
  media: Array<Media>;
874
871
  };
872
+ /**
873
+ * Segment with internal fields. For write operations (create, update) all fields are always populated.
874
+ * For GET, optional fields are only populated when requested via include[].
875
+ *
876
+ */
877
+ export type SegmentInternal = Segment & {
878
+ /**
879
+ * Storage backend for segment assets
880
+ */
881
+ storage?: 'LOCAL' | 'R2';
882
+ /**
883
+ * Hash identifier for the segment
884
+ */
885
+ hashedId?: string;
886
+ /**
887
+ * Base path in the storage backend
888
+ */
889
+ storageBasePath?: string;
890
+ /**
891
+ * Raw WD Tagger v3 classifier output used to derive content rating
892
+ */
893
+ ratingAnalysis?: {
894
+ [key: string]: unknown;
895
+ };
896
+ /**
897
+ * POS tokenization results keyed by engine (sudachi, unidic)
898
+ */
899
+ posAnalysis?: {
900
+ [key: string]: unknown;
901
+ };
902
+ };
875
903
  /**
876
904
  * Not Found error response
877
905
  */
@@ -908,118 +936,323 @@ export type Error404 = {
908
936
  };
909
937
  };
910
938
  /**
911
- * Request body for updating an existing media entry (all fields optional)
939
+ * All fields are optional for partial updates
912
940
  */
913
- export type MediaUpdateRequest = {
914
- externalIds?: ExternalId;
941
+ export type SegmentUpdateRequest = {
915
942
  /**
916
- * Original Japanese name of the media
943
+ * Position of the segment within the episode
917
944
  */
918
- nameJa?: string;
945
+ position?: number;
919
946
  /**
920
- * Romaji transliteration of the media name
947
+ * Segment status
921
948
  */
922
- nameRomaji?: string;
949
+ status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
923
950
  /**
924
- * English name of the media
951
+ * Start time of the segment in milliseconds from the beginning of the episode
925
952
  */
926
- nameEn?: string;
953
+ startTimeMs?: number;
927
954
  /**
928
- * Format of the media release (e.g., TV, OVA, Movie)
955
+ * End time of the segment in milliseconds from the beginning of the episode
929
956
  */
930
- airingFormat?: string;
957
+ endTimeMs?: number;
958
+ textJa?: {
959
+ /**
960
+ * Original Japanese content of the segment
961
+ */
962
+ content?: string;
963
+ };
964
+ textEs?: {
965
+ /**
966
+ * Spanish translation of the segment content
967
+ */
968
+ content?: string;
969
+ /**
970
+ * Whether the Spanish translation was machine-translated
971
+ */
972
+ isMachineTranslated?: boolean;
973
+ };
974
+ textEn?: {
975
+ /**
976
+ * English translation of the segment content
977
+ */
978
+ content?: string;
979
+ /**
980
+ * Whether the English translation was machine-translated
981
+ */
982
+ isMachineTranslated?: boolean;
983
+ };
984
+ contentRating?: ContentRating;
931
985
  /**
932
- * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
986
+ * Raw WD Tagger v3 classifier output used to derive content rating
933
987
  */
934
- airingStatus?: string;
988
+ ratingAnalysis?: {
989
+ [key: string]: unknown;
990
+ };
935
991
  /**
936
- * List of genres associated with the media
992
+ * POS tokenization results keyed by engine (sudachi, unidic)
937
993
  */
938
- genres?: Array<string>;
994
+ posAnalysis?: {
995
+ [key: string]: unknown;
996
+ };
939
997
  /**
940
- * Storage backend for media assets
998
+ * Storage backend for segment assets
941
999
  */
942
1000
  storage?: 'LOCAL' | 'R2';
943
1001
  /**
944
- * Start date of the media (first airing/release)
945
- */
946
- startDate?: string;
947
- /**
948
- * End date of the media (last airing/release)
1002
+ * Hash identifier for the segment (from segment JSON)
949
1003
  */
950
- endDate?: string;
1004
+ hashedId?: string;
1005
+ };
1006
+ export type SegmentContextResponse = {
1007
+ segments: Array<Segment>;
1008
+ includes: {
1009
+ /**
1010
+ * Media objects keyed by mediaId
1011
+ */
1012
+ media?: {
1013
+ [key: string]: Media;
1014
+ };
1015
+ };
1016
+ };
1017
+ /**
1018
+ * Ordered media series grouping
1019
+ */
1020
+ export type Series = {
951
1021
  /**
952
- * Media category
1022
+ * Series ID
953
1023
  */
954
- category?: 'ANIME' | 'JDRAMA';
1024
+ id: number;
955
1025
  /**
956
- * Version of the media-sub-splitter used
1026
+ * Japanese name of the series
957
1027
  */
958
- version?: string;
1028
+ nameJa: string;
959
1029
  /**
960
- * Hash salt used when generating the hash for the related media assets
1030
+ * Romaji name of the series
961
1031
  */
962
- hashSalt?: string;
1032
+ nameRomaji: string;
963
1033
  /**
964
- * Animation studio that produced the media
1034
+ * English name of the series
965
1035
  */
966
- studio?: string;
1036
+ nameEn: string;
1037
+ };
1038
+ export type SeriesListResponse = {
1039
+ series: Array<Series>;
1040
+ pagination: OpaqueCursorPagination;
1041
+ };
1042
+ /**
1043
+ * Series with ordered media entries
1044
+ */
1045
+ export type SeriesWithMedia = {
967
1046
  /**
968
- * Airing season label for the media
1047
+ * Series ID
969
1048
  */
970
- seasonName?: string;
1049
+ id: number;
971
1050
  /**
972
- * Airing year for the media
1051
+ * Japanese name of the series
973
1052
  */
974
- seasonYear?: number;
1053
+ nameJa: string;
975
1054
  /**
976
- * Base path for R2/CDN storage (e.g. "media/21459")
1055
+ * Romaji name of the series
977
1056
  */
978
- storageBasePath?: string;
1057
+ nameRomaji: string;
979
1058
  /**
980
- * List of characters appearing in the media with their voice actors
1059
+ * English name of the series
981
1060
  */
982
- characters?: Array<CharacterInput>;
1061
+ nameEn: string;
983
1062
  /**
984
- * Total number of subtitle segments available
1063
+ * All media in the series, sorted by position
985
1064
  */
986
- segmentCount?: number;
1065
+ media: Array<{
1066
+ /**
1067
+ * Position in the series (1-indexed)
1068
+ */
1069
+ position: number;
1070
+ media: Media;
1071
+ }>;
987
1072
  };
988
- export type Episode = {
1073
+ /**
1074
+ * Anime character
1075
+ */
1076
+ export type Character = {
989
1077
  /**
990
- * ID of the media this episode belongs to
1078
+ * Internal character ID
991
1079
  */
992
- mediaId: number;
1080
+ id: number;
1081
+ externalIds: ExternalId;
993
1082
  /**
994
- * Episode number within the media
1083
+ * Japanese name of the character
995
1084
  */
996
- episodeNumber: number;
1085
+ nameJa: string;
997
1086
  /**
998
- * English title of the episode
1087
+ * English name of the character
999
1088
  */
1000
- titleEn?: string;
1089
+ nameEn: string;
1001
1090
  /**
1002
- * Romanized title of the episode
1091
+ * Character image URL
1003
1092
  */
1004
- titleRomaji?: string;
1093
+ imageUrl: string;
1094
+ };
1095
+ /**
1096
+ * Character with voice actor and all media appearances
1097
+ */
1098
+ export type CharacterWithMedia = Character & {
1099
+ seiyuu: Seiyuu;
1005
1100
  /**
1006
- * Japanese title of the episode
1101
+ * All media this character appears in
1007
1102
  */
1008
- titleJa?: string;
1103
+ mediaAppearances: Array<{
1104
+ media: Media;
1105
+ /**
1106
+ * Character role in this media
1107
+ */
1108
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1109
+ }>;
1110
+ };
1111
+ /**
1112
+ * Seiyuu details with optional character appearances
1113
+ */
1114
+ export type SeiyuuWithRoles = {
1009
1115
  /**
1010
- * Episode description or synopsis
1116
+ * AniList staff ID
1011
1117
  */
1012
- description?: string;
1118
+ id: number;
1119
+ externalIds: ExternalId;
1013
1120
  /**
1014
- * When the episode originally aired
1121
+ * Japanese name of the voice actor
1015
1122
  */
1016
- airedAt?: string;
1123
+ nameJa: string;
1017
1124
  /**
1018
- * Episode duration in seconds
1125
+ * English name of the voice actor
1019
1126
  */
1020
- lengthSeconds?: number;
1127
+ nameEn: string;
1021
1128
  /**
1022
- * URL to episode thumbnail image
1129
+ * Profile image URL
1130
+ */
1131
+ imageUrl: string;
1132
+ /**
1133
+ * Characters voiced by this seiyuu with their media appearances
1134
+ */
1135
+ characters: Array<Character & {
1136
+ media: Media;
1137
+ /**
1138
+ * Character role in this media
1139
+ */
1140
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1141
+ }>;
1142
+ };
1143
+ /**
1144
+ * Request body for updating an existing media entry (all fields optional)
1145
+ */
1146
+ export type MediaUpdateRequest = {
1147
+ externalIds?: ExternalId;
1148
+ /**
1149
+ * Original Japanese name of the media
1150
+ */
1151
+ nameJa?: string;
1152
+ /**
1153
+ * Romaji transliteration of the media name
1154
+ */
1155
+ nameRomaji?: string;
1156
+ /**
1157
+ * English name of the media
1158
+ */
1159
+ nameEn?: string;
1160
+ /**
1161
+ * Format of the media release (e.g., TV, OVA, Movie)
1162
+ */
1163
+ airingFormat?: string;
1164
+ /**
1165
+ * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
1166
+ */
1167
+ airingStatus?: string;
1168
+ /**
1169
+ * List of genres associated with the media
1170
+ */
1171
+ genres?: Array<string>;
1172
+ /**
1173
+ * Storage backend for media assets
1174
+ */
1175
+ storage?: 'LOCAL' | 'R2';
1176
+ /**
1177
+ * Start date of the media (first airing/release)
1178
+ */
1179
+ startDate?: string;
1180
+ /**
1181
+ * End date of the media (last airing/release)
1182
+ */
1183
+ endDate?: string;
1184
+ /**
1185
+ * Media category
1186
+ */
1187
+ category?: 'ANIME' | 'JDRAMA';
1188
+ /**
1189
+ * Version of the media-sub-splitter used
1190
+ */
1191
+ version?: string;
1192
+ /**
1193
+ * Hash salt used when generating the hash for the related media assets
1194
+ */
1195
+ hashSalt?: string;
1196
+ /**
1197
+ * Animation studio that produced the media
1198
+ */
1199
+ studio?: string;
1200
+ /**
1201
+ * Airing season label for the media
1202
+ */
1203
+ seasonName?: string;
1204
+ /**
1205
+ * Airing year for the media
1206
+ */
1207
+ seasonYear?: number;
1208
+ /**
1209
+ * Base path for R2/CDN storage (e.g. "media/21459")
1210
+ */
1211
+ storageBasePath?: string;
1212
+ /**
1213
+ * List of characters appearing in the media with their voice actors
1214
+ */
1215
+ characters?: Array<CharacterInput>;
1216
+ /**
1217
+ * Total number of subtitle segments available
1218
+ */
1219
+ segmentCount?: number;
1220
+ };
1221
+ export type Episode = {
1222
+ /**
1223
+ * ID of the media this episode belongs to
1224
+ */
1225
+ mediaId: number;
1226
+ /**
1227
+ * Episode number within the media
1228
+ */
1229
+ episodeNumber: number;
1230
+ /**
1231
+ * English title of the episode
1232
+ */
1233
+ titleEn?: string;
1234
+ /**
1235
+ * Romanized title of the episode
1236
+ */
1237
+ titleRomaji?: string;
1238
+ /**
1239
+ * Japanese title of the episode
1240
+ */
1241
+ titleJa?: string;
1242
+ /**
1243
+ * Episode description or synopsis
1244
+ */
1245
+ description?: string;
1246
+ /**
1247
+ * When the episode originally aired
1248
+ */
1249
+ airedAt?: string;
1250
+ /**
1251
+ * Episode duration in seconds
1252
+ */
1253
+ lengthSeconds?: number;
1254
+ /**
1255
+ * URL to episode thumbnail image
1023
1256
  */
1024
1257
  thumbnailUrl?: string;
1025
1258
  /**
@@ -1032,7 +1265,7 @@ export type EpisodeListResponse = {
1032
1265
  * Array of episode objects
1033
1266
  */
1034
1267
  episodes: Array<Episode>;
1035
- pagination: CursorPagination;
1268
+ pagination: OpaqueCursorPagination;
1036
1269
  };
1037
1270
  export type EpisodeCreateRequest = {
1038
1271
  /**
@@ -1164,239 +1397,10 @@ export type SegmentCreateRequest = {
1164
1397
  /**
1165
1398
  * Hash identifier for the segment (from segment JSON)
1166
1399
  */
1167
- hashedId: string;
1168
- };
1169
- /**
1170
- * Segment with internal fields (for internal API responses)
1171
- */
1172
- export type SegmentInternal = Segment & {
1173
- /**
1174
- * Storage backend for segment assets
1175
- */
1176
- storage?: 'LOCAL' | 'R2';
1177
- /**
1178
- * Hash identifier for the segment
1179
- */
1180
- hashedId?: string;
1181
- /**
1182
- * Base path in the storage backend
1183
- */
1184
- storageBasePath?: string;
1185
- /**
1186
- * Raw WD Tagger v3 classifier output used to derive content rating
1187
- */
1188
- ratingAnalysis?: {
1189
- [key: string]: unknown;
1190
- };
1191
- /**
1192
- * POS tokenization results keyed by engine (sudachi, unidic)
1193
- */
1194
- posAnalysis?: {
1195
- [key: string]: unknown;
1196
- };
1197
- };
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
- export type SegmentContextResponse = {
1267
- segments: Array<Segment>;
1268
- includes?: {
1269
- /**
1270
- * Media objects keyed by mediaId
1271
- */
1272
- media?: {
1273
- [key: string]: Media;
1274
- };
1275
- };
1276
- };
1277
- /**
1278
- * Ordered media series grouping
1279
- */
1280
- export type Series = {
1281
- /**
1282
- * Series ID
1283
- */
1284
- id: number;
1285
- /**
1286
- * Japanese name of the series
1287
- */
1288
- nameJa: string;
1289
- /**
1290
- * Romaji name of the series
1291
- */
1292
- nameRomaji: string;
1293
- /**
1294
- * English name of the series
1295
- */
1296
- nameEn: string;
1297
- };
1298
- export type SeriesListResponse = {
1299
- series: Array<Series>;
1300
- pagination: CursorPagination;
1301
- };
1302
- /**
1303
- * Series with ordered media entries
1304
- */
1305
- export type SeriesWithMedia = {
1306
- /**
1307
- * Series ID
1308
- */
1309
- id: number;
1310
- /**
1311
- * Japanese name of the series
1312
- */
1313
- nameJa: string;
1314
- /**
1315
- * Romaji name of the series
1316
- */
1317
- nameRomaji: string;
1318
- /**
1319
- * English name of the series
1320
- */
1321
- nameEn: string;
1322
- /**
1323
- * All media in the series, sorted by position
1324
- */
1325
- media: Array<{
1326
- /**
1327
- * Position in the series (1-indexed)
1328
- */
1329
- position?: number;
1330
- media?: Media;
1331
- }>;
1332
- };
1333
- /**
1334
- * Anime character
1335
- */
1336
- export type Character = {
1337
- /**
1338
- * AniList character ID
1339
- */
1340
- id: number;
1341
- /**
1342
- * Japanese name of the character
1343
- */
1344
- nameJa: string;
1345
- /**
1346
- * English name of the character
1347
- */
1348
- nameEn: string;
1349
- /**
1350
- * Character image URL
1351
- */
1352
- imageUrl: string;
1353
- };
1354
- /**
1355
- * Character with voice actor and all media appearances
1356
- */
1357
- export type CharacterWithMedia = Character & {
1358
- seiyuu: Seiyuu;
1359
- /**
1360
- * All media this character appears in
1361
- */
1362
- mediaAppearances: Array<{
1363
- media?: Media;
1364
- /**
1365
- * Character role in this media
1366
- */
1367
- role?: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1368
- }>;
1369
- };
1370
- /**
1371
- * Seiyuu details with optional character appearances
1372
- */
1373
- export type SeiyuuWithRoles = {
1374
- /**
1375
- * AniList staff ID
1376
- */
1377
- id: number;
1378
- /**
1379
- * Japanese name of the voice actor
1380
- */
1381
- nameJa: string;
1382
- /**
1383
- * English name of the voice actor
1384
- */
1385
- nameEn: string;
1386
- /**
1387
- * Profile image URL
1388
- */
1389
- imageUrl: string;
1390
- /**
1391
- * Characters voiced by this seiyuu with their media appearances
1392
- */
1393
- characters: Array<Character & {
1394
- media: Media;
1395
- /**
1396
- * Character role in this media
1397
- */
1398
- role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1399
- }>;
1400
+ hashedId: string;
1401
+ };
1402
+ export type SegmentBatchCreateRequest = {
1403
+ segments: Array<SegmentCreateRequest>;
1400
1404
  };
1401
1405
  export type UserQuotaResponse = {
1402
1406
  /**
@@ -1434,37 +1438,53 @@ export type ReportTargetMedia = {
1434
1438
  */
1435
1439
  mediaId: number;
1436
1440
  };
1437
- export type ReportTargetEpisode = {
1441
+ export type ReportTargetSegment = {
1438
1442
  /**
1439
1443
  * Report target type
1440
1444
  */
1441
- type: 'EPISODE';
1445
+ type: 'SEGMENT';
1442
1446
  /**
1443
1447
  * Media ID this report targets
1444
1448
  */
1445
1449
  mediaId: number;
1446
1450
  /**
1447
- * Episode number this report targets
1451
+ * Episode number containing the segment
1448
1452
  */
1449
- episodeNumber: number;
1453
+ episodeNumber?: number;
1454
+ /**
1455
+ * Segment UUID this report targets
1456
+ */
1457
+ segmentUuid: string;
1450
1458
  };
1451
- export type ReportTargetSegment = {
1459
+ export type UserReportTarget = ({
1460
+ type: 'MEDIA';
1461
+ } & ReportTargetMedia) | ({
1462
+ type: 'SEGMENT';
1463
+ } & ReportTargetSegment);
1464
+ export type CreateReportRequest = {
1465
+ target: UserReportTarget;
1466
+ /**
1467
+ * Reason for the report
1468
+ */
1469
+ reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1470
+ /**
1471
+ * Optional description with additional details
1472
+ */
1473
+ description?: string;
1474
+ };
1475
+ export type ReportTargetEpisode = {
1452
1476
  /**
1453
1477
  * Report target type
1454
1478
  */
1455
- type: 'SEGMENT';
1479
+ type: 'EPISODE';
1456
1480
  /**
1457
1481
  * Media ID this report targets
1458
1482
  */
1459
1483
  mediaId: number;
1460
1484
  /**
1461
- * Episode number containing the segment
1462
- */
1463
- episodeNumber?: number;
1464
- /**
1465
- * Segment UUID this report targets
1485
+ * Episode number this report targets
1466
1486
  */
1467
- segmentUuid: string;
1487
+ episodeNumber: number;
1468
1488
  };
1469
1489
  export type ReportTarget = ({
1470
1490
  type: 'MEDIA';
@@ -1484,9 +1504,9 @@ export type Report = {
1484
1504
  source: 'USER' | 'AUTO';
1485
1505
  target: ReportTarget;
1486
1506
  /**
1487
- * ID of the auto-check run that created this report (AUTO only)
1507
+ * ID of the audit run that created this report (AUTO only)
1488
1508
  */
1489
- reviewCheckRunId?: number;
1509
+ auditRunId: number;
1490
1510
  /**
1491
1511
  * Reason for the report
1492
1512
  */
@@ -1494,11 +1514,11 @@ export type Report = {
1494
1514
  /**
1495
1515
  * Optional description with additional details
1496
1516
  */
1497
- description?: string;
1517
+ description: string;
1498
1518
  /**
1499
1519
  * Check-specific metrics (AUTO reports) or null (USER reports)
1500
1520
  */
1501
- data?: {
1521
+ data: {
1502
1522
  [key: string]: unknown;
1503
1523
  };
1504
1524
  /**
@@ -1508,11 +1528,11 @@ export type Report = {
1508
1528
  /**
1509
1529
  * Notes from the admin who reviewed the report
1510
1530
  */
1511
- adminNotes?: string;
1531
+ adminNotes: string;
1512
1532
  /**
1513
1533
  * ID of the user who submitted the report (USER reports only)
1514
1534
  */
1515
- userId?: number;
1535
+ userId: number;
1516
1536
  /**
1517
1537
  * When the report was created
1518
1538
  */
@@ -1520,35 +1540,9 @@ export type Report = {
1520
1540
  /**
1521
1541
  * When the report was last updated
1522
1542
  */
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;
1543
+ updatedAt: string;
1544
1544
  };
1545
1545
  export type UserPreferences = {
1546
- /**
1547
- * Lab feature opt-in flags keyed by feature key
1548
- */
1549
- labs?: {
1550
- [key: string]: boolean;
1551
- };
1552
1546
  /**
1553
1547
  * Preferred language for media names display
1554
1548
  */
@@ -1595,17 +1589,27 @@ export type UserPreferences = {
1595
1589
  /**
1596
1590
  * Type of user activity
1597
1591
  */
1598
- export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'LIST_ADD_SEGMENT';
1592
+ export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'LIST_ADD_SEGMENT' | 'SHARE';
1599
1593
  export type UserActivity = {
1600
1594
  id: number;
1601
1595
  activityType: ActivityType;
1602
- segmentUuid?: string;
1603
- mediaId?: number;
1604
- searchQuery?: string;
1605
- animeName?: string;
1606
- japaneseText?: string;
1596
+ segmentUuid: string;
1597
+ mediaId: number;
1598
+ searchQuery: string;
1599
+ mediaName: string;
1600
+ japaneseText: string;
1607
1601
  createdAt: string;
1608
1602
  };
1603
+ /**
1604
+ * Activity counts for a single day, broken down by type. Only types with at least 1 event are present.
1605
+ */
1606
+ export type HeatmapDayCounts = {
1607
+ SEARCH?: number;
1608
+ SEGMENT_PLAY?: number;
1609
+ ANKI_EXPORT?: number;
1610
+ LIST_ADD_SEGMENT?: number;
1611
+ SHARE?: number;
1612
+ };
1609
1613
  /**
1610
1614
  * User segment collection
1611
1615
  */
@@ -1618,10 +1622,6 @@ export type Collection = {
1618
1622
  * Name of the collection
1619
1623
  */
1620
1624
  name: string;
1621
- /**
1622
- * User ID who owns the collection
1623
- */
1624
- userId: number;
1625
1625
  /**
1626
1626
  * Visibility of the collection
1627
1627
  */
@@ -1629,15 +1629,15 @@ export type Collection = {
1629
1629
  /**
1630
1630
  * Number of segments in the collection
1631
1631
  */
1632
- segmentCount?: number;
1632
+ segmentCount: number;
1633
1633
  /**
1634
1634
  * When the collection was created
1635
1635
  */
1636
- createdAt?: string;
1636
+ createdAt: string;
1637
1637
  /**
1638
1638
  * When the collection was last updated
1639
1639
  */
1640
- updatedAt?: string;
1640
+ updatedAt: string;
1641
1641
  };
1642
1642
  export type UserExportCollection = Collection & {
1643
1643
  /**
@@ -1662,32 +1662,32 @@ export type UserExportResponse = {
1662
1662
  };
1663
1663
  export type UserLabFeature = {
1664
1664
  /**
1665
- * Unique identifier for the lab feature
1665
+ * Unique identifier for the feature
1666
1666
  */
1667
1667
  key: string;
1668
1668
  /**
1669
- * Human-readable feature name
1669
+ * Human-readable feature name (only present for labs)
1670
1670
  */
1671
- name: string;
1671
+ name?: string;
1672
1672
  /**
1673
- * Description of what the feature does
1673
+ * Description of what the feature does (only present for labs)
1674
1674
  */
1675
- description: string;
1675
+ description?: string;
1676
1676
  /**
1677
- * Whether the feature is globally available
1677
+ * Whether this feature is currently active for the user
1678
1678
  */
1679
- enabled: boolean;
1679
+ active: boolean;
1680
1680
  /**
1681
- * Whether the user has opted in to this feature
1681
+ * Whether the user can toggle this feature (lab=true, flag=false)
1682
1682
  */
1683
- userEnabled: boolean;
1683
+ userControllable: boolean;
1684
1684
  };
1685
1685
  /**
1686
1686
  * Paginated collection list response
1687
1687
  */
1688
1688
  export type CollectionListResponse = {
1689
1689
  collections: Array<Collection>;
1690
- pagination: CursorPagination;
1690
+ pagination: OpaqueCursorPagination;
1691
1691
  };
1692
1692
  /**
1693
1693
  * Request body for creating a new collection
@@ -1714,14 +1714,22 @@ export type CollectionWithSegments = {
1714
1714
  * Name of the collection
1715
1715
  */
1716
1716
  name: string;
1717
- /**
1718
- * User ID who owns the collection
1719
- */
1720
- userId: number;
1721
1717
  /**
1722
1718
  * Visibility of the collection
1723
1719
  */
1724
1720
  visibility: 'PUBLIC' | 'PRIVATE';
1721
+ /**
1722
+ * Number of segments in the collection
1723
+ */
1724
+ segmentCount: number;
1725
+ /**
1726
+ * When the collection was created
1727
+ */
1728
+ createdAt: string;
1729
+ /**
1730
+ * When the collection was last updated
1731
+ */
1732
+ updatedAt: string;
1725
1733
  /**
1726
1734
  * Saved segments with their search result data
1727
1735
  */
@@ -1729,18 +1737,18 @@ export type CollectionWithSegments = {
1729
1737
  /**
1730
1738
  * Position in the collection
1731
1739
  */
1732
- position?: number;
1740
+ position: number;
1733
1741
  /**
1734
1742
  * User annotation
1735
1743
  */
1736
- note?: string;
1737
- result?: Segment;
1744
+ note: string;
1745
+ result: Segment;
1738
1746
  }>;
1739
- includes?: {
1747
+ includes: {
1740
1748
  /**
1741
1749
  * Media objects keyed by mediaId
1742
1750
  */
1743
- media?: {
1751
+ media: {
1744
1752
  [key: string]: Media;
1745
1753
  };
1746
1754
  };
@@ -1748,7 +1756,7 @@ export type CollectionWithSegments = {
1748
1756
  * Total number of segments in the collection
1749
1757
  */
1750
1758
  totalCount: number;
1751
- pagination: CursorPagination;
1759
+ pagination: OpaqueCursorPagination;
1752
1760
  };
1753
1761
  /**
1754
1762
  * Request to reindex segments from the database into Elasticsearch
@@ -1778,44 +1786,44 @@ export type ReindexResponse = {
1778
1786
  /**
1779
1787
  * Whether the reindex operation completed successfully
1780
1788
  */
1781
- success?: boolean;
1789
+ success: boolean;
1782
1790
  /**
1783
1791
  * Human-readable message about the reindex operation
1784
1792
  */
1785
- message?: string;
1793
+ message: string;
1786
1794
  /**
1787
1795
  * Statistics about the reindex operation
1788
1796
  */
1789
- stats?: {
1797
+ stats: {
1790
1798
  /**
1791
1799
  * Total number of segments processed
1792
1800
  */
1793
- totalSegments?: number;
1801
+ totalSegments: number;
1794
1802
  /**
1795
1803
  * Number of segments successfully indexed
1796
1804
  */
1797
- successfulIndexes?: number;
1805
+ successfulIndexes: number;
1798
1806
  /**
1799
1807
  * Number of segments that failed to index
1800
1808
  */
1801
- failedIndexes?: number;
1809
+ failedIndexes: number;
1802
1810
  /**
1803
1811
  * Number of media items processed
1804
1812
  */
1805
- mediaProcessed?: number;
1813
+ mediaProcessed: number;
1806
1814
  };
1807
1815
  /**
1808
1816
  * Array of errors that occurred during reindexing (if any)
1809
1817
  */
1810
- errors?: Array<{
1818
+ errors: Array<{
1811
1819
  /**
1812
1820
  * ID of the segment that failed
1813
1821
  */
1814
- segmentId?: number;
1822
+ segmentId: number;
1815
1823
  /**
1816
1824
  * Error message
1817
1825
  */
1818
- error?: string;
1826
+ error: string;
1819
1827
  }>;
1820
1828
  };
1821
1829
  export type AdminReport = Report & {
@@ -1830,7 +1838,7 @@ export type AdminReport = Report & {
1830
1838
  };
1831
1839
  export type AdminReportListResponse = {
1832
1840
  reports: Array<AdminReport>;
1833
- pagination: CursorPagination;
1841
+ pagination: OpaqueCursorPagination;
1834
1842
  };
1835
1843
  export type UpdateReportRequest = {
1836
1844
  /**
@@ -1842,41 +1850,13 @@ export type UpdateReportRequest = {
1842
1850
  */
1843
1851
  adminNotes?: string;
1844
1852
  };
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 = {
1853
+ export type MediaAudit = {
1874
1854
  /**
1875
- * Check ID
1855
+ * Audit ID
1876
1856
  */
1877
1857
  id: number;
1878
1858
  /**
1879
- * Unique check identifier
1859
+ * Unique audit identifier
1880
1860
  */
1881
1861
  name: string;
1882
1862
  /**
@@ -1884,11 +1864,11 @@ export type ReviewCheck = {
1884
1864
  */
1885
1865
  label: string;
1886
1866
  /**
1887
- * What this check does
1867
+ * What this audit does
1888
1868
  */
1889
1869
  description: string;
1890
1870
  /**
1891
- * What level this check operates on
1871
+ * What level this audit operates on
1892
1872
  */
1893
1873
  targetType: 'MEDIA' | 'EPISODE';
1894
1874
  /**
@@ -1898,40 +1878,68 @@ export type ReviewCheck = {
1898
1878
  [key: string]: unknown;
1899
1879
  };
1900
1880
  /**
1901
- * Whether this check is active
1881
+ * Whether this audit is active
1902
1882
  */
1903
1883
  enabled: boolean;
1904
1884
  /**
1905
1885
  * Schema for threshold fields (from registry)
1906
1886
  */
1907
- thresholdSchema?: Array<{
1908
- key?: string;
1909
- label?: string;
1910
- type?: 'number' | 'boolean';
1911
- default?: number | boolean;
1887
+ thresholdSchema: Array<{
1888
+ key: string;
1889
+ label: string;
1890
+ type: 'number' | 'boolean';
1891
+ default: number | boolean;
1912
1892
  min?: number;
1913
1893
  max?: number;
1914
1894
  }>;
1915
1895
  /**
1916
- * Latest run info for this check
1896
+ * Latest run info for this audit
1917
1897
  */
1918
- latestRun?: {
1919
- id?: number;
1920
- resultCount?: number;
1921
- createdAt?: string;
1898
+ latestRun: {
1899
+ id: number;
1900
+ resultCount: number;
1901
+ createdAt: string;
1922
1902
  };
1923
- createdAt?: string;
1924
- updatedAt?: string;
1903
+ createdAt: string;
1904
+ updatedAt: string;
1905
+ };
1906
+ export type RunAuditResponse = {
1907
+ /**
1908
+ * Category filter used
1909
+ */
1910
+ category: string;
1911
+ checksRun: Array<{
1912
+ /**
1913
+ * Audit identifier
1914
+ */
1915
+ auditName: string;
1916
+ /**
1917
+ * Human-readable audit name
1918
+ */
1919
+ label: string;
1920
+ /**
1921
+ * Number of reports created
1922
+ */
1923
+ resultCount: number;
1924
+ /**
1925
+ * ID of the created run record
1926
+ */
1927
+ runId: number;
1928
+ }>;
1929
+ /**
1930
+ * Total reports created across all audits
1931
+ */
1932
+ totalReports: number;
1925
1933
  };
1926
- export type ReviewCheckRun = {
1934
+ export type MediaAuditRun = {
1927
1935
  /**
1928
1936
  * Run ID
1929
1937
  */
1930
1938
  id: number;
1931
1939
  /**
1932
- * Name of the check that was run
1940
+ * Name of the audit that was run
1933
1941
  */
1934
- checkName: string;
1942
+ auditName: string;
1935
1943
  /**
1936
1944
  * Category filter used (ANIME/JDRAMA) or null for all
1937
1945
  */
@@ -1951,32 +1959,6 @@ export type ReviewCheckRun = {
1951
1959
  */
1952
1960
  createdAt: string;
1953
1961
  };
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
1962
  export type SearchData = {
1981
1963
  body?: SearchRequest;
1982
1964
  path?: never;
@@ -1989,7 +1971,7 @@ export type SearchErrors = {
1989
1971
  */
1990
1972
  400: Error400;
1991
1973
  /**
1992
- * Unauthorized
1974
+ * Unauthorized (API key)
1993
1975
  */
1994
1976
  401: Error401;
1995
1977
  /**
@@ -2025,7 +2007,7 @@ export type GetSearchStatsErrors = {
2025
2007
  */
2026
2008
  400: Error400;
2027
2009
  /**
2028
- * Unauthorized
2010
+ * Unauthorized (API key)
2029
2011
  */
2030
2012
  401: Error401;
2031
2013
  /**
@@ -2061,7 +2043,7 @@ export type SearchWordsErrors = {
2061
2043
  */
2062
2044
  400: Error400;
2063
2045
  /**
2064
- * Unauthorized
2046
+ * Unauthorized (API key)
2065
2047
  */
2066
2048
  401: Error401;
2067
2049
  /**
@@ -2092,11 +2074,11 @@ export type ListMediaData = {
2092
2074
  /**
2093
2075
  * Number of results per page
2094
2076
  */
2095
- limit?: number;
2077
+ take?: number;
2096
2078
  /**
2097
- * Pagination cursor offset
2079
+ * Opaque pagination cursor token
2098
2080
  */
2099
- cursor?: number;
2081
+ cursor?: string;
2100
2082
  /**
2101
2083
  * Filter by media category
2102
2084
  */
@@ -2106,7 +2088,7 @@ export type ListMediaData = {
2106
2088
  */
2107
2089
  query?: string;
2108
2090
  /**
2109
- * Resources to expand in the media response (`media.characters` implies `media`)
2091
+ * Resources to expand in the media response
2110
2092
  */
2111
2093
  include?: Array<MediaIncludeExpansion>;
2112
2094
  };
@@ -2118,7 +2100,7 @@ export type ListMediaErrors = {
2118
2100
  */
2119
2101
  400: Error400;
2120
2102
  /**
2121
- * Unauthorized
2103
+ * Unauthorized (API key)
2122
2104
  */
2123
2105
  401: Error401;
2124
2106
  /**
@@ -2154,7 +2136,7 @@ export type CreateMediaErrors = {
2154
2136
  */
2155
2137
  400: Error400;
2156
2138
  /**
2157
- * Unauthorized
2139
+ * Unauthorized (API key)
2158
2140
  */
2159
2141
  401: Error401;
2160
2142
  /**
@@ -2193,7 +2175,7 @@ export type AutocompleteMediaData = {
2193
2175
  /**
2194
2176
  * Maximum number of results to return
2195
2177
  */
2196
- limit?: number;
2178
+ take?: number;
2197
2179
  /**
2198
2180
  * Filter by media category
2199
2181
  */
@@ -2207,7 +2189,7 @@ export type AutocompleteMediaErrors = {
2207
2189
  */
2208
2190
  400: Error400;
2209
2191
  /**
2210
- * Unauthorized
2192
+ * Unauthorized (API key)
2211
2193
  */
2212
2194
  401: Error401;
2213
2195
  /**
@@ -2231,24 +2213,128 @@ export type AutocompleteMediaResponses = {
2231
2213
  200: MediaAutocompleteResponse;
2232
2214
  };
2233
2215
  export type AutocompleteMediaResponse = AutocompleteMediaResponses[keyof AutocompleteMediaResponses];
2234
- export type DeleteMediaData = {
2216
+ export type GetSegmentByUuidData = {
2217
+ body?: never;
2218
+ path: {
2219
+ /**
2220
+ * Segment UUID
2221
+ */
2222
+ uuid: string;
2223
+ };
2224
+ query?: {
2225
+ /**
2226
+ * Additional internal fields to include in the response
2227
+ */
2228
+ include?: Array<'ratingAnalysis' | 'posAnalysis' | 'hashedId' | 'storageBasePath' | 'storage'>;
2229
+ };
2230
+ url: '/v1/media/segments/{uuid}';
2231
+ };
2232
+ export type GetSegmentByUuidErrors = {
2233
+ /**
2234
+ * Bad Request
2235
+ */
2236
+ 400: Error400;
2237
+ /**
2238
+ * Unauthorized (API key or session)
2239
+ */
2240
+ 401: Error401;
2241
+ /**
2242
+ * Forbidden
2243
+ */
2244
+ 403: Error403;
2245
+ /**
2246
+ * Not Found
2247
+ */
2248
+ 404: Error404;
2249
+ /**
2250
+ * Too Many Requests
2251
+ */
2252
+ 429: Error429;
2253
+ /**
2254
+ * Internal Server Error
2255
+ */
2256
+ 500: Error500;
2257
+ };
2258
+ export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2259
+ export type GetSegmentByUuidResponses = {
2260
+ /**
2261
+ * Single segment response with internal fields
2262
+ */
2263
+ 200: SegmentInternal;
2264
+ };
2265
+ export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2266
+ export type UpdateSegmentByUuidData = {
2267
+ body: SegmentUpdateRequest;
2268
+ path: {
2269
+ /**
2270
+ * Segment UUID
2271
+ */
2272
+ uuid: string;
2273
+ };
2274
+ query?: never;
2275
+ url: '/v1/media/segments/{uuid}';
2276
+ };
2277
+ export type UpdateSegmentByUuidErrors = {
2278
+ /**
2279
+ * Bad Request
2280
+ */
2281
+ 400: Error400;
2282
+ /**
2283
+ * Unauthorized (API key or session)
2284
+ */
2285
+ 401: Error401;
2286
+ /**
2287
+ * Forbidden
2288
+ */
2289
+ 403: Error403;
2290
+ /**
2291
+ * Not Found
2292
+ */
2293
+ 404: Error404;
2294
+ /**
2295
+ * Too Many Requests
2296
+ */
2297
+ 429: Error429;
2298
+ /**
2299
+ * Internal Server Error
2300
+ */
2301
+ 500: Error500;
2302
+ };
2303
+ export type UpdateSegmentByUuidError = UpdateSegmentByUuidErrors[keyof UpdateSegmentByUuidErrors];
2304
+ export type UpdateSegmentByUuidResponses = {
2305
+ /**
2306
+ * Single segment response with internal fields
2307
+ */
2308
+ 200: SegmentInternal;
2309
+ };
2310
+ export type UpdateSegmentByUuidResponse = UpdateSegmentByUuidResponses[keyof UpdateSegmentByUuidResponses];
2311
+ export type GetSegmentContextData = {
2235
2312
  body?: never;
2236
2313
  path: {
2237
2314
  /**
2238
- * Media ID
2315
+ * Segment UUID
2239
2316
  */
2240
- id: number;
2317
+ uuid: string;
2241
2318
  };
2242
- query?: never;
2243
- url: '/v1/media/{id}';
2319
+ query?: {
2320
+ /**
2321
+ * Number of segments to return before and after the target
2322
+ */
2323
+ take?: number;
2324
+ /**
2325
+ * Content ratings to include (omit for all ratings)
2326
+ */
2327
+ contentRating?: Array<ContentRating>;
2328
+ };
2329
+ url: '/v1/media/segments/{uuid}/context';
2244
2330
  };
2245
- export type DeleteMediaErrors = {
2331
+ export type GetSegmentContextErrors = {
2246
2332
  /**
2247
2333
  * Bad Request
2248
2334
  */
2249
2335
  400: Error400;
2250
2336
  /**
2251
- * Unauthorized
2337
+ * Unauthorized (API key or session)
2252
2338
  */
2253
2339
  401: Error401;
2254
2340
  /**
@@ -2268,47 +2354,46 @@ export type DeleteMediaErrors = {
2268
2354
  */
2269
2355
  500: Error500;
2270
2356
  };
2271
- export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2272
- export type DeleteMediaResponses = {
2357
+ export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2358
+ export type GetSegmentContextResponses = {
2273
2359
  /**
2274
- * No Content
2360
+ * OK
2275
2361
  */
2276
- 204: void;
2362
+ 200: SegmentContextResponse;
2277
2363
  };
2278
- export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2279
- export type GetMediaData = {
2364
+ export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2365
+ export type ListSeriesData = {
2280
2366
  body?: never;
2281
- path: {
2367
+ path?: never;
2368
+ query?: {
2282
2369
  /**
2283
- * Media ID
2370
+ * Number of results per page
2284
2371
  */
2285
- id: number;
2286
- };
2287
- query?: {
2372
+ take?: number;
2288
2373
  /**
2289
- * Resources to expand in the media response (`media.characters` implies `media`)
2374
+ * Opaque pagination cursor token
2290
2375
  */
2291
- include?: Array<MediaIncludeExpansion>;
2376
+ cursor?: string;
2377
+ /**
2378
+ * Case-insensitive search across English, Japanese, and Romaji names
2379
+ */
2380
+ query?: string;
2292
2381
  };
2293
- url: '/v1/media/{id}';
2382
+ url: '/v1/media/series';
2294
2383
  };
2295
- export type GetMediaErrors = {
2384
+ export type ListSeriesErrors = {
2296
2385
  /**
2297
2386
  * Bad Request
2298
2387
  */
2299
2388
  400: Error400;
2300
2389
  /**
2301
- * Unauthorized
2390
+ * Unauthorized (API key)
2302
2391
  */
2303
2392
  401: Error401;
2304
2393
  /**
2305
2394
  * Forbidden
2306
2395
  */
2307
2396
  403: Error403;
2308
- /**
2309
- * Not Found
2310
- */
2311
- 404: Error404;
2312
2397
  /**
2313
2398
  * Too Many Requests
2314
2399
  */
@@ -2318,42 +2403,46 @@ export type GetMediaErrors = {
2318
2403
  */
2319
2404
  500: Error500;
2320
2405
  };
2321
- export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2322
- export type GetMediaResponses = {
2406
+ export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
2407
+ export type ListSeriesResponses = {
2323
2408
  /**
2324
2409
  * OK
2325
2410
  */
2326
- 200: Media;
2411
+ 200: SeriesListResponse;
2327
2412
  };
2328
- export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2329
- export type UpdateMediaData = {
2330
- body: MediaUpdateRequest;
2331
- path: {
2413
+ export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
2414
+ export type CreateSeriesData = {
2415
+ body: {
2332
2416
  /**
2333
- * Media ID
2417
+ * Japanese name of the series
2334
2418
  */
2335
- id: number;
2419
+ nameJa: string;
2420
+ /**
2421
+ * Romaji name of the series
2422
+ */
2423
+ nameRomaji: string;
2424
+ /**
2425
+ * English name of the series
2426
+ */
2427
+ nameEn: string;
2336
2428
  };
2429
+ path?: never;
2337
2430
  query?: never;
2338
- url: '/v1/media/{id}';
2431
+ url: '/v1/media/series';
2339
2432
  };
2340
- export type UpdateMediaErrors = {
2433
+ export type CreateSeriesErrors = {
2341
2434
  /**
2342
2435
  * Bad Request
2343
2436
  */
2344
2437
  400: Error400;
2345
2438
  /**
2346
- * Unauthorized
2439
+ * Unauthorized (API key)
2347
2440
  */
2348
2441
  401: Error401;
2349
2442
  /**
2350
2443
  * Forbidden
2351
2444
  */
2352
2445
  403: Error403;
2353
- /**
2354
- * Not Found
2355
- */
2356
- 404: Error404;
2357
2446
  /**
2358
2447
  * Too Many Requests
2359
2448
  */
@@ -2363,41 +2452,32 @@ export type UpdateMediaErrors = {
2363
2452
  */
2364
2453
  500: Error500;
2365
2454
  };
2366
- export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2367
- export type UpdateMediaResponses = {
2455
+ export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
2456
+ export type CreateSeriesResponses = {
2368
2457
  /**
2369
- * OK
2458
+ * Created
2370
2459
  */
2371
- 200: Media;
2460
+ 201: Series;
2372
2461
  };
2373
- export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
2374
- export type ListEpisodesData = {
2462
+ export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
2463
+ export type DeleteSeriesData = {
2375
2464
  body?: never;
2376
2465
  path: {
2377
2466
  /**
2378
- * ID of the media
2379
- */
2380
- mediaId: number;
2381
- };
2382
- query?: {
2383
- /**
2384
- * Maximum number of episodes to return
2385
- */
2386
- limit?: number;
2387
- /**
2388
- * Episode number to start from (for pagination)
2467
+ * Series ID
2389
2468
  */
2390
- cursor?: number;
2469
+ id: number;
2391
2470
  };
2392
- url: '/v1/media/{mediaId}/episodes';
2471
+ query?: never;
2472
+ url: '/v1/media/series/{id}';
2393
2473
  };
2394
- export type ListEpisodesErrors = {
2474
+ export type DeleteSeriesErrors = {
2395
2475
  /**
2396
2476
  * Bad Request
2397
2477
  */
2398
2478
  400: Error400;
2399
2479
  /**
2400
- * Unauthorized
2480
+ * Unauthorized (API key)
2401
2481
  */
2402
2482
  401: Error401;
2403
2483
  /**
@@ -2417,32 +2497,37 @@ export type ListEpisodesErrors = {
2417
2497
  */
2418
2498
  500: Error500;
2419
2499
  };
2420
- export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
2421
- export type ListEpisodesResponses = {
2500
+ export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
2501
+ export type DeleteSeriesResponses = {
2422
2502
  /**
2423
- * Paginated list of episodes
2503
+ * No Content
2424
2504
  */
2425
- 200: EpisodeListResponse;
2505
+ 204: void;
2426
2506
  };
2427
- export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
2428
- export type CreateEpisodeData = {
2429
- body: EpisodeCreateRequest;
2507
+ export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
2508
+ export type GetSeriesData = {
2509
+ body?: never;
2430
2510
  path: {
2431
2511
  /**
2432
- * ID of the media
2512
+ * Series ID
2433
2513
  */
2434
- mediaId: number;
2514
+ id: number;
2435
2515
  };
2436
- query?: never;
2437
- url: '/v1/media/{mediaId}/episodes';
2516
+ query?: {
2517
+ /**
2518
+ * Resources to expand in the series response
2519
+ */
2520
+ include?: Array<MediaIncludeExpansion>;
2521
+ };
2522
+ url: '/v1/media/series/{id}';
2438
2523
  };
2439
- export type CreateEpisodeErrors = {
2524
+ export type GetSeriesErrors = {
2440
2525
  /**
2441
2526
  * Bad Request
2442
2527
  */
2443
2528
  400: Error400;
2444
2529
  /**
2445
- * Unauthorized
2530
+ * Unauthorized (API key)
2446
2531
  */
2447
2532
  401: Error401;
2448
2533
  /**
@@ -2453,10 +2538,6 @@ export type CreateEpisodeErrors = {
2453
2538
  * Not Found
2454
2539
  */
2455
2540
  404: Error404;
2456
- /**
2457
- * Conflict
2458
- */
2459
- 409: Error409;
2460
2541
  /**
2461
2542
  * Too Many Requests
2462
2543
  */
@@ -2466,36 +2547,45 @@ export type CreateEpisodeErrors = {
2466
2547
  */
2467
2548
  500: Error500;
2468
2549
  };
2469
- export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
2470
- export type CreateEpisodeResponses = {
2550
+ export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
2551
+ export type GetSeriesResponses = {
2471
2552
  /**
2472
- * Single episode response
2553
+ * OK
2473
2554
  */
2474
- 201: Episode;
2555
+ 200: SeriesWithMedia;
2475
2556
  };
2476
- export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
2477
- export type DeleteEpisodeData = {
2478
- body?: never;
2479
- path: {
2557
+ export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
2558
+ export type UpdateSeriesData = {
2559
+ body: {
2480
2560
  /**
2481
- * ID of the media
2561
+ * Updated Japanese name
2482
2562
  */
2483
- mediaId: number;
2563
+ nameJa?: string;
2484
2564
  /**
2485
- * Episode number
2565
+ * Updated Romaji name
2486
2566
  */
2487
- episodeNumber: number;
2567
+ nameRomaji?: string;
2568
+ /**
2569
+ * Updated English name
2570
+ */
2571
+ nameEn?: string;
2572
+ };
2573
+ path: {
2574
+ /**
2575
+ * Series ID
2576
+ */
2577
+ id: number;
2488
2578
  };
2489
2579
  query?: never;
2490
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2580
+ url: '/v1/media/series/{id}';
2491
2581
  };
2492
- export type DeleteEpisodeErrors = {
2582
+ export type UpdateSeriesErrors = {
2493
2583
  /**
2494
2584
  * Bad Request
2495
2585
  */
2496
2586
  400: Error400;
2497
2587
  /**
2498
- * Unauthorized
2588
+ * Unauthorized (API key)
2499
2589
  */
2500
2590
  401: Error401;
2501
2591
  /**
@@ -2515,36 +2605,41 @@ export type DeleteEpisodeErrors = {
2515
2605
  */
2516
2606
  500: Error500;
2517
2607
  };
2518
- export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
2519
- export type DeleteEpisodeResponses = {
2608
+ export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
2609
+ export type UpdateSeriesResponses = {
2520
2610
  /**
2521
- * Episode successfully deleted
2611
+ * OK
2522
2612
  */
2523
- 204: void;
2613
+ 200: Series;
2524
2614
  };
2525
- export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
2526
- export type GetEpisodeData = {
2527
- body?: never;
2528
- path: {
2615
+ export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
2616
+ export type AddMediaToSeriesData = {
2617
+ body: {
2529
2618
  /**
2530
- * ID of the media
2619
+ * Media ID to add
2531
2620
  */
2532
2621
  mediaId: number;
2533
2622
  /**
2534
- * Episode number
2623
+ * Position in the series (1-indexed)
2535
2624
  */
2536
- episodeNumber: number;
2625
+ position: number;
2626
+ };
2627
+ path: {
2628
+ /**
2629
+ * Series ID
2630
+ */
2631
+ id: number;
2537
2632
  };
2538
2633
  query?: never;
2539
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2634
+ url: '/v1/media/series/{id}/media';
2540
2635
  };
2541
- export type GetEpisodeErrors = {
2636
+ export type AddMediaToSeriesErrors = {
2542
2637
  /**
2543
2638
  * Bad Request
2544
2639
  */
2545
2640
  400: Error400;
2546
2641
  /**
2547
- * Unauthorized
2642
+ * Unauthorized (API key)
2548
2643
  */
2549
2644
  401: Error401;
2550
2645
  /**
@@ -2564,36 +2659,36 @@ export type GetEpisodeErrors = {
2564
2659
  */
2565
2660
  500: Error500;
2566
2661
  };
2567
- export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
2568
- export type GetEpisodeResponses = {
2662
+ export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
2663
+ export type AddMediaToSeriesResponses = {
2569
2664
  /**
2570
- * Single episode response
2665
+ * No Content
2571
2666
  */
2572
- 200: Episode;
2667
+ 204: void;
2573
2668
  };
2574
- export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
2575
- export type UpdateEpisodeData = {
2576
- body: EpisodeUpdateRequest;
2669
+ export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
2670
+ export type RemoveMediaFromSeriesData = {
2671
+ body?: never;
2577
2672
  path: {
2578
2673
  /**
2579
- * ID of the media
2674
+ * Series ID
2580
2675
  */
2581
- mediaId: number;
2676
+ id: number;
2582
2677
  /**
2583
- * Episode number
2678
+ * Media ID
2584
2679
  */
2585
- episodeNumber: number;
2680
+ mediaId: number;
2586
2681
  };
2587
2682
  query?: never;
2588
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2683
+ url: '/v1/media/series/{id}/media/{mediaId}';
2589
2684
  };
2590
- export type UpdateEpisodeErrors = {
2685
+ export type RemoveMediaFromSeriesErrors = {
2591
2686
  /**
2592
2687
  * Bad Request
2593
2688
  */
2594
2689
  400: Error400;
2595
2690
  /**
2596
- * Unauthorized
2691
+ * Unauthorized (API key)
2597
2692
  */
2598
2693
  401: Error401;
2599
2694
  /**
@@ -2613,45 +2708,41 @@ export type UpdateEpisodeErrors = {
2613
2708
  */
2614
2709
  500: Error500;
2615
2710
  };
2616
- export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
2617
- export type UpdateEpisodeResponses = {
2618
- /**
2619
- * Single episode response
2620
- */
2621
- 200: Episode;
2622
- };
2623
- export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
2624
- export type ListSegmentsData = {
2625
- body?: never;
2626
- path: {
2627
- /**
2628
- * ID of the media
2629
- */
2630
- mediaId: number;
2711
+ export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
2712
+ export type RemoveMediaFromSeriesResponses = {
2713
+ /**
2714
+ * No Content
2715
+ */
2716
+ 204: void;
2717
+ };
2718
+ export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
2719
+ export type UpdateSeriesMediaData = {
2720
+ body: {
2631
2721
  /**
2632
- * Episode number
2722
+ * New position in the series (1-indexed)
2633
2723
  */
2634
- episodeNumber: number;
2724
+ position: number;
2635
2725
  };
2636
- query?: {
2726
+ path: {
2637
2727
  /**
2638
- * Maximum number of segments to return
2728
+ * Series ID
2639
2729
  */
2640
- limit?: number;
2730
+ id: number;
2641
2731
  /**
2642
- * Segment ID to start from (for pagination)
2732
+ * Media ID
2643
2733
  */
2644
- cursor?: number;
2734
+ mediaId: number;
2645
2735
  };
2646
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2736
+ query?: never;
2737
+ url: '/v1/media/series/{id}/media/{mediaId}';
2647
2738
  };
2648
- export type ListSegmentsErrors = {
2739
+ export type UpdateSeriesMediaErrors = {
2649
2740
  /**
2650
2741
  * Bad Request
2651
2742
  */
2652
2743
  400: Error400;
2653
2744
  /**
2654
- * Unauthorized
2745
+ * Unauthorized (API key)
2655
2746
  */
2656
2747
  401: Error401;
2657
2748
  /**
@@ -2671,42 +2762,32 @@ export type ListSegmentsErrors = {
2671
2762
  */
2672
2763
  500: Error500;
2673
2764
  };
2674
- export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
2675
- export type ListSegmentsResponses = {
2765
+ export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
2766
+ export type UpdateSeriesMediaResponses = {
2676
2767
  /**
2677
- * Paginated segment list response
2768
+ * No Content
2678
2769
  */
2679
- 200: {
2680
- /**
2681
- * Array of segment objects
2682
- */
2683
- segments: Array<Segment>;
2684
- pagination: CursorPagination;
2685
- };
2770
+ 204: void;
2686
2771
  };
2687
- export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
2688
- export type CreateSegmentData = {
2689
- body: SegmentCreateRequest;
2772
+ export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
2773
+ export type GetCharacterData = {
2774
+ body?: never;
2690
2775
  path: {
2691
2776
  /**
2692
- * ID of the media
2693
- */
2694
- mediaId: number;
2695
- /**
2696
- * Episode number
2777
+ * Internal character ID
2697
2778
  */
2698
- episodeNumber: number;
2779
+ id: number;
2699
2780
  };
2700
2781
  query?: never;
2701
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2782
+ url: '/v1/media/characters/{id}';
2702
2783
  };
2703
- export type CreateSegmentErrors = {
2784
+ export type GetCharacterErrors = {
2704
2785
  /**
2705
2786
  * Bad Request
2706
2787
  */
2707
2788
  400: Error400;
2708
2789
  /**
2709
- * Unauthorized
2790
+ * Unauthorized (API key)
2710
2791
  */
2711
2792
  401: Error401;
2712
2793
  /**
@@ -2717,10 +2798,6 @@ export type CreateSegmentErrors = {
2717
2798
  * Not Found
2718
2799
  */
2719
2800
  404: Error404;
2720
- /**
2721
- * Conflict
2722
- */
2723
- 409: Error409;
2724
2801
  /**
2725
2802
  * Too Many Requests
2726
2803
  */
@@ -2730,40 +2807,32 @@ export type CreateSegmentErrors = {
2730
2807
  */
2731
2808
  500: Error500;
2732
2809
  };
2733
- export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
2734
- export type CreateSegmentResponses = {
2810
+ export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
2811
+ export type GetCharacterResponses = {
2735
2812
  /**
2736
- * Single segment response with internal fields
2813
+ * OK
2737
2814
  */
2738
- 201: SegmentInternal;
2815
+ 200: CharacterWithMedia;
2739
2816
  };
2740
- export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
2741
- export type DeleteSegmentData = {
2817
+ export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
2818
+ export type GetSeiyuuData = {
2742
2819
  body?: never;
2743
2820
  path: {
2744
2821
  /**
2745
- * ID of the media
2746
- */
2747
- mediaId: number;
2748
- /**
2749
- * Episode number
2750
- */
2751
- episodeNumber: number;
2752
- /**
2753
- * Segment ID
2822
+ * Internal seiyuu ID
2754
2823
  */
2755
2824
  id: number;
2756
2825
  };
2757
2826
  query?: never;
2758
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2827
+ url: '/v1/media/seiyuu/{id}';
2759
2828
  };
2760
- export type DeleteSegmentErrors = {
2829
+ export type GetSeiyuuErrors = {
2761
2830
  /**
2762
2831
  * Bad Request
2763
2832
  */
2764
2833
  400: Error400;
2765
2834
  /**
2766
- * Unauthorized
2835
+ * Unauthorized (API key)
2767
2836
  */
2768
2837
  401: Error401;
2769
2838
  /**
@@ -2783,40 +2852,32 @@ export type DeleteSegmentErrors = {
2783
2852
  */
2784
2853
  500: Error500;
2785
2854
  };
2786
- export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
2787
- export type DeleteSegmentResponses = {
2855
+ export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
2856
+ export type GetSeiyuuResponses = {
2788
2857
  /**
2789
- * Segment successfully deleted
2858
+ * OK
2790
2859
  */
2791
- 204: void;
2860
+ 200: SeiyuuWithRoles;
2792
2861
  };
2793
- export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
2794
- export type GetSegmentData = {
2862
+ export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
2863
+ export type DeleteMediaData = {
2795
2864
  body?: never;
2796
2865
  path: {
2797
2866
  /**
2798
- * ID of the media
2799
- */
2800
- mediaId: number;
2801
- /**
2802
- * Episode number
2803
- */
2804
- episodeNumber: number;
2805
- /**
2806
- * Segment ID
2867
+ * Media ID
2807
2868
  */
2808
2869
  id: number;
2809
2870
  };
2810
2871
  query?: never;
2811
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2872
+ url: '/v1/media/{id}';
2812
2873
  };
2813
- export type GetSegmentErrors = {
2874
+ export type DeleteMediaErrors = {
2814
2875
  /**
2815
2876
  * Bad Request
2816
2877
  */
2817
2878
  400: Error400;
2818
2879
  /**
2819
- * Unauthorized
2880
+ * Unauthorized (API key)
2820
2881
  */
2821
2882
  401: Error401;
2822
2883
  /**
@@ -2836,40 +2897,37 @@ export type GetSegmentErrors = {
2836
2897
  */
2837
2898
  500: Error500;
2838
2899
  };
2839
- export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
2840
- export type GetSegmentResponses = {
2900
+ export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2901
+ export type DeleteMediaResponses = {
2841
2902
  /**
2842
- * Single segment response
2903
+ * No Content
2843
2904
  */
2844
- 200: Segment;
2905
+ 204: void;
2845
2906
  };
2846
- export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
2847
- export type UpdateSegmentData = {
2848
- body: SegmentUpdateRequest;
2907
+ export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2908
+ export type GetMediaData = {
2909
+ body?: never;
2849
2910
  path: {
2850
2911
  /**
2851
- * ID of the media
2852
- */
2853
- mediaId: number;
2854
- /**
2855
- * Episode number
2912
+ * Media ID
2856
2913
  */
2857
- episodeNumber: number;
2914
+ id: number;
2915
+ };
2916
+ query?: {
2858
2917
  /**
2859
- * Segment ID
2918
+ * Resources to expand in the media response
2860
2919
  */
2861
- id: number;
2920
+ include?: Array<MediaIncludeExpansion>;
2862
2921
  };
2863
- query?: never;
2864
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2922
+ url: '/v1/media/{id}';
2865
2923
  };
2866
- export type UpdateSegmentErrors = {
2924
+ export type GetMediaErrors = {
2867
2925
  /**
2868
2926
  * Bad Request
2869
2927
  */
2870
2928
  400: Error400;
2871
2929
  /**
2872
- * Unauthorized
2930
+ * Unauthorized (API key)
2873
2931
  */
2874
2932
  401: Error401;
2875
2933
  /**
@@ -2889,32 +2947,32 @@ export type UpdateSegmentErrors = {
2889
2947
  */
2890
2948
  500: Error500;
2891
2949
  };
2892
- export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
2893
- export type UpdateSegmentResponses = {
2950
+ export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2951
+ export type GetMediaResponses = {
2894
2952
  /**
2895
- * Single segment response with internal fields
2953
+ * OK
2896
2954
  */
2897
- 200: SegmentInternal;
2955
+ 200: Media;
2898
2956
  };
2899
- export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
2900
- export type GetSegmentByUuidData = {
2901
- body?: never;
2957
+ export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2958
+ export type UpdateMediaData = {
2959
+ body: MediaUpdateRequest;
2902
2960
  path: {
2903
2961
  /**
2904
- * Segment UUID
2962
+ * Media ID
2905
2963
  */
2906
- uuid: string;
2964
+ id: number;
2907
2965
  };
2908
2966
  query?: never;
2909
- url: '/v1/media/segments/{uuid}';
2967
+ url: '/v1/media/{id}';
2910
2968
  };
2911
- export type GetSegmentByUuidErrors = {
2969
+ export type UpdateMediaErrors = {
2912
2970
  /**
2913
2971
  * Bad Request
2914
2972
  */
2915
2973
  400: Error400;
2916
2974
  /**
2917
- * Unauthorized
2975
+ * Unauthorized (API key)
2918
2976
  */
2919
2977
  401: Error401;
2920
2978
  /**
@@ -2934,42 +2992,41 @@ export type GetSegmentByUuidErrors = {
2934
2992
  */
2935
2993
  500: Error500;
2936
2994
  };
2937
- export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2938
- export type GetSegmentByUuidResponses = {
2939
- 200: Segment;
2995
+ export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2996
+ export type UpdateMediaResponses = {
2997
+ /**
2998
+ * OK
2999
+ */
3000
+ 200: Media;
2940
3001
  };
2941
- export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2942
- export type GetSegmentContextData = {
3002
+ export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
3003
+ export type ListEpisodesData = {
2943
3004
  body?: never;
2944
3005
  path: {
2945
3006
  /**
2946
- * Segment UUID
3007
+ * ID of the media
2947
3008
  */
2948
- uuid: string;
3009
+ mediaId: number;
2949
3010
  };
2950
3011
  query?: {
2951
3012
  /**
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)
3013
+ * Maximum number of episodes to return
2957
3014
  */
2958
- contentRating?: Array<ContentRating>;
3015
+ take?: number;
2959
3016
  /**
2960
- * Resources to expand in the response includes block
3017
+ * Opaque pagination cursor token
2961
3018
  */
2962
- include?: Array<IncludeExpansion>;
3019
+ cursor?: string;
2963
3020
  };
2964
- url: '/v1/media/segments/{uuid}/context';
3021
+ url: '/v1/media/{mediaId}/episodes';
2965
3022
  };
2966
- export type GetSegmentContextErrors = {
3023
+ export type ListEpisodesErrors = {
2967
3024
  /**
2968
3025
  * Bad Request
2969
3026
  */
2970
3027
  400: Error400;
2971
3028
  /**
2972
- * Unauthorized
3029
+ * Unauthorized (API key)
2973
3030
  */
2974
3031
  401: Error401;
2975
3032
  /**
@@ -2989,46 +3046,46 @@ export type GetSegmentContextErrors = {
2989
3046
  */
2990
3047
  500: Error500;
2991
3048
  };
2992
- export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2993
- export type GetSegmentContextResponses = {
3049
+ export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
3050
+ export type ListEpisodesResponses = {
2994
3051
  /**
2995
- * OK
3052
+ * Paginated list of episodes
2996
3053
  */
2997
- 200: SegmentContextResponse;
3054
+ 200: EpisodeListResponse;
2998
3055
  };
2999
- export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
3000
- export type ListSeriesData = {
3001
- body?: never;
3002
- path?: never;
3003
- query?: {
3004
- /**
3005
- * Number of results per page
3006
- */
3007
- limit?: number;
3008
- /**
3009
- * Pagination cursor offset
3010
- */
3011
- cursor?: number;
3056
+ export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
3057
+ export type CreateEpisodeData = {
3058
+ body: EpisodeCreateRequest;
3059
+ path: {
3012
3060
  /**
3013
- * Case-insensitive search across English, Japanese, and Romaji names
3061
+ * ID of the media
3014
3062
  */
3015
- query?: string;
3063
+ mediaId: number;
3016
3064
  };
3017
- url: '/v1/media/series';
3065
+ query?: never;
3066
+ url: '/v1/media/{mediaId}/episodes';
3018
3067
  };
3019
- export type ListSeriesErrors = {
3068
+ export type CreateEpisodeErrors = {
3020
3069
  /**
3021
3070
  * Bad Request
3022
3071
  */
3023
3072
  400: Error400;
3024
3073
  /**
3025
- * Unauthorized
3074
+ * Unauthorized (API key)
3026
3075
  */
3027
3076
  401: Error401;
3028
3077
  /**
3029
3078
  * Forbidden
3030
3079
  */
3031
3080
  403: Error403;
3081
+ /**
3082
+ * Not Found
3083
+ */
3084
+ 404: Error404;
3085
+ /**
3086
+ * Conflict
3087
+ */
3088
+ 409: Error409;
3032
3089
  /**
3033
3090
  * Too Many Requests
3034
3091
  */
@@ -3038,46 +3095,46 @@ export type ListSeriesErrors = {
3038
3095
  */
3039
3096
  500: Error500;
3040
3097
  };
3041
- export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
3042
- export type ListSeriesResponses = {
3098
+ export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
3099
+ export type CreateEpisodeResponses = {
3043
3100
  /**
3044
- * OK
3101
+ * Single episode response
3045
3102
  */
3046
- 200: SeriesListResponse;
3103
+ 201: Episode;
3047
3104
  };
3048
- export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
3049
- export type CreateSeriesData = {
3050
- body: {
3051
- /**
3052
- * Japanese name of the series
3053
- */
3054
- nameJa: string;
3105
+ export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
3106
+ export type DeleteEpisodeData = {
3107
+ body?: never;
3108
+ path: {
3055
3109
  /**
3056
- * Romaji name of the series
3110
+ * ID of the media
3057
3111
  */
3058
- nameRomaji: string;
3112
+ mediaId: number;
3059
3113
  /**
3060
- * English name of the series
3114
+ * Episode number
3061
3115
  */
3062
- nameEn: string;
3116
+ episodeNumber: number;
3063
3117
  };
3064
- path?: never;
3065
3118
  query?: never;
3066
- url: '/v1/media/series';
3119
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3067
3120
  };
3068
- export type CreateSeriesErrors = {
3121
+ export type DeleteEpisodeErrors = {
3069
3122
  /**
3070
3123
  * Bad Request
3071
3124
  */
3072
3125
  400: Error400;
3073
3126
  /**
3074
- * Unauthorized
3127
+ * Unauthorized (API key)
3075
3128
  */
3076
3129
  401: Error401;
3077
3130
  /**
3078
3131
  * Forbidden
3079
3132
  */
3080
3133
  403: Error403;
3134
+ /**
3135
+ * Not Found
3136
+ */
3137
+ 404: Error404;
3081
3138
  /**
3082
3139
  * Too Many Requests
3083
3140
  */
@@ -3087,32 +3144,36 @@ export type CreateSeriesErrors = {
3087
3144
  */
3088
3145
  500: Error500;
3089
3146
  };
3090
- export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
3091
- export type CreateSeriesResponses = {
3147
+ export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
3148
+ export type DeleteEpisodeResponses = {
3092
3149
  /**
3093
- * Created
3150
+ * Episode successfully deleted
3094
3151
  */
3095
- 201: Series;
3152
+ 204: void;
3096
3153
  };
3097
- export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
3098
- export type DeleteSeriesData = {
3154
+ export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
3155
+ export type GetEpisodeData = {
3099
3156
  body?: never;
3100
3157
  path: {
3101
3158
  /**
3102
- * Series ID
3159
+ * ID of the media
3103
3160
  */
3104
- id: number;
3161
+ mediaId: number;
3162
+ /**
3163
+ * Episode number
3164
+ */
3165
+ episodeNumber: number;
3105
3166
  };
3106
3167
  query?: never;
3107
- url: '/v1/media/series/{id}';
3168
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3108
3169
  };
3109
- export type DeleteSeriesErrors = {
3170
+ export type GetEpisodeErrors = {
3110
3171
  /**
3111
3172
  * Bad Request
3112
3173
  */
3113
3174
  400: Error400;
3114
3175
  /**
3115
- * Unauthorized
3176
+ * Unauthorized (API key)
3116
3177
  */
3117
3178
  401: Error401;
3118
3179
  /**
@@ -3132,37 +3193,36 @@ export type DeleteSeriesErrors = {
3132
3193
  */
3133
3194
  500: Error500;
3134
3195
  };
3135
- export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
3136
- export type DeleteSeriesResponses = {
3196
+ export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
3197
+ export type GetEpisodeResponses = {
3137
3198
  /**
3138
- * No Content
3199
+ * Single episode response
3139
3200
  */
3140
- 204: void;
3201
+ 200: Episode;
3141
3202
  };
3142
- export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
3143
- export type GetSeriesData = {
3144
- body?: never;
3203
+ export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
3204
+ export type UpdateEpisodeData = {
3205
+ body: EpisodeUpdateRequest;
3145
3206
  path: {
3146
3207
  /**
3147
- * Series ID
3208
+ * ID of the media
3148
3209
  */
3149
- id: number;
3150
- };
3151
- query?: {
3210
+ mediaId: number;
3152
3211
  /**
3153
- * Resources to expand in the series response (`media.characters` implies `media`)
3212
+ * Episode number
3154
3213
  */
3155
- include?: Array<MediaIncludeExpansion>;
3214
+ episodeNumber: number;
3156
3215
  };
3157
- url: '/v1/media/series/{id}';
3216
+ query?: never;
3217
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3158
3218
  };
3159
- export type GetSeriesErrors = {
3219
+ export type UpdateEpisodeErrors = {
3160
3220
  /**
3161
3221
  * Bad Request
3162
3222
  */
3163
3223
  400: Error400;
3164
3224
  /**
3165
- * Unauthorized
3225
+ * Unauthorized (API key)
3166
3226
  */
3167
3227
  401: Error401;
3168
3228
  /**
@@ -3182,45 +3242,45 @@ export type GetSeriesErrors = {
3182
3242
  */
3183
3243
  500: Error500;
3184
3244
  };
3185
- export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
3186
- export type GetSeriesResponses = {
3245
+ export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
3246
+ export type UpdateEpisodeResponses = {
3187
3247
  /**
3188
- * OK
3248
+ * Single episode response
3189
3249
  */
3190
- 200: SeriesWithMedia;
3250
+ 200: Episode;
3191
3251
  };
3192
- export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
3193
- export type UpdateSeriesData = {
3194
- body: {
3252
+ export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
3253
+ export type ListSegmentsData = {
3254
+ body?: never;
3255
+ path: {
3195
3256
  /**
3196
- * Updated Japanese name
3257
+ * ID of the media
3197
3258
  */
3198
- nameJa?: string;
3259
+ mediaId: number;
3199
3260
  /**
3200
- * Updated Romaji name
3261
+ * Episode number
3201
3262
  */
3202
- nameRomaji?: string;
3263
+ episodeNumber: number;
3264
+ };
3265
+ query?: {
3203
3266
  /**
3204
- * Updated English name
3267
+ * Maximum number of segments to return
3205
3268
  */
3206
- nameEn?: string;
3207
- };
3208
- path: {
3269
+ take?: number;
3209
3270
  /**
3210
- * Series ID
3271
+ * Opaque pagination cursor token
3211
3272
  */
3212
- id: number;
3273
+ cursor?: string;
3213
3274
  };
3214
- query?: never;
3215
- url: '/v1/media/series/{id}';
3275
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3216
3276
  };
3217
- export type UpdateSeriesErrors = {
3277
+ export type ListSegmentsErrors = {
3218
3278
  /**
3219
3279
  * Bad Request
3220
3280
  */
3221
3281
  400: Error400;
3222
3282
  /**
3223
- * Unauthorized
3283
+ * Unauthorized (API key)
3224
3284
  */
3225
3285
  401: Error401;
3226
3286
  /**
@@ -3240,41 +3300,42 @@ export type UpdateSeriesErrors = {
3240
3300
  */
3241
3301
  500: Error500;
3242
3302
  };
3243
- export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
3244
- export type UpdateSeriesResponses = {
3303
+ export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
3304
+ export type ListSegmentsResponses = {
3245
3305
  /**
3246
- * OK
3306
+ * Paginated segment list response
3247
3307
  */
3248
- 200: Series;
3249
- };
3250
- export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
3251
- export type AddMediaToSeriesData = {
3252
- body: {
3253
- /**
3254
- * Media ID to add
3255
- */
3256
- mediaId: number;
3308
+ 200: {
3257
3309
  /**
3258
- * Position in the series (1-indexed)
3310
+ * Array of segment objects
3259
3311
  */
3260
- position: number;
3312
+ segments: Array<Segment>;
3313
+ pagination: OpaqueCursorPagination;
3261
3314
  };
3315
+ };
3316
+ export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
3317
+ export type CreateSegmentData = {
3318
+ body: SegmentCreateRequest;
3262
3319
  path: {
3263
3320
  /**
3264
- * Series ID
3321
+ * ID of the media
3265
3322
  */
3266
- id: number;
3323
+ mediaId: number;
3324
+ /**
3325
+ * Episode number
3326
+ */
3327
+ episodeNumber: number;
3267
3328
  };
3268
3329
  query?: never;
3269
- url: '/v1/media/series/{id}/media';
3330
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3270
3331
  };
3271
- export type AddMediaToSeriesErrors = {
3332
+ export type CreateSegmentErrors = {
3272
3333
  /**
3273
3334
  * Bad Request
3274
3335
  */
3275
3336
  400: Error400;
3276
3337
  /**
3277
- * Unauthorized
3338
+ * Unauthorized (API key)
3278
3339
  */
3279
3340
  401: Error401;
3280
3341
  /**
@@ -3285,6 +3346,10 @@ export type AddMediaToSeriesErrors = {
3285
3346
  * Not Found
3286
3347
  */
3287
3348
  404: Error404;
3349
+ /**
3350
+ * Conflict
3351
+ */
3352
+ 409: Error409;
3288
3353
  /**
3289
3354
  * Too Many Requests
3290
3355
  */
@@ -3294,36 +3359,36 @@ export type AddMediaToSeriesErrors = {
3294
3359
  */
3295
3360
  500: Error500;
3296
3361
  };
3297
- export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
3298
- export type AddMediaToSeriesResponses = {
3362
+ export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
3363
+ export type CreateSegmentResponses = {
3299
3364
  /**
3300
- * No Content
3365
+ * Single segment response with internal fields
3301
3366
  */
3302
- 204: void;
3367
+ 201: SegmentInternal;
3303
3368
  };
3304
- export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
3305
- export type RemoveMediaFromSeriesData = {
3306
- body?: never;
3369
+ export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
3370
+ export type CreateSegmentsBatchData = {
3371
+ body: SegmentBatchCreateRequest;
3307
3372
  path: {
3308
3373
  /**
3309
- * Series ID
3374
+ * ID of the media
3310
3375
  */
3311
- id: number;
3376
+ mediaId: number;
3312
3377
  /**
3313
- * Media ID
3378
+ * Episode number
3314
3379
  */
3315
- mediaId: number;
3380
+ episodeNumber: number;
3316
3381
  };
3317
3382
  query?: never;
3318
- url: '/v1/media/series/{id}/media/{mediaId}';
3383
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/batch';
3319
3384
  };
3320
- export type RemoveMediaFromSeriesErrors = {
3385
+ export type CreateSegmentsBatchErrors = {
3321
3386
  /**
3322
3387
  * Bad Request
3323
3388
  */
3324
3389
  400: Error400;
3325
3390
  /**
3326
- * Unauthorized
3391
+ * Unauthorized (API key)
3327
3392
  */
3328
3393
  401: Error401;
3329
3394
  /**
@@ -3343,41 +3408,49 @@ export type RemoveMediaFromSeriesErrors = {
3343
3408
  */
3344
3409
  500: Error500;
3345
3410
  };
3346
- export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
3347
- export type RemoveMediaFromSeriesResponses = {
3411
+ export type CreateSegmentsBatchError = CreateSegmentsBatchErrors[keyof CreateSegmentsBatchErrors];
3412
+ export type CreateSegmentsBatchResponses = {
3348
3413
  /**
3349
- * No Content
3414
+ * Batch segment creation result
3350
3415
  */
3351
- 204: void;
3352
- };
3353
- export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
3354
- export type UpdateSeriesMediaData = {
3355
- body: {
3416
+ 201: {
3356
3417
  /**
3357
- * New position in the series (1-indexed)
3418
+ * Number of segments successfully created
3358
3419
  */
3359
- position: number;
3420
+ created: number;
3421
+ /**
3422
+ * Number of segments skipped due to duplicate UUIDs
3423
+ */
3424
+ skipped: number;
3360
3425
  };
3426
+ };
3427
+ export type CreateSegmentsBatchResponse = CreateSegmentsBatchResponses[keyof CreateSegmentsBatchResponses];
3428
+ export type DeleteSegmentData = {
3429
+ body?: never;
3361
3430
  path: {
3362
3431
  /**
3363
- * Series ID
3432
+ * ID of the media
3364
3433
  */
3365
- id: number;
3434
+ mediaId: number;
3366
3435
  /**
3367
- * Media ID
3436
+ * Episode number
3368
3437
  */
3369
- mediaId: number;
3438
+ episodeNumber: number;
3439
+ /**
3440
+ * Segment ID
3441
+ */
3442
+ id: number;
3370
3443
  };
3371
3444
  query?: never;
3372
- url: '/v1/media/series/{id}/media/{mediaId}';
3445
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3373
3446
  };
3374
- export type UpdateSeriesMediaErrors = {
3447
+ export type DeleteSegmentErrors = {
3375
3448
  /**
3376
3449
  * Bad Request
3377
3450
  */
3378
3451
  400: Error400;
3379
3452
  /**
3380
- * Unauthorized
3453
+ * Unauthorized (API key)
3381
3454
  */
3382
3455
  401: Error401;
3383
3456
  /**
@@ -3397,32 +3470,40 @@ export type UpdateSeriesMediaErrors = {
3397
3470
  */
3398
3471
  500: Error500;
3399
3472
  };
3400
- export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
3401
- export type UpdateSeriesMediaResponses = {
3473
+ export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
3474
+ export type DeleteSegmentResponses = {
3402
3475
  /**
3403
- * No Content
3476
+ * Segment successfully deleted
3404
3477
  */
3405
3478
  204: void;
3406
3479
  };
3407
- export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
3408
- export type GetCharacterData = {
3480
+ export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
3481
+ export type GetSegmentData = {
3409
3482
  body?: never;
3410
3483
  path: {
3411
3484
  /**
3412
- * AniList character ID
3485
+ * ID of the media
3486
+ */
3487
+ mediaId: number;
3488
+ /**
3489
+ * Episode number
3490
+ */
3491
+ episodeNumber: number;
3492
+ /**
3493
+ * Segment ID
3413
3494
  */
3414
3495
  id: number;
3415
3496
  };
3416
3497
  query?: never;
3417
- url: '/v1/media/characters/{id}';
3498
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3418
3499
  };
3419
- export type GetCharacterErrors = {
3500
+ export type GetSegmentErrors = {
3420
3501
  /**
3421
3502
  * Bad Request
3422
3503
  */
3423
3504
  400: Error400;
3424
3505
  /**
3425
- * Unauthorized
3506
+ * Unauthorized (API key)
3426
3507
  */
3427
3508
  401: Error401;
3428
3509
  /**
@@ -3442,37 +3523,40 @@ export type GetCharacterErrors = {
3442
3523
  */
3443
3524
  500: Error500;
3444
3525
  };
3445
- export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
3446
- export type GetCharacterResponses = {
3526
+ export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
3527
+ export type GetSegmentResponses = {
3447
3528
  /**
3448
- * OK
3529
+ * Single segment response
3449
3530
  */
3450
- 200: CharacterWithMedia;
3531
+ 200: Segment;
3451
3532
  };
3452
- export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
3453
- export type GetSeiyuuData = {
3454
- body?: never;
3533
+ export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
3534
+ export type UpdateSegmentData = {
3535
+ body: SegmentUpdateRequest;
3455
3536
  path: {
3456
3537
  /**
3457
- * AniList staff ID
3538
+ * ID of the media
3458
3539
  */
3459
- id: number;
3460
- };
3461
- query?: {
3540
+ mediaId: number;
3541
+ /**
3542
+ * Episode number
3543
+ */
3544
+ episodeNumber: number;
3462
3545
  /**
3463
- * Resources to expand in the response (`character` is included by default)
3546
+ * Segment ID
3464
3547
  */
3465
- include?: Array<'character'>;
3548
+ id: number;
3466
3549
  };
3467
- url: '/v1/media/seiyuu/{id}';
3550
+ query?: never;
3551
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3468
3552
  };
3469
- export type GetSeiyuuErrors = {
3553
+ export type UpdateSegmentErrors = {
3470
3554
  /**
3471
3555
  * Bad Request
3472
3556
  */
3473
3557
  400: Error400;
3474
3558
  /**
3475
- * Unauthorized
3559
+ * Unauthorized (API key)
3476
3560
  */
3477
3561
  401: Error401;
3478
3562
  /**
@@ -3492,14 +3576,14 @@ export type GetSeiyuuErrors = {
3492
3576
  */
3493
3577
  500: Error500;
3494
3578
  };
3495
- export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
3496
- export type GetSeiyuuResponses = {
3579
+ export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
3580
+ export type UpdateSegmentResponses = {
3497
3581
  /**
3498
- * OK
3582
+ * Single segment response with internal fields
3499
3583
  */
3500
- 200: SeiyuuWithRoles;
3584
+ 200: SegmentInternal;
3501
3585
  };
3502
- export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
3586
+ export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
3503
3587
  export type GetUserQuotaData = {
3504
3588
  body?: never;
3505
3589
  path?: never;
@@ -3508,9 +3592,13 @@ export type GetUserQuotaData = {
3508
3592
  };
3509
3593
  export type GetUserQuotaErrors = {
3510
3594
  /**
3511
- * Unauthorized
3595
+ * Unauthorized (session)
3512
3596
  */
3513
3597
  401: Error401;
3598
+ /**
3599
+ * Forbidden
3600
+ */
3601
+ 403: Error403;
3514
3602
  /**
3515
3603
  * Too Many Requests
3516
3604
  */
@@ -3528,43 +3616,6 @@ export type GetUserQuotaResponses = {
3528
3616
  200: UserQuotaResponse;
3529
3617
  };
3530
3618
  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
3619
  export type CreateUserReportData = {
3569
3620
  body: CreateReportRequest;
3570
3621
  path?: never;
@@ -3577,7 +3628,7 @@ export type CreateUserReportErrors = {
3577
3628
  */
3578
3629
  400: Error400;
3579
3630
  /**
3580
- * Unauthorized
3631
+ * Unauthorized (session)
3581
3632
  */
3582
3633
  401: Error401;
3583
3634
  /**
@@ -3605,7 +3656,7 @@ export type GetUserPreferencesData = {
3605
3656
  };
3606
3657
  export type GetUserPreferencesErrors = {
3607
3658
  /**
3608
- * Unauthorized
3659
+ * Unauthorized (session)
3609
3660
  */
3610
3661
  401: Error401;
3611
3662
  /**
@@ -3629,7 +3680,7 @@ export type UpdateUserPreferencesData = {
3629
3680
  };
3630
3681
  export type UpdateUserPreferencesErrors = {
3631
3682
  /**
3632
- * Unauthorized
3683
+ * Unauthorized (session)
3633
3684
  */
3634
3685
  401: Error401;
3635
3686
  /**
@@ -3658,7 +3709,7 @@ export type DeleteUserActivityData = {
3658
3709
  };
3659
3710
  export type DeleteUserActivityErrors = {
3660
3711
  /**
3661
- * Unauthorized
3712
+ * Unauthorized (session)
3662
3713
  */
3663
3714
  401: Error401;
3664
3715
  /**
@@ -3672,7 +3723,6 @@ export type DeleteUserActivityResponses = {
3672
3723
  * OK
3673
3724
  */
3674
3725
  200: {
3675
- message: string;
3676
3726
  deletedCount: number;
3677
3727
  };
3678
3728
  };
@@ -3682,13 +3732,13 @@ export type ListUserActivityData = {
3682
3732
  path?: never;
3683
3733
  query?: {
3684
3734
  /**
3685
- * Cursor for pagination (activity ID to start after)
3735
+ * Opaque cursor token for keyset pagination
3686
3736
  */
3687
- cursor?: number;
3737
+ cursor?: string;
3688
3738
  /**
3689
3739
  * Number of results per page
3690
3740
  */
3691
- limit?: number;
3741
+ take?: number;
3692
3742
  /**
3693
3743
  * Filter by activity type
3694
3744
  */
@@ -3702,7 +3752,7 @@ export type ListUserActivityData = {
3702
3752
  };
3703
3753
  export type ListUserActivityErrors = {
3704
3754
  /**
3705
- * Unauthorized
3755
+ * Unauthorized (session)
3706
3756
  */
3707
3757
  401: Error401;
3708
3758
  /**
@@ -3717,10 +3767,44 @@ export type ListUserActivityResponses = {
3717
3767
  */
3718
3768
  200: {
3719
3769
  activities: Array<UserActivity>;
3720
- pagination: CursorPagination;
3770
+ pagination: OpaqueCursorPagination;
3721
3771
  };
3722
3772
  };
3723
3773
  export type ListUserActivityResponse = ListUserActivityResponses[keyof ListUserActivityResponses];
3774
+ export type TrackUserActivityData = {
3775
+ body: {
3776
+ activityType: 'SEGMENT_PLAY' | 'SHARE';
3777
+ segmentUuid?: string;
3778
+ mediaId?: number;
3779
+ mediaName?: string;
3780
+ japaneseText?: string;
3781
+ };
3782
+ path?: never;
3783
+ query?: never;
3784
+ url: '/v1/user/activity';
3785
+ };
3786
+ export type TrackUserActivityErrors = {
3787
+ /**
3788
+ * Bad Request
3789
+ */
3790
+ 400: Error400;
3791
+ /**
3792
+ * Unauthorized (session)
3793
+ */
3794
+ 401: Error401;
3795
+ /**
3796
+ * Internal Server Error
3797
+ */
3798
+ 500: Error500;
3799
+ };
3800
+ export type TrackUserActivityError = TrackUserActivityErrors[keyof TrackUserActivityErrors];
3801
+ export type TrackUserActivityResponses = {
3802
+ /**
3803
+ * Activity tracked
3804
+ */
3805
+ 204: void;
3806
+ };
3807
+ export type TrackUserActivityResponse = TrackUserActivityResponses[keyof TrackUserActivityResponses];
3724
3808
  export type GetUserActivityHeatmapData = {
3725
3809
  body?: never;
3726
3810
  path?: never;
@@ -3729,16 +3813,12 @@ export type GetUserActivityHeatmapData = {
3729
3813
  * Number of days to include in the heatmap
3730
3814
  */
3731
3815
  days?: number;
3732
- /**
3733
- * Filter by activity type
3734
- */
3735
- activityType?: ActivityType;
3736
3816
  };
3737
3817
  url: '/v1/user/activity/heatmap';
3738
3818
  };
3739
3819
  export type GetUserActivityHeatmapErrors = {
3740
3820
  /**
3741
- * Unauthorized
3821
+ * Unauthorized (session)
3742
3822
  */
3743
3823
  401: Error401;
3744
3824
  /**
@@ -3753,10 +3833,10 @@ export type GetUserActivityHeatmapResponses = {
3753
3833
  */
3754
3834
  200: {
3755
3835
  /**
3756
- * Map of YYYY-MM-DD date strings to activity counts
3836
+ * Map of YYYY-MM-DD date strings to per-type activity counts
3757
3837
  */
3758
- counts: {
3759
- [key: string]: number;
3838
+ activityByDay: {
3839
+ [key: string]: HeatmapDayCounts;
3760
3840
  };
3761
3841
  };
3762
3842
  };
@@ -3774,7 +3854,7 @@ export type GetUserActivityStatsData = {
3774
3854
  };
3775
3855
  export type GetUserActivityStatsErrors = {
3776
3856
  /**
3777
- * Unauthorized
3857
+ * Unauthorized (session)
3778
3858
  */
3779
3859
  401: Error401;
3780
3860
  /**
@@ -3792,10 +3872,7 @@ export type GetUserActivityStatsResponses = {
3792
3872
  totalExports: number;
3793
3873
  totalPlays: number;
3794
3874
  totalListAdds: number;
3795
- /**
3796
- * Consecutive days with at least one activity
3797
- */
3798
- streakDays: number;
3875
+ totalShares: number;
3799
3876
  topMedia: Array<{
3800
3877
  mediaId: number;
3801
3878
  count: number;
@@ -3803,6 +3880,70 @@ export type GetUserActivityStatsResponses = {
3803
3880
  };
3804
3881
  };
3805
3882
  export type GetUserActivityStatsResponse = GetUserActivityStatsResponses[keyof GetUserActivityStatsResponses];
3883
+ export type DeleteUserActivityByDateData = {
3884
+ body?: never;
3885
+ path: {
3886
+ /**
3887
+ * Date in YYYY-MM-DD format
3888
+ */
3889
+ date: string;
3890
+ };
3891
+ query?: never;
3892
+ url: '/v1/user/activity/date/{date}';
3893
+ };
3894
+ export type DeleteUserActivityByDateErrors = {
3895
+ /**
3896
+ * Unauthorized (session)
3897
+ */
3898
+ 401: Error401;
3899
+ /**
3900
+ * Internal Server Error
3901
+ */
3902
+ 500: Error500;
3903
+ };
3904
+ export type DeleteUserActivityByDateError = DeleteUserActivityByDateErrors[keyof DeleteUserActivityByDateErrors];
3905
+ export type DeleteUserActivityByDateResponses = {
3906
+ /**
3907
+ * OK
3908
+ */
3909
+ 200: {
3910
+ deletedCount: number;
3911
+ };
3912
+ };
3913
+ export type DeleteUserActivityByDateResponse = DeleteUserActivityByDateResponses[keyof DeleteUserActivityByDateResponses];
3914
+ export type DeleteUserActivityByIdData = {
3915
+ body?: never;
3916
+ path: {
3917
+ /**
3918
+ * Activity record ID
3919
+ */
3920
+ id: number;
3921
+ };
3922
+ query?: never;
3923
+ url: '/v1/user/activity/{id}';
3924
+ };
3925
+ export type DeleteUserActivityByIdErrors = {
3926
+ /**
3927
+ * Unauthorized (session)
3928
+ */
3929
+ 401: Error401;
3930
+ /**
3931
+ * Not Found
3932
+ */
3933
+ 404: Error404;
3934
+ /**
3935
+ * Internal Server Error
3936
+ */
3937
+ 500: Error500;
3938
+ };
3939
+ export type DeleteUserActivityByIdError = DeleteUserActivityByIdErrors[keyof DeleteUserActivityByIdErrors];
3940
+ export type DeleteUserActivityByIdResponses = {
3941
+ /**
3942
+ * Activity deleted
3943
+ */
3944
+ 204: void;
3945
+ };
3946
+ export type DeleteUserActivityByIdResponse = DeleteUserActivityByIdResponses[keyof DeleteUserActivityByIdResponses];
3806
3947
  export type ExportUserDataData = {
3807
3948
  body?: never;
3808
3949
  path?: never;
@@ -3811,7 +3952,7 @@ export type ExportUserDataData = {
3811
3952
  };
3812
3953
  export type ExportUserDataErrors = {
3813
3954
  /**
3814
- * Unauthorized
3955
+ * Unauthorized (session)
3815
3956
  */
3816
3957
  401: Error401;
3817
3958
  /**
@@ -3835,7 +3976,7 @@ export type ListUserLabsData = {
3835
3976
  };
3836
3977
  export type ListUserLabsErrors = {
3837
3978
  /**
3838
- * Unauthorized
3979
+ * Unauthorized (session)
3839
3980
  */
3840
3981
  401: Error401;
3841
3982
  /**
@@ -3851,6 +3992,72 @@ export type ListUserLabsResponses = {
3851
3992
  200: Array<UserLabFeature>;
3852
3993
  };
3853
3994
  export type ListUserLabsResponse = ListUserLabsResponses[keyof ListUserLabsResponses];
3995
+ export type UnenrollUserLabData = {
3996
+ body?: never;
3997
+ path: {
3998
+ /**
3999
+ * Lab feature key
4000
+ */
4001
+ key: string;
4002
+ };
4003
+ query?: never;
4004
+ url: '/v1/user/labs/{key}';
4005
+ };
4006
+ export type UnenrollUserLabErrors = {
4007
+ /**
4008
+ * Unauthorized (session)
4009
+ */
4010
+ 401: Error401;
4011
+ /**
4012
+ * Not Found
4013
+ */
4014
+ 404: Error404;
4015
+ /**
4016
+ * Internal Server Error
4017
+ */
4018
+ 500: Error500;
4019
+ };
4020
+ export type UnenrollUserLabError = UnenrollUserLabErrors[keyof UnenrollUserLabErrors];
4021
+ export type UnenrollUserLabResponses = {
4022
+ /**
4023
+ * Unenrolled successfully
4024
+ */
4025
+ 204: void;
4026
+ };
4027
+ export type UnenrollUserLabResponse = UnenrollUserLabResponses[keyof UnenrollUserLabResponses];
4028
+ export type EnrollUserLabData = {
4029
+ body?: never;
4030
+ path: {
4031
+ /**
4032
+ * Lab feature key
4033
+ */
4034
+ key: string;
4035
+ };
4036
+ query?: never;
4037
+ url: '/v1/user/labs/{key}';
4038
+ };
4039
+ export type EnrollUserLabErrors = {
4040
+ /**
4041
+ * Unauthorized (session)
4042
+ */
4043
+ 401: Error401;
4044
+ /**
4045
+ * Not Found
4046
+ */
4047
+ 404: Error404;
4048
+ /**
4049
+ * Internal Server Error
4050
+ */
4051
+ 500: Error500;
4052
+ };
4053
+ export type EnrollUserLabError = EnrollUserLabErrors[keyof EnrollUserLabErrors];
4054
+ export type EnrollUserLabResponses = {
4055
+ /**
4056
+ * Enrolled successfully
4057
+ */
4058
+ 204: void;
4059
+ };
4060
+ export type EnrollUserLabResponse = EnrollUserLabResponses[keyof EnrollUserLabResponses];
3854
4061
  export type ListCollectionsData = {
3855
4062
  body?: never;
3856
4063
  path?: never;
@@ -3860,19 +4067,13 @@ export type ListCollectionsData = {
3860
4067
  */
3861
4068
  visibility?: 'public' | 'private';
3862
4069
  /**
3863
- * Cursor offset for pagination
4070
+ * Opaque pagination cursor token
3864
4071
  */
3865
- cursor?: number;
3866
- /**
3867
- * Page number (1-indexed)
3868
- *
3869
- * @deprecated
3870
- */
3871
- page?: number;
4072
+ cursor?: string;
3872
4073
  /**
3873
4074
  * Items per page
3874
4075
  */
3875
- limit?: number;
4076
+ take?: number;
3876
4077
  };
3877
4078
  url: '/v1/collections';
3878
4079
  };
@@ -3882,7 +4083,7 @@ export type ListCollectionsErrors = {
3882
4083
  */
3883
4084
  400: Error400;
3884
4085
  /**
3885
- * Unauthorized
4086
+ * Unauthorized (session)
3886
4087
  */
3887
4088
  401: Error401;
3888
4089
  /**
@@ -3918,7 +4119,7 @@ export type CreateCollectionErrors = {
3918
4119
  */
3919
4120
  400: Error400;
3920
4121
  /**
3921
- * Unauthorized
4122
+ * Unauthorized (session)
3922
4123
  */
3923
4124
  401: Error401;
3924
4125
  /**
@@ -3959,7 +4160,7 @@ export type DeleteCollectionErrors = {
3959
4160
  */
3960
4161
  400: Error400;
3961
4162
  /**
3962
- * Unauthorized
4163
+ * Unauthorized (session)
3963
4164
  */
3964
4165
  401: Error401;
3965
4166
  /**
@@ -3997,19 +4198,13 @@ export type GetCollectionData = {
3997
4198
  };
3998
4199
  query?: {
3999
4200
  /**
4000
- * Cursor offset for paginated segments
4001
- */
4002
- cursor?: number;
4003
- /**
4004
- * Page number (1-indexed)
4005
- *
4006
- * @deprecated
4201
+ * Opaque pagination cursor token for paginated segments
4007
4202
  */
4008
- page?: number;
4203
+ cursor?: string;
4009
4204
  /**
4010
4205
  * Items per page
4011
4206
  */
4012
- limit?: number;
4207
+ take?: number;
4013
4208
  };
4014
4209
  url: '/v1/collections/{id}';
4015
4210
  };
@@ -4019,7 +4214,7 @@ export type GetCollectionErrors = {
4019
4214
  */
4020
4215
  400: Error400;
4021
4216
  /**
4022
- * Unauthorized
4217
+ * Unauthorized (session)
4023
4218
  */
4024
4219
  401: Error401;
4025
4220
  /**
@@ -4067,7 +4262,7 @@ export type UpdateCollectionErrors = {
4067
4262
  */
4068
4263
  400: Error400;
4069
4264
  /**
4070
- * Unauthorized
4265
+ * Unauthorized (session)
4071
4266
  */
4072
4267
  401: Error401;
4073
4268
  /**
@@ -4090,19 +4285,122 @@ export type UpdateCollectionErrors = {
4090
4285
  export type UpdateCollectionError = UpdateCollectionErrors[keyof UpdateCollectionErrors];
4091
4286
  export type UpdateCollectionResponses = {
4092
4287
  /**
4093
- * OK
4288
+ * OK
4289
+ */
4290
+ 200: Collection;
4291
+ };
4292
+ export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCollectionResponses];
4293
+ export type AddSegmentToCollectionData = {
4294
+ body: {
4295
+ /**
4296
+ * UUID of the segment to add
4297
+ */
4298
+ segmentUuid: string;
4299
+ /**
4300
+ * Optional annotation
4301
+ */
4302
+ note?: string;
4303
+ };
4304
+ path: {
4305
+ /**
4306
+ * Collection ID
4307
+ */
4308
+ id: number;
4309
+ };
4310
+ query?: never;
4311
+ url: '/v1/collections/{id}/segments';
4312
+ };
4313
+ export type AddSegmentToCollectionErrors = {
4314
+ /**
4315
+ * Bad Request
4316
+ */
4317
+ 400: Error400;
4318
+ /**
4319
+ * Unauthorized (session)
4320
+ */
4321
+ 401: Error401;
4322
+ /**
4323
+ * Forbidden
4324
+ */
4325
+ 403: Error403;
4326
+ /**
4327
+ * Not Found
4328
+ */
4329
+ 404: Error404;
4330
+ /**
4331
+ * Too Many Requests
4332
+ */
4333
+ 429: Error429;
4334
+ /**
4335
+ * Internal Server Error
4336
+ */
4337
+ 500: Error500;
4338
+ };
4339
+ export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4340
+ export type AddSegmentToCollectionResponses = {
4341
+ /**
4342
+ * No Content
4343
+ */
4344
+ 204: void;
4345
+ };
4346
+ export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4347
+ export type RemoveSegmentFromCollectionData = {
4348
+ body?: never;
4349
+ path: {
4350
+ /**
4351
+ * Collection ID
4352
+ */
4353
+ id: number;
4354
+ /**
4355
+ * Segment UUID
4356
+ */
4357
+ uuid: string;
4358
+ };
4359
+ query?: never;
4360
+ url: '/v1/collections/{id}/segments/{uuid}';
4361
+ };
4362
+ export type RemoveSegmentFromCollectionErrors = {
4363
+ /**
4364
+ * Bad Request
4365
+ */
4366
+ 400: Error400;
4367
+ /**
4368
+ * Unauthorized (session)
4369
+ */
4370
+ 401: Error401;
4371
+ /**
4372
+ * Forbidden
4373
+ */
4374
+ 403: Error403;
4375
+ /**
4376
+ * Not Found
4377
+ */
4378
+ 404: Error404;
4379
+ /**
4380
+ * Too Many Requests
4381
+ */
4382
+ 429: Error429;
4383
+ /**
4384
+ * Internal Server Error
4385
+ */
4386
+ 500: Error500;
4387
+ };
4388
+ export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4389
+ export type RemoveSegmentFromCollectionResponses = {
4390
+ /**
4391
+ * No Content
4094
4392
  */
4095
- 200: Collection;
4393
+ 204: void;
4096
4394
  };
4097
- export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCollectionResponses];
4098
- export type AddSegmentToCollectionData = {
4395
+ export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4396
+ export type UpdateCollectionSegmentData = {
4099
4397
  body: {
4100
4398
  /**
4101
- * UUID of the segment to add
4399
+ * New position in the collection
4102
4400
  */
4103
- segmentUuid: string;
4401
+ position?: number;
4104
4402
  /**
4105
- * Optional annotation
4403
+ * Updated annotation
4106
4404
  */
4107
4405
  note?: string;
4108
4406
  };
@@ -4111,17 +4409,21 @@ export type AddSegmentToCollectionData = {
4111
4409
  * Collection ID
4112
4410
  */
4113
4411
  id: number;
4412
+ /**
4413
+ * Segment UUID
4414
+ */
4415
+ uuid: string;
4114
4416
  };
4115
4417
  query?: never;
4116
- url: '/v1/collections/{id}/segments';
4418
+ url: '/v1/collections/{id}/segments/{uuid}';
4117
4419
  };
4118
- export type AddSegmentToCollectionErrors = {
4420
+ export type UpdateCollectionSegmentErrors = {
4119
4421
  /**
4120
4422
  * Bad Request
4121
4423
  */
4122
4424
  400: Error400;
4123
4425
  /**
4124
- * Unauthorized
4426
+ * Unauthorized (session)
4125
4427
  */
4126
4428
  401: Error401;
4127
4429
  /**
@@ -4141,36 +4443,41 @@ export type AddSegmentToCollectionErrors = {
4141
4443
  */
4142
4444
  500: Error500;
4143
4445
  };
4144
- export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4145
- export type AddSegmentToCollectionResponses = {
4446
+ export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4447
+ export type UpdateCollectionSegmentResponses = {
4146
4448
  /**
4147
4449
  * No Content
4148
4450
  */
4149
4451
  204: void;
4150
4452
  };
4151
- export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4152
- export type RemoveSegmentFromCollectionData = {
4453
+ export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4454
+ export type SearchCollectionSegmentsData = {
4153
4455
  body?: never;
4154
4456
  path: {
4155
4457
  /**
4156
4458
  * Collection ID
4157
4459
  */
4158
4460
  id: number;
4461
+ };
4462
+ query?: {
4159
4463
  /**
4160
- * Segment UUID
4464
+ * Opaque cursor token for pagination
4161
4465
  */
4162
- uuid: string;
4466
+ cursor?: string;
4467
+ /**
4468
+ * Items per page
4469
+ */
4470
+ take?: number;
4163
4471
  };
4164
- query?: never;
4165
- url: '/v1/collections/{id}/segments/{uuid}';
4472
+ url: '/v1/collections/{id}/search';
4166
4473
  };
4167
- export type RemoveSegmentFromCollectionErrors = {
4474
+ export type SearchCollectionSegmentsErrors = {
4168
4475
  /**
4169
4476
  * Bad Request
4170
4477
  */
4171
4478
  400: Error400;
4172
4479
  /**
4173
- * Unauthorized
4480
+ * Unauthorized (session)
4174
4481
  */
4175
4482
  401: Error401;
4176
4483
  /**
@@ -4190,45 +4497,32 @@ export type RemoveSegmentFromCollectionErrors = {
4190
4497
  */
4191
4498
  500: Error500;
4192
4499
  };
4193
- export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4194
- export type RemoveSegmentFromCollectionResponses = {
4500
+ export type SearchCollectionSegmentsError = SearchCollectionSegmentsErrors[keyof SearchCollectionSegmentsErrors];
4501
+ export type SearchCollectionSegmentsResponses = {
4195
4502
  /**
4196
- * No Content
4503
+ * OK
4197
4504
  */
4198
- 204: void;
4505
+ 200: SearchResponse;
4199
4506
  };
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
- };
4507
+ export type SearchCollectionSegmentsResponse = SearchCollectionSegmentsResponses[keyof SearchCollectionSegmentsResponses];
4508
+ export type GetCollectionStatsData = {
4509
+ body?: never;
4212
4510
  path: {
4213
4511
  /**
4214
4512
  * Collection ID
4215
4513
  */
4216
4514
  id: number;
4217
- /**
4218
- * Segment UUID
4219
- */
4220
- uuid: string;
4221
4515
  };
4222
4516
  query?: never;
4223
- url: '/v1/collections/{id}/segments/{uuid}';
4517
+ url: '/v1/collections/{id}/stats';
4224
4518
  };
4225
- export type UpdateCollectionSegmentErrors = {
4519
+ export type GetCollectionStatsErrors = {
4226
4520
  /**
4227
4521
  * Bad Request
4228
4522
  */
4229
4523
  400: Error400;
4230
4524
  /**
4231
- * Unauthorized
4525
+ * Unauthorized (session)
4232
4526
  */
4233
4527
  401: Error401;
4234
4528
  /**
@@ -4248,14 +4542,14 @@ export type UpdateCollectionSegmentErrors = {
4248
4542
  */
4249
4543
  500: Error500;
4250
4544
  };
4251
- export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4252
- export type UpdateCollectionSegmentResponses = {
4545
+ export type GetCollectionStatsError = GetCollectionStatsErrors[keyof GetCollectionStatsErrors];
4546
+ export type GetCollectionStatsResponses = {
4253
4547
  /**
4254
- * No Content
4548
+ * OK
4255
4549
  */
4256
- 204: void;
4550
+ 200: SearchStatsResponse;
4257
4551
  };
4258
- export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4552
+ export type GetCollectionStatsResponse = GetCollectionStatsResponses[keyof GetCollectionStatsResponses];
4259
4553
  export type GetAdminDashboardData = {
4260
4554
  body?: never;
4261
4555
  path?: never;
@@ -4264,7 +4558,7 @@ export type GetAdminDashboardData = {
4264
4558
  };
4265
4559
  export type GetAdminDashboardErrors = {
4266
4560
  /**
4267
- * Unauthorized
4561
+ * Unauthorized (session)
4268
4562
  */
4269
4563
  401: Error401;
4270
4564
  /**
@@ -4356,7 +4650,7 @@ export type GetAdminHealthData = {
4356
4650
  };
4357
4651
  export type GetAdminHealthErrors = {
4358
4652
  /**
4359
- * Unauthorized
4653
+ * Unauthorized (session)
4360
4654
  */
4361
4655
  401: Error401;
4362
4656
  /**
@@ -4418,7 +4712,7 @@ export type TriggerReindexErrors = {
4418
4712
  */
4419
4713
  400: Error400;
4420
4714
  /**
4421
- * Unauthorized
4715
+ * Unauthorized (session)
4422
4716
  */
4423
4717
  401: Error401;
4424
4718
  /**
@@ -4454,7 +4748,7 @@ export type ListAdminQueueStatsErrors = {
4454
4748
  */
4455
4749
  400: Error400;
4456
4750
  /**
4457
- * Unauthorized
4751
+ * Unauthorized (session)
4458
4752
  */
4459
4753
  401: Error401;
4460
4754
  /**
@@ -4476,15 +4770,15 @@ export type ListAdminQueueStatsResponses = {
4476
4770
  * Queue statistics retrieved successfully
4477
4771
  */
4478
4772
  200: Array<{
4479
- queue?: string;
4773
+ queue: string;
4480
4774
  /**
4481
4775
  * Number of jobs currently pending/active
4482
4776
  */
4483
- stuckCount?: number;
4777
+ stuckCount: number;
4484
4778
  /**
4485
4779
  * Number of failed jobs
4486
4780
  */
4487
- failedCount?: number;
4781
+ failedCount: number;
4488
4782
  }>;
4489
4783
  };
4490
4784
  export type ListAdminQueueStatsResponse = ListAdminQueueStatsResponses[keyof ListAdminQueueStatsResponses];
@@ -4505,7 +4799,7 @@ export type GetAdminQueueErrors = {
4505
4799
  */
4506
4800
  400: Error400;
4507
4801
  /**
4508
- * Unauthorized
4802
+ * Unauthorized (session)
4509
4803
  */
4510
4804
  401: Error401;
4511
4805
  /**
@@ -4590,7 +4884,7 @@ export type ListAdminQueueFailedErrors = {
4590
4884
  */
4591
4885
  400: Error400;
4592
4886
  /**
4593
- * Unauthorized
4887
+ * Unauthorized (session)
4594
4888
  */
4595
4889
  401: Error401;
4596
4890
  /**
@@ -4615,19 +4909,19 @@ export type ListAdminQueueFailedResponses = {
4615
4909
  /**
4616
4910
  * Job ID
4617
4911
  */
4618
- id?: string;
4912
+ id: string;
4619
4913
  /**
4620
4914
  * The segment ID that failed to sync
4621
4915
  */
4622
- segmentId?: number;
4916
+ segmentId: number;
4623
4917
  /**
4624
4918
  * Error message from the last attempt
4625
4919
  */
4626
- error?: string;
4920
+ error: string;
4627
4921
  /**
4628
4922
  * When the job was created
4629
4923
  */
4630
- createdOn?: string;
4924
+ createdOn: string;
4631
4925
  }>;
4632
4926
  };
4633
4927
  export type ListAdminQueueFailedResponse = ListAdminQueueFailedResponses[keyof ListAdminQueueFailedResponses];
@@ -4648,7 +4942,7 @@ export type RetryAdminQueueFailedErrors = {
4648
4942
  */
4649
4943
  400: Error400;
4650
4944
  /**
4651
- * Unauthorized
4945
+ * Unauthorized (session)
4652
4946
  */
4653
4947
  401: Error401;
4654
4948
  /**
@@ -4670,12 +4964,12 @@ export type RetryAdminQueueFailedResponses = {
4670
4964
  * Jobs queued for retry
4671
4965
  */
4672
4966
  200: {
4673
- success?: boolean;
4967
+ success: boolean;
4674
4968
  /**
4675
4969
  * Number of jobs queued for retry
4676
4970
  */
4677
- retriedCount?: number;
4678
- message?: string;
4971
+ retriedCount: number;
4972
+ message: string;
4679
4973
  };
4680
4974
  };
4681
4975
  export type RetryAdminQueueFailedResponse = RetryAdminQueueFailedResponses[keyof RetryAdminQueueFailedResponses];
@@ -4696,7 +4990,7 @@ export type PurgeAdminQueueFailedErrors = {
4696
4990
  */
4697
4991
  400: Error400;
4698
4992
  /**
4699
- * Unauthorized
4993
+ * Unauthorized (session)
4700
4994
  */
4701
4995
  401: Error401;
4702
4996
  /**
@@ -4718,27 +5012,105 @@ export type PurgeAdminQueueFailedResponses = {
4718
5012
  * Failed jobs purged successfully
4719
5013
  */
4720
5014
  200: {
4721
- success?: boolean;
5015
+ success: boolean;
4722
5016
  /**
4723
5017
  * Number of failed jobs deleted
4724
5018
  */
4725
- purgedCount?: number;
4726
- message?: string;
5019
+ purgedCount: number;
5020
+ message: string;
4727
5021
  };
4728
5022
  };
4729
5023
  export type PurgeAdminQueueFailedResponse = PurgeAdminQueueFailedResponses[keyof PurgeAdminQueueFailedResponses];
5024
+ export type ClearAdminImpersonationData = {
5025
+ body?: never;
5026
+ path?: never;
5027
+ query?: never;
5028
+ url: '/v1/admin/impersonation';
5029
+ };
5030
+ export type ClearAdminImpersonationErrors = {
5031
+ /**
5032
+ * Forbidden
5033
+ */
5034
+ 403: Error403;
5035
+ /**
5036
+ * Too Many Requests
5037
+ */
5038
+ 429: Error429;
5039
+ /**
5040
+ * Internal Server Error
5041
+ */
5042
+ 500: Error500;
5043
+ };
5044
+ export type ClearAdminImpersonationError = ClearAdminImpersonationErrors[keyof ClearAdminImpersonationErrors];
5045
+ export type ClearAdminImpersonationResponses = {
5046
+ /**
5047
+ * Impersonation session cleared
5048
+ */
5049
+ 200: {
5050
+ message: string;
5051
+ };
5052
+ };
5053
+ export type ClearAdminImpersonationResponse = ClearAdminImpersonationResponses[keyof ClearAdminImpersonationResponses];
5054
+ export type ImpersonateAdminUserData = {
5055
+ body: {
5056
+ /**
5057
+ * User ID to impersonate
5058
+ */
5059
+ userId: number;
5060
+ };
5061
+ path?: never;
5062
+ query?: never;
5063
+ url: '/v1/admin/impersonation';
5064
+ };
5065
+ export type ImpersonateAdminUserErrors = {
5066
+ /**
5067
+ * Bad Request
5068
+ */
5069
+ 400: Error400;
5070
+ /**
5071
+ * Forbidden
5072
+ */
5073
+ 403: Error403;
5074
+ /**
5075
+ * Not Found
5076
+ */
5077
+ 404: Error404;
5078
+ /**
5079
+ * Too Many Requests
5080
+ */
5081
+ 429: Error429;
5082
+ /**
5083
+ * Internal Server Error
5084
+ */
5085
+ 500: Error500;
5086
+ };
5087
+ export type ImpersonateAdminUserError = ImpersonateAdminUserErrors[keyof ImpersonateAdminUserErrors];
5088
+ export type ImpersonateAdminUserResponses = {
5089
+ /**
5090
+ * Impersonation session created
5091
+ */
5092
+ 200: {
5093
+ message: string;
5094
+ user: {
5095
+ id: number;
5096
+ username: string;
5097
+ email: string;
5098
+ };
5099
+ };
5100
+ };
5101
+ export type ImpersonateAdminUserResponse = ImpersonateAdminUserResponses[keyof ImpersonateAdminUserResponses];
4730
5102
  export type ListAdminReportsData = {
4731
5103
  body?: never;
4732
5104
  path?: never;
4733
5105
  query?: {
4734
5106
  /**
4735
- * Cursor for pagination (report ID to start after)
5107
+ * Opaque pagination cursor token
4736
5108
  */
4737
- cursor?: number;
5109
+ cursor?: string;
4738
5110
  /**
4739
5111
  * Number of results per page
4740
5112
  */
4741
- limit?: number;
5113
+ take?: number;
4742
5114
  /**
4743
5115
  * Filter by report status
4744
5116
  */
@@ -4764,15 +5136,15 @@ export type ListAdminReportsData = {
4764
5136
  */
4765
5137
  'target.segmentUuid'?: string;
4766
5138
  /**
4767
- * Filter by review check run ID
5139
+ * Filter by audit run ID
4768
5140
  */
4769
- reviewCheckRunId?: number;
5141
+ auditRunId?: number;
4770
5142
  };
4771
5143
  url: '/v1/admin/reports';
4772
5144
  };
4773
5145
  export type ListAdminReportsErrors = {
4774
5146
  /**
4775
- * Unauthorized
5147
+ * Unauthorized (session)
4776
5148
  */
4777
5149
  401: Error401;
4778
5150
  /**
@@ -4813,7 +5185,7 @@ export type UpdateAdminReportErrors = {
4813
5185
  */
4814
5186
  400: Error400;
4815
5187
  /**
4816
- * Unauthorized
5188
+ * Unauthorized (session)
4817
5189
  */
4818
5190
  401: Error401;
4819
5191
  /**
@@ -4841,56 +5213,15 @@ export type UpdateAdminReportResponses = {
4841
5213
  200: Report;
4842
5214
  };
4843
5215
  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 = {
5216
+ export type ListAdminMediaAuditsData = {
4886
5217
  body?: never;
4887
5218
  path?: never;
4888
5219
  query?: never;
4889
- url: '/v1/admin/review/checks';
5220
+ url: '/v1/admin/media/audits';
4890
5221
  };
4891
- export type ListAdminReviewChecksErrors = {
5222
+ export type ListAdminMediaAuditsErrors = {
4892
5223
  /**
4893
- * Unauthorized
5224
+ * Unauthorized (session)
4894
5225
  */
4895
5226
  401: Error401;
4896
5227
  /**
@@ -4906,15 +5237,15 @@ export type ListAdminReviewChecksErrors = {
4906
5237
  */
4907
5238
  500: Error500;
4908
5239
  };
4909
- export type ListAdminReviewChecksError = ListAdminReviewChecksErrors[keyof ListAdminReviewChecksErrors];
4910
- export type ListAdminReviewChecksResponses = {
5240
+ export type ListAdminMediaAuditsError = ListAdminMediaAuditsErrors[keyof ListAdminMediaAuditsErrors];
5241
+ export type ListAdminMediaAuditsResponses = {
4911
5242
  /**
4912
5243
  * OK
4913
5244
  */
4914
- 200: Array<ReviewCheck>;
5245
+ 200: Array<MediaAudit>;
4915
5246
  };
4916
- export type ListAdminReviewChecksResponse = ListAdminReviewChecksResponses[keyof ListAdminReviewChecksResponses];
4917
- export type UpdateAdminReviewCheckData = {
5247
+ export type ListAdminMediaAuditsResponse = ListAdminMediaAuditsResponses[keyof ListAdminMediaAuditsResponses];
5248
+ export type UpdateAdminMediaAuditData = {
4918
5249
  body: {
4919
5250
  /**
4920
5251
  * New threshold values
@@ -4923,26 +5254,26 @@ export type UpdateAdminReviewCheckData = {
4923
5254
  [key: string]: unknown;
4924
5255
  };
4925
5256
  /**
4926
- * Enable or disable this check
5257
+ * Enable or disable this audit
4927
5258
  */
4928
5259
  enabled?: boolean;
4929
5260
  };
4930
5261
  path: {
4931
5262
  /**
4932
- * Check name identifier
5263
+ * Audit name identifier
4933
5264
  */
4934
5265
  name: string;
4935
5266
  };
4936
5267
  query?: never;
4937
- url: '/v1/admin/review/checks/{name}';
5268
+ url: '/v1/admin/media/audits/{name}';
4938
5269
  };
4939
- export type UpdateAdminReviewCheckErrors = {
5270
+ export type UpdateAdminMediaAuditErrors = {
4940
5271
  /**
4941
5272
  * Bad Request
4942
5273
  */
4943
5274
  400: Error400;
4944
5275
  /**
4945
- * Unauthorized
5276
+ * Unauthorized (session)
4946
5277
  */
4947
5278
  401: Error401;
4948
5279
  /**
@@ -4962,76 +5293,33 @@ export type UpdateAdminReviewCheckErrors = {
4962
5293
  */
4963
5294
  500: Error500;
4964
5295
  };
4965
- export type UpdateAdminReviewCheckError = UpdateAdminReviewCheckErrors[keyof UpdateAdminReviewCheckErrors];
4966
- export type UpdateAdminReviewCheckResponses = {
5296
+ export type UpdateAdminMediaAuditError = UpdateAdminMediaAuditErrors[keyof UpdateAdminMediaAuditErrors];
5297
+ export type UpdateAdminMediaAuditResponses = {
4967
5298
  /**
4968
- * Check updated successfully
5299
+ * Audit updated successfully
4969
5300
  */
4970
- 200: ReviewCheck;
5301
+ 200: MediaAudit;
4971
5302
  };
4972
- export type UpdateAdminReviewCheckResponse = UpdateAdminReviewCheckResponses[keyof UpdateAdminReviewCheckResponses];
4973
- export type ListAdminReviewRunsData = {
5303
+ export type UpdateAdminMediaAuditResponse = UpdateAdminMediaAuditResponses[keyof UpdateAdminMediaAuditResponses];
5304
+ export type RunAdminMediaAuditData = {
4974
5305
  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;
5306
+ path: {
4985
5307
  /**
4986
- * Number of results per page
5308
+ * Audit name to run, or "all" to run all enabled audits
4987
5309
  */
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;
5310
+ name: string;
5018
5311
  };
5019
- };
5020
- export type ListAdminReviewRunsResponse = ListAdminReviewRunsResponses[keyof ListAdminReviewRunsResponses];
5021
- export type GetAdminReviewRunData = {
5022
- body?: never;
5023
- path: {
5312
+ query?: {
5024
5313
  /**
5025
- * Run ID
5314
+ * Optional category filter
5026
5315
  */
5027
- id: number;
5316
+ category?: 'ANIME' | 'JDRAMA';
5028
5317
  };
5029
- query?: never;
5030
- url: '/v1/admin/review/runs/{id}';
5318
+ url: '/v1/admin/media/audits/{name}/run';
5031
5319
  };
5032
- export type GetAdminReviewRunErrors = {
5320
+ export type RunAdminMediaAuditErrors = {
5033
5321
  /**
5034
- * Unauthorized
5322
+ * Unauthorized (session)
5035
5323
  */
5036
5324
  401: Error401;
5037
5325
  /**
@@ -5051,94 +5339,42 @@ export type GetAdminReviewRunErrors = {
5051
5339
  */
5052
5340
  500: Error500;
5053
5341
  };
5054
- export type GetAdminReviewRunError = GetAdminReviewRunErrors[keyof GetAdminReviewRunErrors];
5055
- export type GetAdminReviewRunResponses = {
5342
+ export type RunAdminMediaAuditError = RunAdminMediaAuditErrors[keyof RunAdminMediaAuditErrors];
5343
+ export type RunAdminMediaAuditResponses = {
5056
5344
  /**
5057
- * OK
5345
+ * Audit run completed
5058
5346
  */
5059
- 200: {
5060
- run: ReviewCheckRun;
5061
- reports: Array<Report>;
5062
- };
5347
+ 200: RunAuditResponse;
5063
5348
  };
5064
- export type GetAdminReviewRunResponse = GetAdminReviewRunResponses[keyof GetAdminReviewRunResponses];
5065
- export type ListAdminReviewAllowlistData = {
5349
+ export type RunAdminMediaAuditResponse = RunAdminMediaAuditResponses[keyof RunAdminMediaAuditResponses];
5350
+ export type ListAdminMediaAuditRunsData = {
5066
5351
  body?: never;
5067
5352
  path?: never;
5068
5353
  query?: {
5069
5354
  /**
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
5355
+ * Filter by audit name
5110
5356
  */
5111
- mediaId: number;
5357
+ auditName?: string;
5112
5358
  /**
5113
- * Episode number (for episode-level checks)
5359
+ * Opaque pagination cursor token
5114
5360
  */
5115
- episodeNumber?: number;
5361
+ cursor?: string;
5116
5362
  /**
5117
- * Reason for allowlisting
5363
+ * Number of results per page
5118
5364
  */
5119
- reason?: string;
5365
+ take?: number;
5120
5366
  };
5121
- path?: never;
5122
- query?: never;
5123
- url: '/v1/admin/review/allowlist';
5367
+ url: '/v1/admin/media/audits/runs';
5124
5368
  };
5125
- export type CreateAdminReviewAllowlistEntryErrors = {
5126
- /**
5127
- * Bad Request
5128
- */
5129
- 400: Error400;
5369
+ export type ListAdminMediaAuditRunsErrors = {
5130
5370
  /**
5131
- * Unauthorized
5371
+ * Unauthorized (session)
5132
5372
  */
5133
5373
  401: Error401;
5134
5374
  /**
5135
5375
  * Forbidden
5136
5376
  */
5137
5377
  403: Error403;
5138
- /**
5139
- * Conflict
5140
- */
5141
- 409: Error409;
5142
5378
  /**
5143
5379
  * Too Many Requests
5144
5380
  */
@@ -5148,28 +5384,31 @@ export type CreateAdminReviewAllowlistEntryErrors = {
5148
5384
  */
5149
5385
  500: Error500;
5150
5386
  };
5151
- export type CreateAdminReviewAllowlistEntryError = CreateAdminReviewAllowlistEntryErrors[keyof CreateAdminReviewAllowlistEntryErrors];
5152
- export type CreateAdminReviewAllowlistEntryResponses = {
5387
+ export type ListAdminMediaAuditRunsError = ListAdminMediaAuditRunsErrors[keyof ListAdminMediaAuditRunsErrors];
5388
+ export type ListAdminMediaAuditRunsResponses = {
5153
5389
  /**
5154
- * Added to allowlist
5390
+ * OK
5155
5391
  */
5156
- 201: ReviewAllowlist;
5392
+ 200: {
5393
+ runs: Array<MediaAuditRun>;
5394
+ pagination: OpaqueCursorPagination;
5395
+ };
5157
5396
  };
5158
- export type CreateAdminReviewAllowlistEntryResponse = CreateAdminReviewAllowlistEntryResponses[keyof CreateAdminReviewAllowlistEntryResponses];
5159
- export type DeleteAdminReviewAllowlistEntryData = {
5397
+ export type ListAdminMediaAuditRunsResponse = ListAdminMediaAuditRunsResponses[keyof ListAdminMediaAuditRunsResponses];
5398
+ export type GetAdminMediaAuditRunData = {
5160
5399
  body?: never;
5161
5400
  path: {
5162
5401
  /**
5163
- * Allowlist entry ID
5402
+ * Run ID
5164
5403
  */
5165
5404
  id: number;
5166
5405
  };
5167
5406
  query?: never;
5168
- url: '/v1/admin/review/allowlist/{id}';
5407
+ url: '/v1/admin/media/audits/runs/{id}';
5169
5408
  };
5170
- export type DeleteAdminReviewAllowlistEntryErrors = {
5409
+ export type GetAdminMediaAuditRunErrors = {
5171
5410
  /**
5172
- * Unauthorized
5411
+ * Unauthorized (session)
5173
5412
  */
5174
5413
  401: Error401;
5175
5414
  /**
@@ -5189,12 +5428,15 @@ export type DeleteAdminReviewAllowlistEntryErrors = {
5189
5428
  */
5190
5429
  500: Error500;
5191
5430
  };
5192
- export type DeleteAdminReviewAllowlistEntryError = DeleteAdminReviewAllowlistEntryErrors[keyof DeleteAdminReviewAllowlistEntryErrors];
5193
- export type DeleteAdminReviewAllowlistEntryResponses = {
5431
+ export type GetAdminMediaAuditRunError = GetAdminMediaAuditRunErrors[keyof GetAdminMediaAuditRunErrors];
5432
+ export type GetAdminMediaAuditRunResponses = {
5194
5433
  /**
5195
- * Removed from allowlist
5434
+ * OK
5196
5435
  */
5197
- 204: void;
5436
+ 200: {
5437
+ run: MediaAuditRun;
5438
+ reports: Array<Report>;
5439
+ };
5198
5440
  };
5199
- export type DeleteAdminReviewAllowlistEntryResponse = DeleteAdminReviewAllowlistEntryResponses[keyof DeleteAdminReviewAllowlistEntryResponses];
5441
+ export type GetAdminMediaAuditRunResponse = GetAdminMediaAuditRunResponses[keyof GetAdminMediaAuditRunResponses];
5200
5442
  //# sourceMappingURL=types.gen.d.ts.map