@brigadasos/nadeshiko-sdk 1.4.3-dev.0ffbf39 → 1.4.3-dev.2ba18e0

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