@brigadasos/nadeshiko-sdk 1.4.3-dev.e5c01f0 → 1.5.0-dev.411cb7c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  export type ClientOptions = {
2
- baseUrl: 'http://localhost:5000' | 'https://api.nadeshiko.co' | (string & {});
2
+ baseUrl: 'https://api.nadeshiko.co' | (string & {});
3
3
  };
4
4
  /**
5
5
  * A media filter entry with optional episode restriction
@@ -108,11 +108,11 @@ export type SearchRequest = {
108
108
  /**
109
109
  * Max amount of entries by response
110
110
  */
111
- limit?: number;
111
+ take?: number;
112
112
  /**
113
- * Current page of search
113
+ * Opaque cursor token returned from the previous search page
114
114
  */
115
- cursor?: Array<number>;
115
+ cursor?: string;
116
116
  /**
117
117
  * Sort configuration
118
118
  */
@@ -144,6 +144,10 @@ export type Segment = {
144
144
  * Unique identifier for the segment
145
145
  */
146
146
  uuid: string;
147
+ /**
148
+ * Public identifier for the segment (use this instead of uuid in public URLs)
149
+ */
150
+ publicId: string;
147
151
  /**
148
152
  * Position of the segment within the episode
149
153
  */
@@ -247,9 +251,14 @@ export type ExternalId = {
247
251
  */
248
252
  export type Seiyuu = {
249
253
  /**
250
- * AniList staff ID
254
+ * Internal seiyuu ID
251
255
  */
252
256
  id: number;
257
+ /**
258
+ * Public identifier for the seiyuu (use this in public URLs)
259
+ */
260
+ publicId: string;
261
+ externalIds: ExternalId;
253
262
  /**
254
263
  * Japanese name of the voice actor
255
264
  */
@@ -294,9 +303,13 @@ export type MediaCharacter = {
294
303
  */
295
304
  export type Media = {
296
305
  /**
297
- * Unique identifier for the media
306
+ * Internal unique identifier for the media
298
307
  */
299
308
  id: number;
309
+ /**
310
+ * Public identifier for the media (use this in public URLs)
311
+ */
312
+ publicId: string;
300
313
  externalIds: ExternalId;
301
314
  /**
302
315
  * Original Japanese name of the media
@@ -371,31 +384,31 @@ export type PaginationInfo = {
371
384
  /**
372
385
  * Whether there are more results after this page
373
386
  */
374
- hasMore?: boolean;
387
+ hasMore: boolean;
375
388
  /**
376
389
  * Estimated total number of matching segments
377
390
  */
378
- estimatedTotalHits?: number;
391
+ estimatedTotalHits: number;
379
392
  /**
380
393
  * Whether estimatedTotalHits is exact or a lower bound
381
394
  */
382
- estimatedTotalHitsRelation?: 'EXACT' | 'LOWER_BOUND';
395
+ estimatedTotalHitsRelation: 'EXACT' | 'LOWER_BOUND';
383
396
  /**
384
- * Cursor for fetching the next page (undefined when hasMore is false)
397
+ * Opaque cursor token for fetching the next page (`null` when hasMore is false)
385
398
  */
386
- cursor?: Array<number>;
399
+ cursor: string;
387
400
  };
388
401
  export type SearchResponse = {
389
- segments?: Array<Segment>;
390
- includes?: {
402
+ segments: Array<Segment>;
403
+ includes: {
391
404
  /**
392
405
  * Media objects keyed by mediaId
393
406
  */
394
- media?: {
407
+ media: {
395
408
  [key: string]: Media;
396
409
  };
397
410
  };
398
- pagination?: PaginationInfo;
411
+ pagination: PaginationInfo;
399
412
  };
400
413
  /**
401
414
  * Bad Request error response
@@ -615,20 +628,20 @@ export type MediaSearchStats = {
615
628
  * Count of entries grouped by media category
616
629
  */
617
630
  export type CategoryCount = {
618
- category?: Category;
631
+ category: Category;
619
632
  /**
620
633
  * Number of entries in this category
621
634
  */
622
- count?: number;
635
+ count: number;
623
636
  };
624
637
  export type SearchStatsResponse = {
625
- media?: Array<MediaSearchStats>;
626
- categories?: Array<CategoryCount>;
627
- includes?: {
638
+ media: Array<MediaSearchStats>;
639
+ categories: Array<CategoryCount>;
640
+ includes: {
628
641
  /**
629
642
  * Media objects keyed by mediaId
630
643
  */
631
- media?: {
644
+ media: {
632
645
  [key: string]: Media;
633
646
  };
634
647
  };
@@ -673,27 +686,27 @@ export type WordMatch = {
673
686
  /**
674
687
  * The word that was searched for
675
688
  */
676
- word?: string;
689
+ word: string;
677
690
  /**
678
691
  * Indicates whether the word was found in any segment
679
692
  */
680
- isMatch?: boolean;
693
+ isMatch: boolean;
681
694
  /**
682
695
  * Total number of times this word appears across all media
683
696
  */
684
- matchCount?: number;
697
+ matchCount: number;
685
698
  /**
686
699
  * List of media containing this word
687
700
  */
688
- media?: Array<WordMatchMedia>;
701
+ media: Array<WordMatchMedia>;
689
702
  };
690
703
  export type SearchMultipleResponse = {
691
- results?: Array<WordMatch>;
692
- includes?: {
704
+ results: Array<WordMatch>;
705
+ includes: {
693
706
  /**
694
707
  * Media objects keyed by mediaId
695
708
  */
696
- media?: {
709
+ media: {
697
710
  [key: string]: Media;
698
711
  };
699
712
  };
@@ -701,32 +714,29 @@ export type SearchMultipleResponse = {
701
714
  /**
702
715
  * Resource to expand in media responses
703
716
  */
704
- export type MediaIncludeExpansion = 'media' | 'media.characters';
717
+ export type MediaIncludeExpansion = 'media.characters';
705
718
  /**
706
- * Cursor pagination metadata
719
+ * Opaque cursor pagination metadata
707
720
  */
708
- export type CursorPagination = {
721
+ export type OpaqueCursorPagination = {
709
722
  /**
710
723
  * Whether more results are available
711
724
  */
712
725
  hasMore: boolean;
713
726
  /**
714
- * Cursor for the next page (`null` when `hasMore` is `false`)
727
+ * Opaque token for the next page (`null` when `hasMore` is `false`)
715
728
  */
716
- cursor: number;
729
+ cursor: string;
717
730
  };
718
731
  export type MediaListResponse = {
719
732
  media: Array<Media>;
720
- pagination: CursorPagination;
733
+ pagination: OpaqueCursorPagination;
721
734
  };
722
735
  /**
723
736
  * Character data for creating/updating media
724
737
  */
725
738
  export type CharacterInput = {
726
- /**
727
- * AniList character ID
728
- */
729
- id: number;
739
+ externalIds: ExternalId;
730
740
  /**
731
741
  * Japanese name of the character
732
742
  */
@@ -743,22 +753,21 @@ export type CharacterInput = {
743
753
  * Character's role in the media
744
754
  */
745
755
  role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
746
- /**
747
- * AniList staff ID for the Japanese voice actor
748
- */
749
- seiyuuId: number;
750
- /**
751
- * Japanese name of the voice actor
752
- */
753
- seiyuuNameJa: string;
754
- /**
755
- * English name of the voice actor
756
- */
757
- seiyuuNameEn: string;
758
- /**
759
- * Voice actor profile image URL
760
- */
761
- seiyuuImageUrl: string;
756
+ seiyuu: {
757
+ externalIds: ExternalId;
758
+ /**
759
+ * Japanese name of the voice actor
760
+ */
761
+ nameJa: string;
762
+ /**
763
+ * English name of the voice actor
764
+ */
765
+ nameEn: string;
766
+ /**
767
+ * Voice actor profile image URL
768
+ */
769
+ imageUrl: string;
770
+ };
762
771
  };
763
772
  /**
764
773
  * Request body for creating a new media entry
@@ -869,8 +878,65 @@ export type Error409 = {
869
878
  [key: string]: string;
870
879
  };
871
880
  };
881
+ /**
882
+ * Slim media item returned by autocomplete (names + cover only)
883
+ */
884
+ export type MediaAutocompleteItem = {
885
+ /**
886
+ * Unique identifier for the media
887
+ */
888
+ id: number;
889
+ /**
890
+ * Original Japanese name of the media
891
+ */
892
+ nameJa: string;
893
+ /**
894
+ * Romaji transliteration of the media name
895
+ */
896
+ nameRomaji: string;
897
+ /**
898
+ * English name of the media
899
+ */
900
+ nameEn: string;
901
+ /**
902
+ * Full URL to the cover image
903
+ */
904
+ coverUrl: string;
905
+ category: Category;
906
+ };
872
907
  export type MediaAutocompleteResponse = {
873
- media: Array<Media>;
908
+ media: Array<MediaAutocompleteItem>;
909
+ };
910
+ /**
911
+ * Segment with internal fields. For write operations (create, update) all fields are always populated.
912
+ * For GET, optional fields are only populated when requested via include[].
913
+ *
914
+ */
915
+ export type SegmentInternal = Segment & {
916
+ /**
917
+ * Storage backend for segment assets
918
+ */
919
+ storage?: 'LOCAL' | 'R2';
920
+ /**
921
+ * Hash identifier for the segment
922
+ */
923
+ hashedId?: string;
924
+ /**
925
+ * Base path in the storage backend
926
+ */
927
+ storageBasePath?: string;
928
+ /**
929
+ * Raw WD Tagger v3 classifier output used to derive content rating
930
+ */
931
+ ratingAnalysis?: {
932
+ [key: string]: unknown;
933
+ };
934
+ /**
935
+ * POS tokenization results keyed by engine (sudachi, unidic)
936
+ */
937
+ posAnalysis?: {
938
+ [key: string]: unknown;
939
+ };
874
940
  };
875
941
  /**
876
942
  * Not Found error response
@@ -908,110 +974,343 @@ export type Error404 = {
908
974
  };
909
975
  };
910
976
  /**
911
- * Request body for updating an existing media entry (all fields optional)
977
+ * All fields are optional for partial updates
912
978
  */
913
- export type MediaUpdateRequest = {
914
- externalIds?: ExternalId;
979
+ export type SegmentUpdateRequest = {
915
980
  /**
916
- * Original Japanese name of the media
981
+ * Position of the segment within the episode
917
982
  */
918
- nameJa?: string;
983
+ position?: number;
919
984
  /**
920
- * Romaji transliteration of the media name
985
+ * Segment status
921
986
  */
922
- nameRomaji?: string;
987
+ status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
923
988
  /**
924
- * English name of the media
989
+ * Start time of the segment in milliseconds from the beginning of the episode
925
990
  */
926
- nameEn?: string;
991
+ startTimeMs?: number;
927
992
  /**
928
- * Format of the media release (e.g., TV, OVA, Movie)
993
+ * End time of the segment in milliseconds from the beginning of the episode
929
994
  */
930
- airingFormat?: string;
995
+ endTimeMs?: number;
996
+ textJa?: {
997
+ /**
998
+ * Original Japanese content of the segment
999
+ */
1000
+ content?: string;
1001
+ };
1002
+ textEs?: {
1003
+ /**
1004
+ * Spanish translation of the segment content
1005
+ */
1006
+ content?: string;
1007
+ /**
1008
+ * Whether the Spanish translation was machine-translated
1009
+ */
1010
+ isMachineTranslated?: boolean;
1011
+ };
1012
+ textEn?: {
1013
+ /**
1014
+ * English translation of the segment content
1015
+ */
1016
+ content?: string;
1017
+ /**
1018
+ * Whether the English translation was machine-translated
1019
+ */
1020
+ isMachineTranslated?: boolean;
1021
+ };
1022
+ contentRating?: ContentRating;
931
1023
  /**
932
- * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
1024
+ * Raw WD Tagger v3 classifier output used to derive content rating
933
1025
  */
934
- airingStatus?: string;
1026
+ ratingAnalysis?: {
1027
+ [key: string]: unknown;
1028
+ };
935
1029
  /**
936
- * List of genres associated with the media
1030
+ * POS tokenization results keyed by engine (sudachi, unidic)
937
1031
  */
938
- genres?: Array<string>;
1032
+ posAnalysis?: {
1033
+ [key: string]: unknown;
1034
+ };
939
1035
  /**
940
- * Storage backend for media assets
1036
+ * Storage backend for segment assets
941
1037
  */
942
1038
  storage?: 'LOCAL' | 'R2';
943
1039
  /**
944
- * Start date of the media (first airing/release)
945
- */
946
- startDate?: string;
947
- /**
948
- * End date of the media (last airing/release)
1040
+ * Hash identifier for the segment (from segment JSON)
949
1041
  */
950
- endDate?: string;
1042
+ hashedId?: string;
1043
+ };
1044
+ export type SegmentContextResponse = {
1045
+ segments: Array<Segment>;
1046
+ includes: {
1047
+ /**
1048
+ * Media objects keyed by mediaId
1049
+ */
1050
+ media?: {
1051
+ [key: string]: Media;
1052
+ };
1053
+ };
1054
+ };
1055
+ export type SegmentRevision = {
951
1056
  /**
952
- * Media category
1057
+ * Revision ID
953
1058
  */
954
- category?: 'ANIME' | 'JDRAMA';
1059
+ id: number;
955
1060
  /**
956
- * Version of the media-sub-splitter used
1061
+ * Sequential revision number per segment
957
1062
  */
958
- version?: string;
1063
+ revisionNumber: number;
959
1064
  /**
960
- * Hash salt used when generating the hash for the related media assets
1065
+ * Snapshot of editable fields at the time of the revision
961
1066
  */
962
- hashSalt?: string;
1067
+ snapshot: {
1068
+ [key: string]: unknown;
1069
+ };
963
1070
  /**
964
- * Animation studio that produced the media
1071
+ * Name of the user who made the change
965
1072
  */
966
- studio?: string;
1073
+ userName?: string;
967
1074
  /**
968
- * Airing season label for the media
1075
+ * When the revision was created
969
1076
  */
970
- seasonName?: string;
1077
+ createdAt: string;
1078
+ };
1079
+ /**
1080
+ * Ordered media series grouping
1081
+ */
1082
+ export type Series = {
971
1083
  /**
972
- * Airing year for the media
1084
+ * Series ID
973
1085
  */
974
- seasonYear?: number;
1086
+ id: number;
975
1087
  /**
976
- * Base path for R2/CDN storage (e.g. "media/21459")
1088
+ * Japanese name of the series
977
1089
  */
978
- storageBasePath?: string;
1090
+ nameJa: string;
979
1091
  /**
980
- * List of characters appearing in the media with their voice actors
1092
+ * Romaji name of the series
981
1093
  */
982
- characters?: Array<CharacterInput>;
1094
+ nameRomaji: string;
983
1095
  /**
984
- * Total number of subtitle segments available
1096
+ * English name of the series
985
1097
  */
986
- segmentCount?: number;
1098
+ nameEn: string;
987
1099
  };
988
- export type Episode = {
1100
+ export type SeriesListResponse = {
1101
+ series: Array<Series>;
1102
+ pagination: OpaqueCursorPagination;
1103
+ };
1104
+ /**
1105
+ * Series with ordered media entries
1106
+ */
1107
+ export type SeriesWithMedia = {
989
1108
  /**
990
- * ID of the media this episode belongs to
1109
+ * Series ID
991
1110
  */
992
- mediaId: number;
1111
+ id: number;
993
1112
  /**
994
- * Episode number within the media
1113
+ * Japanese name of the series
995
1114
  */
996
- episodeNumber: number;
1115
+ nameJa: string;
997
1116
  /**
998
- * English title of the episode
1117
+ * Romaji name of the series
999
1118
  */
1000
- titleEn?: string;
1119
+ nameRomaji: string;
1001
1120
  /**
1002
- * Romanized title of the episode
1121
+ * English name of the series
1003
1122
  */
1004
- titleRomaji?: string;
1123
+ nameEn: string;
1005
1124
  /**
1006
- * Japanese title of the episode
1125
+ * All media in the series, sorted by position
1007
1126
  */
1008
- titleJa?: string;
1127
+ media: Array<{
1128
+ /**
1129
+ * Position in the series (1-indexed)
1130
+ */
1131
+ position: number;
1132
+ media: Media;
1133
+ }>;
1134
+ };
1135
+ /**
1136
+ * Anime character
1137
+ */
1138
+ export type Character = {
1009
1139
  /**
1010
- * Episode description or synopsis
1140
+ * Internal character ID
1011
1141
  */
1012
- description?: string;
1142
+ id: number;
1013
1143
  /**
1014
- * When the episode originally aired
1144
+ * Public identifier for the character (use this in public URLs)
1145
+ */
1146
+ publicId: string;
1147
+ externalIds: ExternalId;
1148
+ /**
1149
+ * Japanese name of the character
1150
+ */
1151
+ nameJa: string;
1152
+ /**
1153
+ * English name of the character
1154
+ */
1155
+ nameEn: string;
1156
+ /**
1157
+ * Character image URL
1158
+ */
1159
+ imageUrl: string;
1160
+ };
1161
+ /**
1162
+ * Character with voice actor and all media appearances
1163
+ */
1164
+ export type CharacterWithMedia = Character & {
1165
+ seiyuu: Seiyuu;
1166
+ /**
1167
+ * All media this character appears in
1168
+ */
1169
+ mediaAppearances: Array<{
1170
+ media: Media;
1171
+ /**
1172
+ * Character role in this media
1173
+ */
1174
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1175
+ }>;
1176
+ };
1177
+ /**
1178
+ * Seiyuu details with optional character appearances
1179
+ */
1180
+ export type SeiyuuWithRoles = {
1181
+ /**
1182
+ * AniList staff ID
1183
+ */
1184
+ id: number;
1185
+ externalIds: ExternalId;
1186
+ /**
1187
+ * Japanese name of the voice actor
1188
+ */
1189
+ nameJa: string;
1190
+ /**
1191
+ * English name of the voice actor
1192
+ */
1193
+ nameEn: string;
1194
+ /**
1195
+ * Profile image URL
1196
+ */
1197
+ imageUrl: string;
1198
+ /**
1199
+ * Characters voiced by this seiyuu with their media appearances
1200
+ */
1201
+ characters: Array<Character & {
1202
+ media: Media;
1203
+ /**
1204
+ * Character role in this media
1205
+ */
1206
+ role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1207
+ }>;
1208
+ };
1209
+ /**
1210
+ * Request body for updating an existing media entry (all fields optional)
1211
+ */
1212
+ export type MediaUpdateRequest = {
1213
+ externalIds?: ExternalId;
1214
+ /**
1215
+ * Original Japanese name of the media
1216
+ */
1217
+ nameJa?: string;
1218
+ /**
1219
+ * Romaji transliteration of the media name
1220
+ */
1221
+ nameRomaji?: string;
1222
+ /**
1223
+ * English name of the media
1224
+ */
1225
+ nameEn?: string;
1226
+ /**
1227
+ * Format of the media release (e.g., TV, OVA, Movie)
1228
+ */
1229
+ airingFormat?: string;
1230
+ /**
1231
+ * Current airing status (FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED)
1232
+ */
1233
+ airingStatus?: string;
1234
+ /**
1235
+ * List of genres associated with the media
1236
+ */
1237
+ genres?: Array<string>;
1238
+ /**
1239
+ * Storage backend for media assets
1240
+ */
1241
+ storage?: 'LOCAL' | 'R2';
1242
+ /**
1243
+ * Start date of the media (first airing/release)
1244
+ */
1245
+ startDate?: string;
1246
+ /**
1247
+ * End date of the media (last airing/release)
1248
+ */
1249
+ endDate?: string;
1250
+ /**
1251
+ * Media category
1252
+ */
1253
+ category?: 'ANIME' | 'JDRAMA';
1254
+ /**
1255
+ * Version of the media-sub-splitter used
1256
+ */
1257
+ version?: string;
1258
+ /**
1259
+ * Hash salt used when generating the hash for the related media assets
1260
+ */
1261
+ hashSalt?: string;
1262
+ /**
1263
+ * Animation studio that produced the media
1264
+ */
1265
+ studio?: string;
1266
+ /**
1267
+ * Airing season label for the media
1268
+ */
1269
+ seasonName?: string;
1270
+ /**
1271
+ * Airing year for the media
1272
+ */
1273
+ seasonYear?: number;
1274
+ /**
1275
+ * Base path for R2/CDN storage (e.g. "media/21459")
1276
+ */
1277
+ storageBasePath?: string;
1278
+ /**
1279
+ * List of characters appearing in the media with their voice actors
1280
+ */
1281
+ characters?: Array<CharacterInput>;
1282
+ /**
1283
+ * Total number of subtitle segments available
1284
+ */
1285
+ segmentCount?: number;
1286
+ };
1287
+ export type Episode = {
1288
+ /**
1289
+ * ID of the media this episode belongs to
1290
+ */
1291
+ mediaId: number;
1292
+ /**
1293
+ * Episode number within the media
1294
+ */
1295
+ episodeNumber: number;
1296
+ /**
1297
+ * English title of the episode
1298
+ */
1299
+ titleEn?: string;
1300
+ /**
1301
+ * Romanized title of the episode
1302
+ */
1303
+ titleRomaji?: string;
1304
+ /**
1305
+ * Japanese title of the episode
1306
+ */
1307
+ titleJa?: string;
1308
+ /**
1309
+ * Episode description or synopsis
1310
+ */
1311
+ description?: string;
1312
+ /**
1313
+ * When the episode originally aired
1015
1314
  */
1016
1315
  airedAt?: string;
1017
1316
  /**
@@ -1032,7 +1331,7 @@ export type EpisodeListResponse = {
1032
1331
  * Array of episode objects
1033
1332
  */
1034
1333
  episodes: Array<Episode>;
1035
- pagination: CursorPagination;
1334
+ pagination: OpaqueCursorPagination;
1036
1335
  };
1037
1336
  export type EpisodeCreateRequest = {
1038
1337
  /**
@@ -1166,237 +1465,8 @@ export type SegmentCreateRequest = {
1166
1465
  */
1167
1466
  hashedId: string;
1168
1467
  };
1169
- /**
1170
- * Segment with internal fields (for internal API responses)
1171
- */
1172
- export type SegmentInternal = Segment & {
1173
- /**
1174
- * Storage backend for segment assets
1175
- */
1176
- storage?: 'LOCAL' | 'R2';
1177
- /**
1178
- * Hash identifier for the segment
1179
- */
1180
- hashedId?: string;
1181
- /**
1182
- * Base path in the storage backend
1183
- */
1184
- storageBasePath?: string;
1185
- /**
1186
- * Raw WD Tagger v3 classifier output used to derive content rating
1187
- */
1188
- ratingAnalysis?: {
1189
- [key: string]: unknown;
1190
- };
1191
- /**
1192
- * POS tokenization results keyed by engine (sudachi, unidic)
1193
- */
1194
- posAnalysis?: {
1195
- [key: string]: unknown;
1196
- };
1197
- };
1198
- /**
1199
- * All fields are optional for partial updates
1200
- */
1201
- export type SegmentUpdateRequest = {
1202
- /**
1203
- * Position of the segment within the episode
1204
- */
1205
- position?: number;
1206
- /**
1207
- * Segment status
1208
- */
1209
- status?: 'DELETED' | 'ACTIVE' | 'SUSPENDED' | 'VERIFIED' | 'INVALID' | 'TOO_LONG';
1210
- /**
1211
- * Start time of the segment in milliseconds from the beginning of the episode
1212
- */
1213
- startTimeMs?: number;
1214
- /**
1215
- * End time of the segment in milliseconds from the beginning of the episode
1216
- */
1217
- endTimeMs?: number;
1218
- textJa?: {
1219
- /**
1220
- * Original Japanese content of the segment
1221
- */
1222
- content?: string;
1223
- };
1224
- textEs?: {
1225
- /**
1226
- * Spanish translation of the segment content
1227
- */
1228
- content?: string;
1229
- /**
1230
- * Whether the Spanish translation was machine-translated
1231
- */
1232
- isMachineTranslated?: boolean;
1233
- };
1234
- textEn?: {
1235
- /**
1236
- * English translation of the segment content
1237
- */
1238
- content?: string;
1239
- /**
1240
- * Whether the English translation was machine-translated
1241
- */
1242
- isMachineTranslated?: boolean;
1243
- };
1244
- contentRating?: ContentRating;
1245
- /**
1246
- * Raw WD Tagger v3 classifier output used to derive content rating
1247
- */
1248
- ratingAnalysis?: {
1249
- [key: string]: unknown;
1250
- };
1251
- /**
1252
- * POS tokenization results keyed by engine (sudachi, unidic)
1253
- */
1254
- posAnalysis?: {
1255
- [key: string]: unknown;
1256
- };
1257
- /**
1258
- * Storage backend for segment assets
1259
- */
1260
- storage?: 'LOCAL' | 'R2';
1261
- /**
1262
- * Hash identifier for the segment (from segment JSON)
1263
- */
1264
- hashedId?: string;
1265
- };
1266
- export type SegmentContextResponse = {
1267
- segments: Array<Segment>;
1268
- includes?: {
1269
- /**
1270
- * Media objects keyed by mediaId
1271
- */
1272
- media?: {
1273
- [key: string]: Media;
1274
- };
1275
- };
1276
- };
1277
- /**
1278
- * Ordered media series grouping
1279
- */
1280
- export type Series = {
1281
- /**
1282
- * Series ID
1283
- */
1284
- id: number;
1285
- /**
1286
- * Japanese name of the series
1287
- */
1288
- nameJa: string;
1289
- /**
1290
- * Romaji name of the series
1291
- */
1292
- nameRomaji: string;
1293
- /**
1294
- * English name of the series
1295
- */
1296
- nameEn: string;
1297
- };
1298
- export type SeriesListResponse = {
1299
- series: Array<Series>;
1300
- pagination: CursorPagination;
1301
- };
1302
- /**
1303
- * Series with ordered media entries
1304
- */
1305
- export type SeriesWithMedia = {
1306
- /**
1307
- * Series ID
1308
- */
1309
- id: number;
1310
- /**
1311
- * Japanese name of the series
1312
- */
1313
- nameJa: string;
1314
- /**
1315
- * Romaji name of the series
1316
- */
1317
- nameRomaji: string;
1318
- /**
1319
- * English name of the series
1320
- */
1321
- nameEn: string;
1322
- /**
1323
- * All media in the series, sorted by position
1324
- */
1325
- media: Array<{
1326
- /**
1327
- * Position in the series (1-indexed)
1328
- */
1329
- position?: number;
1330
- media?: Media;
1331
- }>;
1332
- };
1333
- /**
1334
- * Anime character
1335
- */
1336
- export type Character = {
1337
- /**
1338
- * AniList character ID
1339
- */
1340
- id: number;
1341
- /**
1342
- * Japanese name of the character
1343
- */
1344
- nameJa: string;
1345
- /**
1346
- * English name of the character
1347
- */
1348
- nameEn: string;
1349
- /**
1350
- * Character image URL
1351
- */
1352
- imageUrl: string;
1353
- };
1354
- /**
1355
- * Character with voice actor and all media appearances
1356
- */
1357
- export type CharacterWithMedia = Character & {
1358
- seiyuu: Seiyuu;
1359
- /**
1360
- * All media this character appears in
1361
- */
1362
- mediaAppearances: Array<{
1363
- media?: Media;
1364
- /**
1365
- * Character role in this media
1366
- */
1367
- role?: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1368
- }>;
1369
- };
1370
- /**
1371
- * Seiyuu details with optional character appearances
1372
- */
1373
- export type SeiyuuWithRoles = {
1374
- /**
1375
- * AniList staff ID
1376
- */
1377
- id: number;
1378
- /**
1379
- * Japanese name of the voice actor
1380
- */
1381
- nameJa: string;
1382
- /**
1383
- * English name of the voice actor
1384
- */
1385
- nameEn: string;
1386
- /**
1387
- * Profile image URL
1388
- */
1389
- imageUrl: string;
1390
- /**
1391
- * Characters voiced by this seiyuu with their media appearances
1392
- */
1393
- characters: Array<Character & {
1394
- media: Media;
1395
- /**
1396
- * Character role in this media
1397
- */
1398
- role: 'MAIN' | 'SUPPORTING' | 'BACKGROUND';
1399
- }>;
1468
+ export type SegmentBatchCreateRequest = {
1469
+ segments: Array<SegmentCreateRequest>;
1400
1470
  };
1401
1471
  export type UserQuotaResponse = {
1402
1472
  /**
@@ -1434,37 +1504,53 @@ export type ReportTargetMedia = {
1434
1504
  */
1435
1505
  mediaId: number;
1436
1506
  };
1437
- export type ReportTargetEpisode = {
1507
+ export type ReportTargetSegment = {
1438
1508
  /**
1439
1509
  * Report target type
1440
1510
  */
1441
- type: 'EPISODE';
1511
+ type: 'SEGMENT';
1442
1512
  /**
1443
1513
  * Media ID this report targets
1444
1514
  */
1445
1515
  mediaId: number;
1446
1516
  /**
1447
- * Episode number this report targets
1517
+ * Episode number containing the segment
1448
1518
  */
1449
- episodeNumber: number;
1519
+ episodeNumber?: number;
1520
+ /**
1521
+ * Segment UUID this report targets
1522
+ */
1523
+ segmentUuid: string;
1450
1524
  };
1451
- export type ReportTargetSegment = {
1525
+ export type UserReportTarget = ({
1526
+ type: 'MEDIA';
1527
+ } & ReportTargetMedia) | ({
1528
+ type: 'SEGMENT';
1529
+ } & ReportTargetSegment);
1530
+ export type CreateReportRequest = {
1531
+ target: UserReportTarget;
1532
+ /**
1533
+ * Reason for the report
1534
+ */
1535
+ reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1536
+ /**
1537
+ * Optional description with additional details
1538
+ */
1539
+ description?: string;
1540
+ };
1541
+ export type ReportTargetEpisode = {
1452
1542
  /**
1453
1543
  * Report target type
1454
1544
  */
1455
- type: 'SEGMENT';
1545
+ type: 'EPISODE';
1456
1546
  /**
1457
1547
  * Media ID this report targets
1458
1548
  */
1459
1549
  mediaId: number;
1460
1550
  /**
1461
- * Episode number containing the segment
1462
- */
1463
- episodeNumber?: number;
1464
- /**
1465
- * Segment UUID this report targets
1551
+ * Episode number this report targets
1466
1552
  */
1467
- segmentUuid: string;
1553
+ episodeNumber: number;
1468
1554
  };
1469
1555
  export type ReportTarget = ({
1470
1556
  type: 'MEDIA';
@@ -1484,9 +1570,9 @@ export type Report = {
1484
1570
  source: 'USER' | 'AUTO';
1485
1571
  target: ReportTarget;
1486
1572
  /**
1487
- * ID of the auto-check run that created this report (AUTO only)
1573
+ * ID of the audit run that created this report (AUTO only)
1488
1574
  */
1489
- reviewCheckRunId?: number;
1575
+ auditRunId: number;
1490
1576
  /**
1491
1577
  * Reason for the report
1492
1578
  */
@@ -1494,11 +1580,11 @@ export type Report = {
1494
1580
  /**
1495
1581
  * Optional description with additional details
1496
1582
  */
1497
- description?: string;
1583
+ description: string;
1498
1584
  /**
1499
1585
  * Check-specific metrics (AUTO reports) or null (USER reports)
1500
1586
  */
1501
- data?: {
1587
+ data: {
1502
1588
  [key: string]: unknown;
1503
1589
  };
1504
1590
  /**
@@ -1508,11 +1594,11 @@ export type Report = {
1508
1594
  /**
1509
1595
  * Notes from the admin who reviewed the report
1510
1596
  */
1511
- adminNotes?: string;
1597
+ adminNotes: string;
1512
1598
  /**
1513
1599
  * ID of the user who submitted the report (USER reports only)
1514
1600
  */
1515
- userId?: number;
1601
+ userId: number;
1516
1602
  /**
1517
1603
  * When the report was created
1518
1604
  */
@@ -1520,35 +1606,9 @@ export type Report = {
1520
1606
  /**
1521
1607
  * When the report was last updated
1522
1608
  */
1523
- updatedAt?: string;
1524
- };
1525
- export type ReportListResponse = {
1526
- reports: Array<Report>;
1527
- pagination: CursorPagination;
1528
- };
1529
- export type UserReportTarget = ({
1530
- type: 'MEDIA';
1531
- } & ReportTargetMedia) | ({
1532
- type: 'SEGMENT';
1533
- } & ReportTargetSegment);
1534
- export type CreateReportRequest = {
1535
- target: UserReportTarget;
1536
- /**
1537
- * Reason for the report
1538
- */
1539
- reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1540
- /**
1541
- * Optional description with additional details
1542
- */
1543
- description?: string;
1609
+ updatedAt: string;
1544
1610
  };
1545
1611
  export type UserPreferences = {
1546
- /**
1547
- * Lab feature opt-in flags keyed by feature key
1548
- */
1549
- labs?: {
1550
- [key: string]: boolean;
1551
- };
1552
1612
  /**
1553
1613
  * Preferred language for media names display
1554
1614
  */
@@ -1595,17 +1655,26 @@ export type UserPreferences = {
1595
1655
  /**
1596
1656
  * Type of user activity
1597
1657
  */
1598
- export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'LIST_ADD_SEGMENT';
1658
+ export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'SHARE';
1599
1659
  export type UserActivity = {
1600
1660
  id: number;
1601
1661
  activityType: ActivityType;
1602
- segmentUuid?: string;
1603
- mediaId?: number;
1604
- searchQuery?: string;
1605
- animeName?: string;
1606
- japaneseText?: string;
1662
+ segmentUuid: string;
1663
+ mediaId: number;
1664
+ searchQuery: string;
1665
+ mediaName: string;
1666
+ japaneseText: string;
1607
1667
  createdAt: string;
1608
1668
  };
1669
+ /**
1670
+ * Activity counts for a single day, broken down by type. Only types with at least 1 event are present.
1671
+ */
1672
+ export type HeatmapDayCounts = {
1673
+ SEARCH?: number;
1674
+ SEGMENT_PLAY?: number;
1675
+ ANKI_EXPORT?: number;
1676
+ SHARE?: number;
1677
+ };
1609
1678
  /**
1610
1679
  * User segment collection
1611
1680
  */
@@ -1619,9 +1688,9 @@ export type Collection = {
1619
1688
  */
1620
1689
  name: string;
1621
1690
  /**
1622
- * User ID who owns the collection
1691
+ * Type of the collection
1623
1692
  */
1624
- userId: number;
1693
+ type: 'USER' | 'ANKI_EXPORT';
1625
1694
  /**
1626
1695
  * Visibility of the collection
1627
1696
  */
@@ -1629,15 +1698,15 @@ export type Collection = {
1629
1698
  /**
1630
1699
  * Number of segments in the collection
1631
1700
  */
1632
- segmentCount?: number;
1701
+ segmentCount: number;
1633
1702
  /**
1634
1703
  * When the collection was created
1635
1704
  */
1636
- createdAt?: string;
1705
+ createdAt: string;
1637
1706
  /**
1638
1707
  * When the collection was last updated
1639
1708
  */
1640
- updatedAt?: string;
1709
+ updatedAt: string;
1641
1710
  };
1642
1711
  export type UserExportCollection = Collection & {
1643
1712
  /**
@@ -1662,32 +1731,32 @@ export type UserExportResponse = {
1662
1731
  };
1663
1732
  export type UserLabFeature = {
1664
1733
  /**
1665
- * Unique identifier for the lab feature
1734
+ * Unique identifier for the feature
1666
1735
  */
1667
1736
  key: string;
1668
1737
  /**
1669
- * Human-readable feature name
1738
+ * Human-readable feature name (only present for labs)
1670
1739
  */
1671
- name: string;
1740
+ name?: string;
1672
1741
  /**
1673
- * Description of what the feature does
1742
+ * Description of what the feature does (only present for labs)
1674
1743
  */
1675
- description: string;
1744
+ description?: string;
1676
1745
  /**
1677
- * Whether the feature is globally available
1746
+ * Whether this feature is currently active for the user
1678
1747
  */
1679
- enabled: boolean;
1748
+ active: boolean;
1680
1749
  /**
1681
- * Whether the user has opted in to this feature
1750
+ * Whether the user can toggle this feature (lab=true, flag=false)
1682
1751
  */
1683
- userEnabled: boolean;
1752
+ userControllable: boolean;
1684
1753
  };
1685
1754
  /**
1686
1755
  * Paginated collection list response
1687
1756
  */
1688
1757
  export type CollectionListResponse = {
1689
1758
  collections: Array<Collection>;
1690
- pagination: CursorPagination;
1759
+ pagination: OpaqueCursorPagination;
1691
1760
  };
1692
1761
  /**
1693
1762
  * Request body for creating a new collection
@@ -1714,14 +1783,22 @@ export type CollectionWithSegments = {
1714
1783
  * Name of the collection
1715
1784
  */
1716
1785
  name: string;
1717
- /**
1718
- * User ID who owns the collection
1719
- */
1720
- userId: number;
1721
1786
  /**
1722
1787
  * Visibility of the collection
1723
1788
  */
1724
1789
  visibility: 'PUBLIC' | 'PRIVATE';
1790
+ /**
1791
+ * Number of segments in the collection
1792
+ */
1793
+ segmentCount: number;
1794
+ /**
1795
+ * When the collection was created
1796
+ */
1797
+ createdAt: string;
1798
+ /**
1799
+ * When the collection was last updated
1800
+ */
1801
+ updatedAt: string;
1725
1802
  /**
1726
1803
  * Saved segments with their search result data
1727
1804
  */
@@ -1729,18 +1806,18 @@ export type CollectionWithSegments = {
1729
1806
  /**
1730
1807
  * Position in the collection
1731
1808
  */
1732
- position?: number;
1809
+ position: number;
1733
1810
  /**
1734
1811
  * User annotation
1735
1812
  */
1736
- note?: string;
1737
- result?: Segment;
1813
+ note: string;
1814
+ result: Segment;
1738
1815
  }>;
1739
- includes?: {
1816
+ includes: {
1740
1817
  /**
1741
1818
  * Media objects keyed by mediaId
1742
1819
  */
1743
- media?: {
1820
+ media: {
1744
1821
  [key: string]: Media;
1745
1822
  };
1746
1823
  };
@@ -1748,7 +1825,7 @@ export type CollectionWithSegments = {
1748
1825
  * Total number of segments in the collection
1749
1826
  */
1750
1827
  totalCount: number;
1751
- pagination: CursorPagination;
1828
+ pagination: OpaqueCursorPagination;
1752
1829
  };
1753
1830
  /**
1754
1831
  * Request to reindex segments from the database into Elasticsearch
@@ -1778,44 +1855,44 @@ export type ReindexResponse = {
1778
1855
  /**
1779
1856
  * Whether the reindex operation completed successfully
1780
1857
  */
1781
- success?: boolean;
1858
+ success: boolean;
1782
1859
  /**
1783
1860
  * Human-readable message about the reindex operation
1784
1861
  */
1785
- message?: string;
1862
+ message: string;
1786
1863
  /**
1787
1864
  * Statistics about the reindex operation
1788
1865
  */
1789
- stats?: {
1866
+ stats: {
1790
1867
  /**
1791
1868
  * Total number of segments processed
1792
1869
  */
1793
- totalSegments?: number;
1870
+ totalSegments: number;
1794
1871
  /**
1795
1872
  * Number of segments successfully indexed
1796
1873
  */
1797
- successfulIndexes?: number;
1874
+ successfulIndexes: number;
1798
1875
  /**
1799
1876
  * Number of segments that failed to index
1800
1877
  */
1801
- failedIndexes?: number;
1878
+ failedIndexes: number;
1802
1879
  /**
1803
1880
  * Number of media items processed
1804
1881
  */
1805
- mediaProcessed?: number;
1882
+ mediaProcessed: number;
1806
1883
  };
1807
1884
  /**
1808
1885
  * Array of errors that occurred during reindexing (if any)
1809
1886
  */
1810
- errors?: Array<{
1887
+ errors: Array<{
1811
1888
  /**
1812
1889
  * ID of the segment that failed
1813
1890
  */
1814
- segmentId?: number;
1891
+ segmentId: number;
1815
1892
  /**
1816
1893
  * Error message
1817
1894
  */
1818
- error?: string;
1895
+ error: string;
1819
1896
  }>;
1820
1897
  };
1821
1898
  export type AdminReport = Report & {
@@ -1830,7 +1907,7 @@ export type AdminReport = Report & {
1830
1907
  };
1831
1908
  export type AdminReportListResponse = {
1832
1909
  reports: Array<AdminReport>;
1833
- pagination: CursorPagination;
1910
+ pagination: OpaqueCursorPagination;
1834
1911
  };
1835
1912
  export type UpdateReportRequest = {
1836
1913
  /**
@@ -1842,41 +1919,13 @@ export type UpdateReportRequest = {
1842
1919
  */
1843
1920
  adminNotes?: string;
1844
1921
  };
1845
- export type RunReviewResponse = {
1846
- /**
1847
- * Category filter used
1848
- */
1849
- category: string;
1850
- checksRun: Array<{
1851
- /**
1852
- * Check identifier
1853
- */
1854
- checkName: string;
1855
- /**
1856
- * Human-readable check name
1857
- */
1858
- label: string;
1859
- /**
1860
- * Number of reports created
1861
- */
1862
- resultCount: number;
1863
- /**
1864
- * ID of the created run record
1865
- */
1866
- runId: number;
1867
- }>;
1868
- /**
1869
- * Total reports created across all checks
1870
- */
1871
- totalReports: number;
1872
- };
1873
- export type ReviewCheck = {
1922
+ export type MediaAudit = {
1874
1923
  /**
1875
- * Check ID
1924
+ * Audit ID
1876
1925
  */
1877
1926
  id: number;
1878
1927
  /**
1879
- * Unique check identifier
1928
+ * Unique audit identifier
1880
1929
  */
1881
1930
  name: string;
1882
1931
  /**
@@ -1884,11 +1933,11 @@ export type ReviewCheck = {
1884
1933
  */
1885
1934
  label: string;
1886
1935
  /**
1887
- * What this check does
1936
+ * What this audit does
1888
1937
  */
1889
1938
  description: string;
1890
1939
  /**
1891
- * What level this check operates on
1940
+ * What level this audit operates on
1892
1941
  */
1893
1942
  targetType: 'MEDIA' | 'EPISODE';
1894
1943
  /**
@@ -1898,40 +1947,68 @@ export type ReviewCheck = {
1898
1947
  [key: string]: unknown;
1899
1948
  };
1900
1949
  /**
1901
- * Whether this check is active
1950
+ * Whether this audit is active
1902
1951
  */
1903
1952
  enabled: boolean;
1904
1953
  /**
1905
1954
  * Schema for threshold fields (from registry)
1906
1955
  */
1907
- thresholdSchema?: Array<{
1908
- key?: string;
1909
- label?: string;
1910
- type?: 'number' | 'boolean';
1911
- default?: number | boolean;
1956
+ thresholdSchema: Array<{
1957
+ key: string;
1958
+ label: string;
1959
+ type: 'number' | 'boolean';
1960
+ default: number | boolean;
1912
1961
  min?: number;
1913
1962
  max?: number;
1914
1963
  }>;
1915
1964
  /**
1916
- * Latest run info for this check
1965
+ * Latest run info for this audit
1917
1966
  */
1918
- latestRun?: {
1919
- id?: number;
1920
- resultCount?: number;
1921
- createdAt?: string;
1967
+ latestRun: {
1968
+ id: number;
1969
+ resultCount: number;
1970
+ createdAt: string;
1922
1971
  };
1923
- createdAt?: string;
1924
- updatedAt?: string;
1972
+ createdAt: string;
1973
+ updatedAt: string;
1974
+ };
1975
+ export type RunAuditResponse = {
1976
+ /**
1977
+ * Category filter used
1978
+ */
1979
+ category: string;
1980
+ checksRun: Array<{
1981
+ /**
1982
+ * Audit identifier
1983
+ */
1984
+ auditName: string;
1985
+ /**
1986
+ * Human-readable audit name
1987
+ */
1988
+ label: string;
1989
+ /**
1990
+ * Number of reports created
1991
+ */
1992
+ resultCount: number;
1993
+ /**
1994
+ * ID of the created run record
1995
+ */
1996
+ runId: number;
1997
+ }>;
1998
+ /**
1999
+ * Total reports created across all audits
2000
+ */
2001
+ totalReports: number;
1925
2002
  };
1926
- export type ReviewCheckRun = {
2003
+ export type MediaAuditRun = {
1927
2004
  /**
1928
2005
  * Run ID
1929
2006
  */
1930
2007
  id: number;
1931
2008
  /**
1932
- * Name of the check that was run
2009
+ * Name of the audit that was run
1933
2010
  */
1934
- checkName: string;
2011
+ auditName: string;
1935
2012
  /**
1936
2013
  * Category filter used (ANIME/JDRAMA) or null for all
1937
2014
  */
@@ -1951,32 +2028,6 @@ export type ReviewCheckRun = {
1951
2028
  */
1952
2029
  createdAt: string;
1953
2030
  };
1954
- export type ReviewAllowlist = {
1955
- /**
1956
- * Allowlist entry ID
1957
- */
1958
- id: number;
1959
- /**
1960
- * Name of the check this entry applies to
1961
- */
1962
- checkName: string;
1963
- /**
1964
- * Media ID to exclude
1965
- */
1966
- mediaId: number;
1967
- /**
1968
- * Episode number to exclude (null for media-level checks)
1969
- */
1970
- episodeNumber?: number;
1971
- /**
1972
- * Why this was allowlisted
1973
- */
1974
- reason?: string;
1975
- /**
1976
- * When this entry was created
1977
- */
1978
- createdAt: string;
1979
- };
1980
2031
  export type SearchData = {
1981
2032
  body?: SearchRequest;
1982
2033
  path?: never;
@@ -1989,7 +2040,7 @@ export type SearchErrors = {
1989
2040
  */
1990
2041
  400: Error400;
1991
2042
  /**
1992
- * Unauthorized
2043
+ * Unauthorized (API key)
1993
2044
  */
1994
2045
  401: Error401;
1995
2046
  /**
@@ -2025,7 +2076,7 @@ export type GetSearchStatsErrors = {
2025
2076
  */
2026
2077
  400: Error400;
2027
2078
  /**
2028
- * Unauthorized
2079
+ * Unauthorized (API key)
2029
2080
  */
2030
2081
  401: Error401;
2031
2082
  /**
@@ -2061,7 +2112,7 @@ export type SearchWordsErrors = {
2061
2112
  */
2062
2113
  400: Error400;
2063
2114
  /**
2064
- * Unauthorized
2115
+ * Unauthorized (API key)
2065
2116
  */
2066
2117
  401: Error401;
2067
2118
  /**
@@ -2092,11 +2143,11 @@ export type ListMediaData = {
2092
2143
  /**
2093
2144
  * Number of results per page
2094
2145
  */
2095
- limit?: number;
2146
+ take?: number;
2096
2147
  /**
2097
- * Pagination cursor offset
2148
+ * Opaque pagination cursor token
2098
2149
  */
2099
- cursor?: number;
2150
+ cursor?: string;
2100
2151
  /**
2101
2152
  * Filter by media category
2102
2153
  */
@@ -2106,7 +2157,7 @@ export type ListMediaData = {
2106
2157
  */
2107
2158
  query?: string;
2108
2159
  /**
2109
- * Resources to expand in the media response (`media.characters` implies `media`)
2160
+ * Resources to expand in the media response
2110
2161
  */
2111
2162
  include?: Array<MediaIncludeExpansion>;
2112
2163
  };
@@ -2118,7 +2169,7 @@ export type ListMediaErrors = {
2118
2169
  */
2119
2170
  400: Error400;
2120
2171
  /**
2121
- * Unauthorized
2172
+ * Unauthorized (API key)
2122
2173
  */
2123
2174
  401: Error401;
2124
2175
  /**
@@ -2154,7 +2205,7 @@ export type CreateMediaErrors = {
2154
2205
  */
2155
2206
  400: Error400;
2156
2207
  /**
2157
- * Unauthorized
2208
+ * Unauthorized (API key)
2158
2209
  */
2159
2210
  401: Error401;
2160
2211
  /**
@@ -2193,27 +2244,176 @@ export type AutocompleteMediaData = {
2193
2244
  /**
2194
2245
  * Maximum number of results to return
2195
2246
  */
2196
- limit?: number;
2247
+ take?: number;
2197
2248
  /**
2198
2249
  * Filter by media category
2199
2250
  */
2200
2251
  category?: 'ANIME' | 'JDRAMA';
2201
2252
  };
2202
- url: '/v1/media/autocomplete';
2253
+ url: '/v1/media/autocomplete';
2254
+ };
2255
+ export type AutocompleteMediaErrors = {
2256
+ /**
2257
+ * Bad Request
2258
+ */
2259
+ 400: Error400;
2260
+ /**
2261
+ * Unauthorized (API key)
2262
+ */
2263
+ 401: Error401;
2264
+ /**
2265
+ * Forbidden
2266
+ */
2267
+ 403: Error403;
2268
+ /**
2269
+ * Too Many Requests
2270
+ */
2271
+ 429: Error429;
2272
+ /**
2273
+ * Internal Server Error
2274
+ */
2275
+ 500: Error500;
2276
+ };
2277
+ export type AutocompleteMediaError = AutocompleteMediaErrors[keyof AutocompleteMediaErrors];
2278
+ export type AutocompleteMediaResponses = {
2279
+ /**
2280
+ * OK
2281
+ */
2282
+ 200: MediaAutocompleteResponse;
2283
+ };
2284
+ export type AutocompleteMediaResponse = AutocompleteMediaResponses[keyof AutocompleteMediaResponses];
2285
+ export type GetSegmentByUuidData = {
2286
+ body?: never;
2287
+ path: {
2288
+ /**
2289
+ * Segment UUID or publicId
2290
+ */
2291
+ uuid: string;
2292
+ };
2293
+ query?: {
2294
+ /**
2295
+ * Additional internal fields to include in the response
2296
+ */
2297
+ include?: Array<'ratingAnalysis' | 'posAnalysis' | 'hashedId' | 'storageBasePath' | 'storage'>;
2298
+ };
2299
+ url: '/v1/media/segments/{uuid}';
2300
+ };
2301
+ export type GetSegmentByUuidErrors = {
2302
+ /**
2303
+ * Bad Request
2304
+ */
2305
+ 400: Error400;
2306
+ /**
2307
+ * Unauthorized (API key or session)
2308
+ */
2309
+ 401: Error401;
2310
+ /**
2311
+ * Forbidden
2312
+ */
2313
+ 403: Error403;
2314
+ /**
2315
+ * Not Found
2316
+ */
2317
+ 404: Error404;
2318
+ /**
2319
+ * Too Many Requests
2320
+ */
2321
+ 429: Error429;
2322
+ /**
2323
+ * Internal Server Error
2324
+ */
2325
+ 500: Error500;
2326
+ };
2327
+ export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2328
+ export type GetSegmentByUuidResponses = {
2329
+ /**
2330
+ * Single segment response with internal fields
2331
+ */
2332
+ 200: SegmentInternal;
2333
+ };
2334
+ export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2335
+ export type UpdateSegmentByUuidData = {
2336
+ body: SegmentUpdateRequest;
2337
+ path: {
2338
+ /**
2339
+ * Segment UUID or publicId
2340
+ */
2341
+ uuid: string;
2342
+ };
2343
+ query?: never;
2344
+ url: '/v1/media/segments/{uuid}';
2345
+ };
2346
+ export type UpdateSegmentByUuidErrors = {
2347
+ /**
2348
+ * Bad Request
2349
+ */
2350
+ 400: Error400;
2351
+ /**
2352
+ * Unauthorized (API key or session)
2353
+ */
2354
+ 401: Error401;
2355
+ /**
2356
+ * Forbidden
2357
+ */
2358
+ 403: Error403;
2359
+ /**
2360
+ * Not Found
2361
+ */
2362
+ 404: Error404;
2363
+ /**
2364
+ * Too Many Requests
2365
+ */
2366
+ 429: Error429;
2367
+ /**
2368
+ * Internal Server Error
2369
+ */
2370
+ 500: Error500;
2371
+ };
2372
+ export type UpdateSegmentByUuidError = UpdateSegmentByUuidErrors[keyof UpdateSegmentByUuidErrors];
2373
+ export type UpdateSegmentByUuidResponses = {
2374
+ /**
2375
+ * Single segment response with internal fields
2376
+ */
2377
+ 200: SegmentInternal;
2378
+ };
2379
+ export type UpdateSegmentByUuidResponse = UpdateSegmentByUuidResponses[keyof UpdateSegmentByUuidResponses];
2380
+ export type GetSegmentContextData = {
2381
+ body?: never;
2382
+ path: {
2383
+ /**
2384
+ * Segment UUID or publicId
2385
+ */
2386
+ uuid: string;
2387
+ };
2388
+ query?: {
2389
+ /**
2390
+ * Number of segments to return before and after the target
2391
+ */
2392
+ take?: number;
2393
+ /**
2394
+ * Content ratings to include (omit for all ratings)
2395
+ */
2396
+ contentRating?: Array<ContentRating>;
2397
+ };
2398
+ url: '/v1/media/segments/{uuid}/context';
2203
2399
  };
2204
- export type AutocompleteMediaErrors = {
2400
+ export type GetSegmentContextErrors = {
2205
2401
  /**
2206
2402
  * Bad Request
2207
2403
  */
2208
2404
  400: Error400;
2209
2405
  /**
2210
- * Unauthorized
2406
+ * Unauthorized (API key or session)
2211
2407
  */
2212
2408
  401: Error401;
2213
2409
  /**
2214
2410
  * Forbidden
2215
2411
  */
2216
2412
  403: Error403;
2413
+ /**
2414
+ * Not Found
2415
+ */
2416
+ 404: Error404;
2217
2417
  /**
2218
2418
  * Too Many Requests
2219
2419
  */
@@ -2223,32 +2423,32 @@ export type AutocompleteMediaErrors = {
2223
2423
  */
2224
2424
  500: Error500;
2225
2425
  };
2226
- export type AutocompleteMediaError = AutocompleteMediaErrors[keyof AutocompleteMediaErrors];
2227
- export type AutocompleteMediaResponses = {
2426
+ export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2427
+ export type GetSegmentContextResponses = {
2228
2428
  /**
2229
2429
  * OK
2230
2430
  */
2231
- 200: MediaAutocompleteResponse;
2431
+ 200: SegmentContextResponse;
2232
2432
  };
2233
- export type AutocompleteMediaResponse = AutocompleteMediaResponses[keyof AutocompleteMediaResponses];
2234
- export type DeleteMediaData = {
2433
+ export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2434
+ export type ListSegmentRevisionsData = {
2235
2435
  body?: never;
2236
2436
  path: {
2237
2437
  /**
2238
- * Media ID
2438
+ * Segment UUID or publicId
2239
2439
  */
2240
- id: number;
2440
+ uuid: string;
2241
2441
  };
2242
2442
  query?: never;
2243
- url: '/v1/media/{id}';
2443
+ url: '/v1/media/segments/{uuid}/revisions';
2244
2444
  };
2245
- export type DeleteMediaErrors = {
2445
+ export type ListSegmentRevisionsErrors = {
2246
2446
  /**
2247
2447
  * Bad Request
2248
2448
  */
2249
2449
  400: Error400;
2250
2450
  /**
2251
- * Unauthorized
2451
+ * Unauthorized (API key or session)
2252
2452
  */
2253
2453
  401: Error401;
2254
2454
  /**
@@ -2268,47 +2468,48 @@ export type DeleteMediaErrors = {
2268
2468
  */
2269
2469
  500: Error500;
2270
2470
  };
2271
- export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
2272
- export type DeleteMediaResponses = {
2471
+ export type ListSegmentRevisionsError = ListSegmentRevisionsErrors[keyof ListSegmentRevisionsErrors];
2472
+ export type ListSegmentRevisionsResponses = {
2273
2473
  /**
2274
- * No Content
2474
+ * List of segment revisions
2275
2475
  */
2276
- 204: void;
2476
+ 200: {
2477
+ revisions: Array<SegmentRevision>;
2478
+ };
2277
2479
  };
2278
- export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
2279
- export type GetMediaData = {
2480
+ export type ListSegmentRevisionsResponse = ListSegmentRevisionsResponses[keyof ListSegmentRevisionsResponses];
2481
+ export type ListSeriesData = {
2280
2482
  body?: never;
2281
- path: {
2483
+ path?: never;
2484
+ query?: {
2282
2485
  /**
2283
- * Media ID
2486
+ * Number of results per page
2284
2487
  */
2285
- id: number;
2286
- };
2287
- query?: {
2488
+ take?: number;
2288
2489
  /**
2289
- * Resources to expand in the media response (`media.characters` implies `media`)
2490
+ * Opaque pagination cursor token
2290
2491
  */
2291
- include?: Array<MediaIncludeExpansion>;
2492
+ cursor?: string;
2493
+ /**
2494
+ * Case-insensitive search across English, Japanese, and Romaji names
2495
+ */
2496
+ query?: string;
2292
2497
  };
2293
- url: '/v1/media/{id}';
2498
+ url: '/v1/media/series';
2294
2499
  };
2295
- export type GetMediaErrors = {
2500
+ export type ListSeriesErrors = {
2296
2501
  /**
2297
2502
  * Bad Request
2298
2503
  */
2299
2504
  400: Error400;
2300
2505
  /**
2301
- * Unauthorized
2506
+ * Unauthorized (API key)
2302
2507
  */
2303
2508
  401: Error401;
2304
2509
  /**
2305
2510
  * Forbidden
2306
2511
  */
2307
2512
  403: Error403;
2308
- /**
2309
- * Not Found
2310
- */
2311
- 404: Error404;
2312
2513
  /**
2313
2514
  * Too Many Requests
2314
2515
  */
@@ -2318,42 +2519,46 @@ export type GetMediaErrors = {
2318
2519
  */
2319
2520
  500: Error500;
2320
2521
  };
2321
- export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
2322
- export type GetMediaResponses = {
2522
+ export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
2523
+ export type ListSeriesResponses = {
2323
2524
  /**
2324
2525
  * OK
2325
2526
  */
2326
- 200: Media;
2527
+ 200: SeriesListResponse;
2327
2528
  };
2328
- export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
2329
- export type UpdateMediaData = {
2330
- body: MediaUpdateRequest;
2331
- path: {
2529
+ export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
2530
+ export type CreateSeriesData = {
2531
+ body: {
2332
2532
  /**
2333
- * Media ID
2533
+ * Japanese name of the series
2334
2534
  */
2335
- id: number;
2535
+ nameJa: string;
2536
+ /**
2537
+ * Romaji name of the series
2538
+ */
2539
+ nameRomaji: string;
2540
+ /**
2541
+ * English name of the series
2542
+ */
2543
+ nameEn: string;
2336
2544
  };
2545
+ path?: never;
2337
2546
  query?: never;
2338
- url: '/v1/media/{id}';
2547
+ url: '/v1/media/series';
2339
2548
  };
2340
- export type UpdateMediaErrors = {
2549
+ export type CreateSeriesErrors = {
2341
2550
  /**
2342
2551
  * Bad Request
2343
2552
  */
2344
2553
  400: Error400;
2345
2554
  /**
2346
- * Unauthorized
2555
+ * Unauthorized (API key)
2347
2556
  */
2348
2557
  401: Error401;
2349
2558
  /**
2350
2559
  * Forbidden
2351
2560
  */
2352
2561
  403: Error403;
2353
- /**
2354
- * Not Found
2355
- */
2356
- 404: Error404;
2357
2562
  /**
2358
2563
  * Too Many Requests
2359
2564
  */
@@ -2363,41 +2568,32 @@ export type UpdateMediaErrors = {
2363
2568
  */
2364
2569
  500: Error500;
2365
2570
  };
2366
- export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
2367
- export type UpdateMediaResponses = {
2571
+ export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
2572
+ export type CreateSeriesResponses = {
2368
2573
  /**
2369
- * OK
2574
+ * Created
2370
2575
  */
2371
- 200: Media;
2576
+ 201: Series;
2372
2577
  };
2373
- export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
2374
- export type ListEpisodesData = {
2578
+ export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
2579
+ export type DeleteSeriesData = {
2375
2580
  body?: never;
2376
2581
  path: {
2377
2582
  /**
2378
- * ID of the media
2379
- */
2380
- mediaId: number;
2381
- };
2382
- query?: {
2383
- /**
2384
- * Maximum number of episodes to return
2385
- */
2386
- limit?: number;
2387
- /**
2388
- * Episode number to start from (for pagination)
2583
+ * Series ID
2389
2584
  */
2390
- cursor?: number;
2585
+ id: number;
2391
2586
  };
2392
- url: '/v1/media/{mediaId}/episodes';
2587
+ query?: never;
2588
+ url: '/v1/media/series/{id}';
2393
2589
  };
2394
- export type ListEpisodesErrors = {
2590
+ export type DeleteSeriesErrors = {
2395
2591
  /**
2396
2592
  * Bad Request
2397
2593
  */
2398
2594
  400: Error400;
2399
2595
  /**
2400
- * Unauthorized
2596
+ * Unauthorized (API key)
2401
2597
  */
2402
2598
  401: Error401;
2403
2599
  /**
@@ -2417,32 +2613,37 @@ export type ListEpisodesErrors = {
2417
2613
  */
2418
2614
  500: Error500;
2419
2615
  };
2420
- export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
2421
- export type ListEpisodesResponses = {
2616
+ export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
2617
+ export type DeleteSeriesResponses = {
2422
2618
  /**
2423
- * Paginated list of episodes
2619
+ * No Content
2424
2620
  */
2425
- 200: EpisodeListResponse;
2621
+ 204: void;
2426
2622
  };
2427
- export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
2428
- export type CreateEpisodeData = {
2429
- body: EpisodeCreateRequest;
2623
+ export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
2624
+ export type GetSeriesData = {
2625
+ body?: never;
2430
2626
  path: {
2431
2627
  /**
2432
- * ID of the media
2628
+ * Series ID
2433
2629
  */
2434
- mediaId: number;
2630
+ id: number;
2435
2631
  };
2436
- query?: never;
2437
- url: '/v1/media/{mediaId}/episodes';
2632
+ query?: {
2633
+ /**
2634
+ * Resources to expand in the series response
2635
+ */
2636
+ include?: Array<MediaIncludeExpansion>;
2637
+ };
2638
+ url: '/v1/media/series/{id}';
2438
2639
  };
2439
- export type CreateEpisodeErrors = {
2640
+ export type GetSeriesErrors = {
2440
2641
  /**
2441
2642
  * Bad Request
2442
2643
  */
2443
2644
  400: Error400;
2444
2645
  /**
2445
- * Unauthorized
2646
+ * Unauthorized (API key)
2446
2647
  */
2447
2648
  401: Error401;
2448
2649
  /**
@@ -2453,10 +2654,6 @@ export type CreateEpisodeErrors = {
2453
2654
  * Not Found
2454
2655
  */
2455
2656
  404: Error404;
2456
- /**
2457
- * Conflict
2458
- */
2459
- 409: Error409;
2460
2657
  /**
2461
2658
  * Too Many Requests
2462
2659
  */
@@ -2466,36 +2663,45 @@ export type CreateEpisodeErrors = {
2466
2663
  */
2467
2664
  500: Error500;
2468
2665
  };
2469
- export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
2470
- export type CreateEpisodeResponses = {
2666
+ export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
2667
+ export type GetSeriesResponses = {
2471
2668
  /**
2472
- * Single episode response
2669
+ * OK
2473
2670
  */
2474
- 201: Episode;
2671
+ 200: SeriesWithMedia;
2475
2672
  };
2476
- export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
2477
- export type DeleteEpisodeData = {
2478
- body?: never;
2479
- path: {
2673
+ export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
2674
+ export type UpdateSeriesData = {
2675
+ body: {
2480
2676
  /**
2481
- * ID of the media
2677
+ * Updated Japanese name
2482
2678
  */
2483
- mediaId: number;
2679
+ nameJa?: string;
2484
2680
  /**
2485
- * Episode number
2681
+ * Updated Romaji name
2486
2682
  */
2487
- episodeNumber: number;
2683
+ nameRomaji?: string;
2684
+ /**
2685
+ * Updated English name
2686
+ */
2687
+ nameEn?: string;
2688
+ };
2689
+ path: {
2690
+ /**
2691
+ * Series ID
2692
+ */
2693
+ id: number;
2488
2694
  };
2489
2695
  query?: never;
2490
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2696
+ url: '/v1/media/series/{id}';
2491
2697
  };
2492
- export type DeleteEpisodeErrors = {
2698
+ export type UpdateSeriesErrors = {
2493
2699
  /**
2494
2700
  * Bad Request
2495
2701
  */
2496
2702
  400: Error400;
2497
2703
  /**
2498
- * Unauthorized
2704
+ * Unauthorized (API key)
2499
2705
  */
2500
2706
  401: Error401;
2501
2707
  /**
@@ -2515,36 +2721,41 @@ export type DeleteEpisodeErrors = {
2515
2721
  */
2516
2722
  500: Error500;
2517
2723
  };
2518
- export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
2519
- export type DeleteEpisodeResponses = {
2724
+ export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
2725
+ export type UpdateSeriesResponses = {
2520
2726
  /**
2521
- * Episode successfully deleted
2727
+ * OK
2522
2728
  */
2523
- 204: void;
2729
+ 200: Series;
2524
2730
  };
2525
- export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
2526
- export type GetEpisodeData = {
2527
- body?: never;
2528
- path: {
2731
+ export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
2732
+ export type AddMediaToSeriesData = {
2733
+ body: {
2529
2734
  /**
2530
- * ID of the media
2735
+ * Media ID to add
2531
2736
  */
2532
2737
  mediaId: number;
2533
2738
  /**
2534
- * Episode number
2739
+ * Position in the series (1-indexed)
2535
2740
  */
2536
- episodeNumber: number;
2741
+ position: number;
2742
+ };
2743
+ path: {
2744
+ /**
2745
+ * Series ID
2746
+ */
2747
+ id: number;
2537
2748
  };
2538
2749
  query?: never;
2539
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2750
+ url: '/v1/media/series/{id}/media';
2540
2751
  };
2541
- export type GetEpisodeErrors = {
2752
+ export type AddMediaToSeriesErrors = {
2542
2753
  /**
2543
2754
  * Bad Request
2544
2755
  */
2545
2756
  400: Error400;
2546
2757
  /**
2547
- * Unauthorized
2758
+ * Unauthorized (API key)
2548
2759
  */
2549
2760
  401: Error401;
2550
2761
  /**
@@ -2564,36 +2775,36 @@ export type GetEpisodeErrors = {
2564
2775
  */
2565
2776
  500: Error500;
2566
2777
  };
2567
- export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
2568
- export type GetEpisodeResponses = {
2778
+ export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
2779
+ export type AddMediaToSeriesResponses = {
2569
2780
  /**
2570
- * Single episode response
2781
+ * No Content
2571
2782
  */
2572
- 200: Episode;
2783
+ 204: void;
2573
2784
  };
2574
- export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
2575
- export type UpdateEpisodeData = {
2576
- body: EpisodeUpdateRequest;
2785
+ export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
2786
+ export type RemoveMediaFromSeriesData = {
2787
+ body?: never;
2577
2788
  path: {
2578
2789
  /**
2579
- * ID of the media
2790
+ * Series ID
2580
2791
  */
2581
- mediaId: number;
2792
+ id: number;
2582
2793
  /**
2583
- * Episode number
2794
+ * Media ID
2584
2795
  */
2585
- episodeNumber: number;
2796
+ mediaId: number;
2586
2797
  };
2587
2798
  query?: never;
2588
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
2799
+ url: '/v1/media/series/{id}/media/{mediaId}';
2589
2800
  };
2590
- export type UpdateEpisodeErrors = {
2801
+ export type RemoveMediaFromSeriesErrors = {
2591
2802
  /**
2592
2803
  * Bad Request
2593
2804
  */
2594
2805
  400: Error400;
2595
2806
  /**
2596
- * Unauthorized
2807
+ * Unauthorized (API key)
2597
2808
  */
2598
2809
  401: Error401;
2599
2810
  /**
@@ -2613,45 +2824,41 @@ export type UpdateEpisodeErrors = {
2613
2824
  */
2614
2825
  500: Error500;
2615
2826
  };
2616
- export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
2617
- export type UpdateEpisodeResponses = {
2618
- /**
2619
- * Single episode response
2620
- */
2621
- 200: Episode;
2622
- };
2623
- export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
2624
- export type ListSegmentsData = {
2625
- body?: never;
2626
- path: {
2627
- /**
2628
- * ID of the media
2629
- */
2630
- mediaId: number;
2827
+ export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
2828
+ export type RemoveMediaFromSeriesResponses = {
2829
+ /**
2830
+ * No Content
2831
+ */
2832
+ 204: void;
2833
+ };
2834
+ export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
2835
+ export type UpdateSeriesMediaData = {
2836
+ body: {
2631
2837
  /**
2632
- * Episode number
2838
+ * New position in the series (1-indexed)
2633
2839
  */
2634
- episodeNumber: number;
2840
+ position: number;
2635
2841
  };
2636
- query?: {
2842
+ path: {
2637
2843
  /**
2638
- * Maximum number of segments to return
2844
+ * Series ID
2639
2845
  */
2640
- limit?: number;
2846
+ id: number;
2641
2847
  /**
2642
- * Segment ID to start from (for pagination)
2848
+ * Media ID
2643
2849
  */
2644
- cursor?: number;
2850
+ mediaId: number;
2645
2851
  };
2646
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2852
+ query?: never;
2853
+ url: '/v1/media/series/{id}/media/{mediaId}';
2647
2854
  };
2648
- export type ListSegmentsErrors = {
2855
+ export type UpdateSeriesMediaErrors = {
2649
2856
  /**
2650
2857
  * Bad Request
2651
2858
  */
2652
2859
  400: Error400;
2653
2860
  /**
2654
- * Unauthorized
2861
+ * Unauthorized (API key)
2655
2862
  */
2656
2863
  401: Error401;
2657
2864
  /**
@@ -2671,42 +2878,32 @@ export type ListSegmentsErrors = {
2671
2878
  */
2672
2879
  500: Error500;
2673
2880
  };
2674
- export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
2675
- export type ListSegmentsResponses = {
2881
+ export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
2882
+ export type UpdateSeriesMediaResponses = {
2676
2883
  /**
2677
- * Paginated segment list response
2884
+ * No Content
2678
2885
  */
2679
- 200: {
2680
- /**
2681
- * Array of segment objects
2682
- */
2683
- segments: Array<Segment>;
2684
- pagination: CursorPagination;
2685
- };
2886
+ 204: void;
2686
2887
  };
2687
- export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
2688
- export type CreateSegmentData = {
2689
- body: SegmentCreateRequest;
2888
+ export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
2889
+ export type GetCharacterData = {
2890
+ body?: never;
2690
2891
  path: {
2691
2892
  /**
2692
- * ID of the media
2693
- */
2694
- mediaId: number;
2695
- /**
2696
- * Episode number
2893
+ * Internal character ID
2697
2894
  */
2698
- episodeNumber: number;
2895
+ id: number;
2699
2896
  };
2700
2897
  query?: never;
2701
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
2898
+ url: '/v1/media/characters/{id}';
2702
2899
  };
2703
- export type CreateSegmentErrors = {
2900
+ export type GetCharacterErrors = {
2704
2901
  /**
2705
2902
  * Bad Request
2706
2903
  */
2707
2904
  400: Error400;
2708
2905
  /**
2709
- * Unauthorized
2906
+ * Unauthorized (API key)
2710
2907
  */
2711
2908
  401: Error401;
2712
2909
  /**
@@ -2717,10 +2914,6 @@ export type CreateSegmentErrors = {
2717
2914
  * Not Found
2718
2915
  */
2719
2916
  404: Error404;
2720
- /**
2721
- * Conflict
2722
- */
2723
- 409: Error409;
2724
2917
  /**
2725
2918
  * Too Many Requests
2726
2919
  */
@@ -2730,40 +2923,32 @@ export type CreateSegmentErrors = {
2730
2923
  */
2731
2924
  500: Error500;
2732
2925
  };
2733
- export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
2734
- export type CreateSegmentResponses = {
2926
+ export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
2927
+ export type GetCharacterResponses = {
2735
2928
  /**
2736
- * Single segment response with internal fields
2929
+ * OK
2737
2930
  */
2738
- 201: SegmentInternal;
2931
+ 200: CharacterWithMedia;
2739
2932
  };
2740
- export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
2741
- export type DeleteSegmentData = {
2933
+ export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
2934
+ export type GetSeiyuuData = {
2742
2935
  body?: never;
2743
2936
  path: {
2744
2937
  /**
2745
- * ID of the media
2746
- */
2747
- mediaId: number;
2748
- /**
2749
- * Episode number
2750
- */
2751
- episodeNumber: number;
2752
- /**
2753
- * Segment ID
2938
+ * Internal seiyuu ID
2754
2939
  */
2755
2940
  id: number;
2756
2941
  };
2757
2942
  query?: never;
2758
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2943
+ url: '/v1/media/seiyuu/{id}';
2759
2944
  };
2760
- export type DeleteSegmentErrors = {
2945
+ export type GetSeiyuuErrors = {
2761
2946
  /**
2762
2947
  * Bad Request
2763
2948
  */
2764
2949
  400: Error400;
2765
2950
  /**
2766
- * Unauthorized
2951
+ * Unauthorized (API key)
2767
2952
  */
2768
2953
  401: Error401;
2769
2954
  /**
@@ -2783,40 +2968,32 @@ export type DeleteSegmentErrors = {
2783
2968
  */
2784
2969
  500: Error500;
2785
2970
  };
2786
- export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
2787
- export type DeleteSegmentResponses = {
2971
+ export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
2972
+ export type GetSeiyuuResponses = {
2788
2973
  /**
2789
- * Segment successfully deleted
2974
+ * OK
2790
2975
  */
2791
- 204: void;
2976
+ 200: SeiyuuWithRoles;
2792
2977
  };
2793
- export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
2794
- export type GetSegmentData = {
2978
+ export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
2979
+ export type DeleteMediaData = {
2795
2980
  body?: never;
2796
2981
  path: {
2797
2982
  /**
2798
- * ID of the media
2799
- */
2800
- mediaId: number;
2801
- /**
2802
- * Episode number
2803
- */
2804
- episodeNumber: number;
2805
- /**
2806
- * Segment ID
2983
+ * Media ID
2807
2984
  */
2808
2985
  id: number;
2809
2986
  };
2810
2987
  query?: never;
2811
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
2988
+ url: '/v1/media/{id}';
2812
2989
  };
2813
- export type GetSegmentErrors = {
2990
+ export type DeleteMediaErrors = {
2814
2991
  /**
2815
2992
  * Bad Request
2816
2993
  */
2817
2994
  400: Error400;
2818
2995
  /**
2819
- * Unauthorized
2996
+ * Unauthorized (API key)
2820
2997
  */
2821
2998
  401: Error401;
2822
2999
  /**
@@ -2836,40 +3013,37 @@ export type GetSegmentErrors = {
2836
3013
  */
2837
3014
  500: Error500;
2838
3015
  };
2839
- export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
2840
- export type GetSegmentResponses = {
3016
+ export type DeleteMediaError = DeleteMediaErrors[keyof DeleteMediaErrors];
3017
+ export type DeleteMediaResponses = {
2841
3018
  /**
2842
- * Single segment response
3019
+ * No Content
2843
3020
  */
2844
- 200: Segment;
3021
+ 204: void;
2845
3022
  };
2846
- export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
2847
- export type UpdateSegmentData = {
2848
- body: SegmentUpdateRequest;
3023
+ export type DeleteMediaResponse = DeleteMediaResponses[keyof DeleteMediaResponses];
3024
+ export type GetMediaData = {
3025
+ body?: never;
2849
3026
  path: {
2850
3027
  /**
2851
- * ID of the media
2852
- */
2853
- mediaId: number;
2854
- /**
2855
- * Episode number
3028
+ * Media ID
2856
3029
  */
2857
- episodeNumber: number;
3030
+ id: number;
3031
+ };
3032
+ query?: {
2858
3033
  /**
2859
- * Segment ID
3034
+ * Resources to expand in the media response
2860
3035
  */
2861
- id: number;
3036
+ include?: Array<MediaIncludeExpansion>;
2862
3037
  };
2863
- query?: never;
2864
- url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3038
+ url: '/v1/media/{id}';
2865
3039
  };
2866
- export type UpdateSegmentErrors = {
3040
+ export type GetMediaErrors = {
2867
3041
  /**
2868
3042
  * Bad Request
2869
3043
  */
2870
3044
  400: Error400;
2871
3045
  /**
2872
- * Unauthorized
3046
+ * Unauthorized (API key)
2873
3047
  */
2874
3048
  401: Error401;
2875
3049
  /**
@@ -2889,32 +3063,32 @@ export type UpdateSegmentErrors = {
2889
3063
  */
2890
3064
  500: Error500;
2891
3065
  };
2892
- export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
2893
- export type UpdateSegmentResponses = {
3066
+ export type GetMediaError = GetMediaErrors[keyof GetMediaErrors];
3067
+ export type GetMediaResponses = {
2894
3068
  /**
2895
- * Single segment response with internal fields
3069
+ * OK
2896
3070
  */
2897
- 200: SegmentInternal;
3071
+ 200: Media;
2898
3072
  };
2899
- export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
2900
- export type GetSegmentByUuidData = {
2901
- body?: never;
3073
+ export type GetMediaResponse = GetMediaResponses[keyof GetMediaResponses];
3074
+ export type UpdateMediaData = {
3075
+ body: MediaUpdateRequest;
2902
3076
  path: {
2903
3077
  /**
2904
- * Segment UUID
3078
+ * Media ID
2905
3079
  */
2906
- uuid: string;
3080
+ id: number;
2907
3081
  };
2908
3082
  query?: never;
2909
- url: '/v1/media/segments/{uuid}';
3083
+ url: '/v1/media/{id}';
2910
3084
  };
2911
- export type GetSegmentByUuidErrors = {
3085
+ export type UpdateMediaErrors = {
2912
3086
  /**
2913
3087
  * Bad Request
2914
3088
  */
2915
3089
  400: Error400;
2916
3090
  /**
2917
- * Unauthorized
3091
+ * Unauthorized (API key)
2918
3092
  */
2919
3093
  401: Error401;
2920
3094
  /**
@@ -2934,42 +3108,41 @@ export type GetSegmentByUuidErrors = {
2934
3108
  */
2935
3109
  500: Error500;
2936
3110
  };
2937
- export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2938
- export type GetSegmentByUuidResponses = {
2939
- 200: Segment;
3111
+ export type UpdateMediaError = UpdateMediaErrors[keyof UpdateMediaErrors];
3112
+ export type UpdateMediaResponses = {
3113
+ /**
3114
+ * OK
3115
+ */
3116
+ 200: Media;
2940
3117
  };
2941
- export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2942
- export type GetSegmentContextData = {
3118
+ export type UpdateMediaResponse = UpdateMediaResponses[keyof UpdateMediaResponses];
3119
+ export type ListEpisodesData = {
2943
3120
  body?: never;
2944
3121
  path: {
2945
3122
  /**
2946
- * Segment UUID
3123
+ * ID of the media
2947
3124
  */
2948
- uuid: string;
3125
+ mediaId: number;
2949
3126
  };
2950
3127
  query?: {
2951
3128
  /**
2952
- * Number of segments to return before and after the target
2953
- */
2954
- limit?: number;
2955
- /**
2956
- * Content ratings to include (omit for all ratings)
3129
+ * Maximum number of episodes to return
2957
3130
  */
2958
- contentRating?: Array<ContentRating>;
3131
+ take?: number;
2959
3132
  /**
2960
- * Resources to expand in the response includes block
3133
+ * Opaque pagination cursor token
2961
3134
  */
2962
- include?: Array<IncludeExpansion>;
3135
+ cursor?: string;
2963
3136
  };
2964
- url: '/v1/media/segments/{uuid}/context';
3137
+ url: '/v1/media/{mediaId}/episodes';
2965
3138
  };
2966
- export type GetSegmentContextErrors = {
3139
+ export type ListEpisodesErrors = {
2967
3140
  /**
2968
3141
  * Bad Request
2969
3142
  */
2970
3143
  400: Error400;
2971
3144
  /**
2972
- * Unauthorized
3145
+ * Unauthorized (API key)
2973
3146
  */
2974
3147
  401: Error401;
2975
3148
  /**
@@ -2989,46 +3162,46 @@ export type GetSegmentContextErrors = {
2989
3162
  */
2990
3163
  500: Error500;
2991
3164
  };
2992
- export type GetSegmentContextError = GetSegmentContextErrors[keyof GetSegmentContextErrors];
2993
- export type GetSegmentContextResponses = {
3165
+ export type ListEpisodesError = ListEpisodesErrors[keyof ListEpisodesErrors];
3166
+ export type ListEpisodesResponses = {
2994
3167
  /**
2995
- * OK
3168
+ * Paginated list of episodes
2996
3169
  */
2997
- 200: SegmentContextResponse;
3170
+ 200: EpisodeListResponse;
2998
3171
  };
2999
- export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
3000
- export type ListSeriesData = {
3001
- body?: never;
3002
- path?: never;
3003
- query?: {
3004
- /**
3005
- * Number of results per page
3006
- */
3007
- limit?: number;
3008
- /**
3009
- * Pagination cursor offset
3010
- */
3011
- cursor?: number;
3172
+ export type ListEpisodesResponse = ListEpisodesResponses[keyof ListEpisodesResponses];
3173
+ export type CreateEpisodeData = {
3174
+ body: EpisodeCreateRequest;
3175
+ path: {
3012
3176
  /**
3013
- * Case-insensitive search across English, Japanese, and Romaji names
3177
+ * ID of the media
3014
3178
  */
3015
- query?: string;
3179
+ mediaId: number;
3016
3180
  };
3017
- url: '/v1/media/series';
3181
+ query?: never;
3182
+ url: '/v1/media/{mediaId}/episodes';
3018
3183
  };
3019
- export type ListSeriesErrors = {
3184
+ export type CreateEpisodeErrors = {
3020
3185
  /**
3021
3186
  * Bad Request
3022
3187
  */
3023
3188
  400: Error400;
3024
3189
  /**
3025
- * Unauthorized
3190
+ * Unauthorized (API key)
3026
3191
  */
3027
3192
  401: Error401;
3028
3193
  /**
3029
3194
  * Forbidden
3030
3195
  */
3031
3196
  403: Error403;
3197
+ /**
3198
+ * Not Found
3199
+ */
3200
+ 404: Error404;
3201
+ /**
3202
+ * Conflict
3203
+ */
3204
+ 409: Error409;
3032
3205
  /**
3033
3206
  * Too Many Requests
3034
3207
  */
@@ -3038,46 +3211,46 @@ export type ListSeriesErrors = {
3038
3211
  */
3039
3212
  500: Error500;
3040
3213
  };
3041
- export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
3042
- export type ListSeriesResponses = {
3214
+ export type CreateEpisodeError = CreateEpisodeErrors[keyof CreateEpisodeErrors];
3215
+ export type CreateEpisodeResponses = {
3043
3216
  /**
3044
- * OK
3217
+ * Single episode response
3045
3218
  */
3046
- 200: SeriesListResponse;
3219
+ 201: Episode;
3047
3220
  };
3048
- export type ListSeriesResponse = ListSeriesResponses[keyof ListSeriesResponses];
3049
- export type CreateSeriesData = {
3050
- body: {
3051
- /**
3052
- * Japanese name of the series
3053
- */
3054
- nameJa: string;
3221
+ export type CreateEpisodeResponse = CreateEpisodeResponses[keyof CreateEpisodeResponses];
3222
+ export type DeleteEpisodeData = {
3223
+ body?: never;
3224
+ path: {
3055
3225
  /**
3056
- * Romaji name of the series
3226
+ * ID of the media
3057
3227
  */
3058
- nameRomaji: string;
3228
+ mediaId: number;
3059
3229
  /**
3060
- * English name of the series
3230
+ * Episode number
3061
3231
  */
3062
- nameEn: string;
3232
+ episodeNumber: number;
3063
3233
  };
3064
- path?: never;
3065
3234
  query?: never;
3066
- url: '/v1/media/series';
3235
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3067
3236
  };
3068
- export type CreateSeriesErrors = {
3237
+ export type DeleteEpisodeErrors = {
3069
3238
  /**
3070
3239
  * Bad Request
3071
3240
  */
3072
3241
  400: Error400;
3073
3242
  /**
3074
- * Unauthorized
3243
+ * Unauthorized (API key)
3075
3244
  */
3076
3245
  401: Error401;
3077
3246
  /**
3078
3247
  * Forbidden
3079
3248
  */
3080
3249
  403: Error403;
3250
+ /**
3251
+ * Not Found
3252
+ */
3253
+ 404: Error404;
3081
3254
  /**
3082
3255
  * Too Many Requests
3083
3256
  */
@@ -3087,32 +3260,36 @@ export type CreateSeriesErrors = {
3087
3260
  */
3088
3261
  500: Error500;
3089
3262
  };
3090
- export type CreateSeriesError = CreateSeriesErrors[keyof CreateSeriesErrors];
3091
- export type CreateSeriesResponses = {
3263
+ export type DeleteEpisodeError = DeleteEpisodeErrors[keyof DeleteEpisodeErrors];
3264
+ export type DeleteEpisodeResponses = {
3092
3265
  /**
3093
- * Created
3266
+ * Episode successfully deleted
3094
3267
  */
3095
- 201: Series;
3268
+ 204: void;
3096
3269
  };
3097
- export type CreateSeriesResponse = CreateSeriesResponses[keyof CreateSeriesResponses];
3098
- export type DeleteSeriesData = {
3270
+ export type DeleteEpisodeResponse = DeleteEpisodeResponses[keyof DeleteEpisodeResponses];
3271
+ export type GetEpisodeData = {
3099
3272
  body?: never;
3100
3273
  path: {
3101
3274
  /**
3102
- * Series ID
3275
+ * ID of the media
3103
3276
  */
3104
- id: number;
3277
+ mediaId: number;
3278
+ /**
3279
+ * Episode number
3280
+ */
3281
+ episodeNumber: number;
3105
3282
  };
3106
3283
  query?: never;
3107
- url: '/v1/media/series/{id}';
3284
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3108
3285
  };
3109
- export type DeleteSeriesErrors = {
3286
+ export type GetEpisodeErrors = {
3110
3287
  /**
3111
3288
  * Bad Request
3112
3289
  */
3113
3290
  400: Error400;
3114
3291
  /**
3115
- * Unauthorized
3292
+ * Unauthorized (API key)
3116
3293
  */
3117
3294
  401: Error401;
3118
3295
  /**
@@ -3132,37 +3309,36 @@ export type DeleteSeriesErrors = {
3132
3309
  */
3133
3310
  500: Error500;
3134
3311
  };
3135
- export type DeleteSeriesError = DeleteSeriesErrors[keyof DeleteSeriesErrors];
3136
- export type DeleteSeriesResponses = {
3312
+ export type GetEpisodeError = GetEpisodeErrors[keyof GetEpisodeErrors];
3313
+ export type GetEpisodeResponses = {
3137
3314
  /**
3138
- * No Content
3315
+ * Single episode response
3139
3316
  */
3140
- 204: void;
3317
+ 200: Episode;
3141
3318
  };
3142
- export type DeleteSeriesResponse = DeleteSeriesResponses[keyof DeleteSeriesResponses];
3143
- export type GetSeriesData = {
3144
- body?: never;
3319
+ export type GetEpisodeResponse = GetEpisodeResponses[keyof GetEpisodeResponses];
3320
+ export type UpdateEpisodeData = {
3321
+ body: EpisodeUpdateRequest;
3145
3322
  path: {
3146
3323
  /**
3147
- * Series ID
3324
+ * ID of the media
3148
3325
  */
3149
- id: number;
3150
- };
3151
- query?: {
3326
+ mediaId: number;
3152
3327
  /**
3153
- * Resources to expand in the series response (`media.characters` implies `media`)
3328
+ * Episode number
3154
3329
  */
3155
- include?: Array<MediaIncludeExpansion>;
3330
+ episodeNumber: number;
3156
3331
  };
3157
- url: '/v1/media/series/{id}';
3332
+ query?: never;
3333
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}';
3158
3334
  };
3159
- export type GetSeriesErrors = {
3335
+ export type UpdateEpisodeErrors = {
3160
3336
  /**
3161
3337
  * Bad Request
3162
3338
  */
3163
3339
  400: Error400;
3164
3340
  /**
3165
- * Unauthorized
3341
+ * Unauthorized (API key)
3166
3342
  */
3167
3343
  401: Error401;
3168
3344
  /**
@@ -3182,45 +3358,45 @@ export type GetSeriesErrors = {
3182
3358
  */
3183
3359
  500: Error500;
3184
3360
  };
3185
- export type GetSeriesError = GetSeriesErrors[keyof GetSeriesErrors];
3186
- export type GetSeriesResponses = {
3361
+ export type UpdateEpisodeError = UpdateEpisodeErrors[keyof UpdateEpisodeErrors];
3362
+ export type UpdateEpisodeResponses = {
3187
3363
  /**
3188
- * OK
3364
+ * Single episode response
3189
3365
  */
3190
- 200: SeriesWithMedia;
3366
+ 200: Episode;
3191
3367
  };
3192
- export type GetSeriesResponse = GetSeriesResponses[keyof GetSeriesResponses];
3193
- export type UpdateSeriesData = {
3194
- body: {
3368
+ export type UpdateEpisodeResponse = UpdateEpisodeResponses[keyof UpdateEpisodeResponses];
3369
+ export type ListSegmentsData = {
3370
+ body?: never;
3371
+ path: {
3195
3372
  /**
3196
- * Updated Japanese name
3373
+ * ID of the media
3197
3374
  */
3198
- nameJa?: string;
3375
+ mediaId: number;
3199
3376
  /**
3200
- * Updated Romaji name
3377
+ * Episode number
3201
3378
  */
3202
- nameRomaji?: string;
3379
+ episodeNumber: number;
3380
+ };
3381
+ query?: {
3203
3382
  /**
3204
- * Updated English name
3383
+ * Maximum number of segments to return
3205
3384
  */
3206
- nameEn?: string;
3207
- };
3208
- path: {
3385
+ take?: number;
3209
3386
  /**
3210
- * Series ID
3387
+ * Opaque pagination cursor token
3211
3388
  */
3212
- id: number;
3389
+ cursor?: string;
3213
3390
  };
3214
- query?: never;
3215
- url: '/v1/media/series/{id}';
3391
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3216
3392
  };
3217
- export type UpdateSeriesErrors = {
3393
+ export type ListSegmentsErrors = {
3218
3394
  /**
3219
3395
  * Bad Request
3220
3396
  */
3221
3397
  400: Error400;
3222
3398
  /**
3223
- * Unauthorized
3399
+ * Unauthorized (API key)
3224
3400
  */
3225
3401
  401: Error401;
3226
3402
  /**
@@ -3240,41 +3416,42 @@ export type UpdateSeriesErrors = {
3240
3416
  */
3241
3417
  500: Error500;
3242
3418
  };
3243
- export type UpdateSeriesError = UpdateSeriesErrors[keyof UpdateSeriesErrors];
3244
- export type UpdateSeriesResponses = {
3419
+ export type ListSegmentsError = ListSegmentsErrors[keyof ListSegmentsErrors];
3420
+ export type ListSegmentsResponses = {
3245
3421
  /**
3246
- * OK
3422
+ * Paginated segment list response
3247
3423
  */
3248
- 200: Series;
3249
- };
3250
- export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
3251
- export type AddMediaToSeriesData = {
3252
- body: {
3253
- /**
3254
- * Media ID to add
3255
- */
3256
- mediaId: number;
3424
+ 200: {
3257
3425
  /**
3258
- * Position in the series (1-indexed)
3426
+ * Array of segment objects
3259
3427
  */
3260
- position: number;
3428
+ segments: Array<Segment>;
3429
+ pagination: OpaqueCursorPagination;
3261
3430
  };
3431
+ };
3432
+ export type ListSegmentsResponse = ListSegmentsResponses[keyof ListSegmentsResponses];
3433
+ export type CreateSegmentData = {
3434
+ body: SegmentCreateRequest;
3262
3435
  path: {
3263
3436
  /**
3264
- * Series ID
3437
+ * ID of the media
3265
3438
  */
3266
- id: number;
3439
+ mediaId: number;
3440
+ /**
3441
+ * Episode number
3442
+ */
3443
+ episodeNumber: number;
3267
3444
  };
3268
3445
  query?: never;
3269
- url: '/v1/media/series/{id}/media';
3446
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments';
3270
3447
  };
3271
- export type AddMediaToSeriesErrors = {
3448
+ export type CreateSegmentErrors = {
3272
3449
  /**
3273
3450
  * Bad Request
3274
3451
  */
3275
3452
  400: Error400;
3276
3453
  /**
3277
- * Unauthorized
3454
+ * Unauthorized (API key)
3278
3455
  */
3279
3456
  401: Error401;
3280
3457
  /**
@@ -3285,6 +3462,10 @@ export type AddMediaToSeriesErrors = {
3285
3462
  * Not Found
3286
3463
  */
3287
3464
  404: Error404;
3465
+ /**
3466
+ * Conflict
3467
+ */
3468
+ 409: Error409;
3288
3469
  /**
3289
3470
  * Too Many Requests
3290
3471
  */
@@ -3294,36 +3475,36 @@ export type AddMediaToSeriesErrors = {
3294
3475
  */
3295
3476
  500: Error500;
3296
3477
  };
3297
- export type AddMediaToSeriesError = AddMediaToSeriesErrors[keyof AddMediaToSeriesErrors];
3298
- export type AddMediaToSeriesResponses = {
3478
+ export type CreateSegmentError = CreateSegmentErrors[keyof CreateSegmentErrors];
3479
+ export type CreateSegmentResponses = {
3299
3480
  /**
3300
- * No Content
3481
+ * Single segment response with internal fields
3301
3482
  */
3302
- 204: void;
3483
+ 201: SegmentInternal;
3303
3484
  };
3304
- export type AddMediaToSeriesResponse = AddMediaToSeriesResponses[keyof AddMediaToSeriesResponses];
3305
- export type RemoveMediaFromSeriesData = {
3306
- body?: never;
3485
+ export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
3486
+ export type CreateSegmentsBatchData = {
3487
+ body: SegmentBatchCreateRequest;
3307
3488
  path: {
3308
3489
  /**
3309
- * Series ID
3490
+ * ID of the media
3310
3491
  */
3311
- id: number;
3492
+ mediaId: number;
3312
3493
  /**
3313
- * Media ID
3494
+ * Episode number
3314
3495
  */
3315
- mediaId: number;
3496
+ episodeNumber: number;
3316
3497
  };
3317
3498
  query?: never;
3318
- url: '/v1/media/series/{id}/media/{mediaId}';
3499
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/batch';
3319
3500
  };
3320
- export type RemoveMediaFromSeriesErrors = {
3501
+ export type CreateSegmentsBatchErrors = {
3321
3502
  /**
3322
3503
  * Bad Request
3323
3504
  */
3324
3505
  400: Error400;
3325
3506
  /**
3326
- * Unauthorized
3507
+ * Unauthorized (API key)
3327
3508
  */
3328
3509
  401: Error401;
3329
3510
  /**
@@ -3343,41 +3524,49 @@ export type RemoveMediaFromSeriesErrors = {
3343
3524
  */
3344
3525
  500: Error500;
3345
3526
  };
3346
- export type RemoveMediaFromSeriesError = RemoveMediaFromSeriesErrors[keyof RemoveMediaFromSeriesErrors];
3347
- export type RemoveMediaFromSeriesResponses = {
3527
+ export type CreateSegmentsBatchError = CreateSegmentsBatchErrors[keyof CreateSegmentsBatchErrors];
3528
+ export type CreateSegmentsBatchResponses = {
3348
3529
  /**
3349
- * No Content
3530
+ * Batch segment creation result
3350
3531
  */
3351
- 204: void;
3352
- };
3353
- export type RemoveMediaFromSeriesResponse = RemoveMediaFromSeriesResponses[keyof RemoveMediaFromSeriesResponses];
3354
- export type UpdateSeriesMediaData = {
3355
- body: {
3532
+ 201: {
3356
3533
  /**
3357
- * New position in the series (1-indexed)
3534
+ * Number of segments successfully created
3358
3535
  */
3359
- position: number;
3536
+ created: number;
3537
+ /**
3538
+ * Number of segments skipped due to duplicate UUIDs
3539
+ */
3540
+ skipped: number;
3360
3541
  };
3542
+ };
3543
+ export type CreateSegmentsBatchResponse = CreateSegmentsBatchResponses[keyof CreateSegmentsBatchResponses];
3544
+ export type DeleteSegmentData = {
3545
+ body?: never;
3361
3546
  path: {
3362
3547
  /**
3363
- * Series ID
3548
+ * ID of the media
3364
3549
  */
3365
- id: number;
3550
+ mediaId: number;
3366
3551
  /**
3367
- * Media ID
3552
+ * Episode number
3368
3553
  */
3369
- mediaId: number;
3554
+ episodeNumber: number;
3555
+ /**
3556
+ * Segment ID
3557
+ */
3558
+ id: number;
3370
3559
  };
3371
3560
  query?: never;
3372
- url: '/v1/media/series/{id}/media/{mediaId}';
3561
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3373
3562
  };
3374
- export type UpdateSeriesMediaErrors = {
3563
+ export type DeleteSegmentErrors = {
3375
3564
  /**
3376
3565
  * Bad Request
3377
3566
  */
3378
3567
  400: Error400;
3379
3568
  /**
3380
- * Unauthorized
3569
+ * Unauthorized (API key)
3381
3570
  */
3382
3571
  401: Error401;
3383
3572
  /**
@@ -3397,32 +3586,40 @@ export type UpdateSeriesMediaErrors = {
3397
3586
  */
3398
3587
  500: Error500;
3399
3588
  };
3400
- export type UpdateSeriesMediaError = UpdateSeriesMediaErrors[keyof UpdateSeriesMediaErrors];
3401
- export type UpdateSeriesMediaResponses = {
3589
+ export type DeleteSegmentError = DeleteSegmentErrors[keyof DeleteSegmentErrors];
3590
+ export type DeleteSegmentResponses = {
3402
3591
  /**
3403
- * No Content
3592
+ * Segment successfully deleted
3404
3593
  */
3405
3594
  204: void;
3406
3595
  };
3407
- export type UpdateSeriesMediaResponse = UpdateSeriesMediaResponses[keyof UpdateSeriesMediaResponses];
3408
- export type GetCharacterData = {
3596
+ export type DeleteSegmentResponse = DeleteSegmentResponses[keyof DeleteSegmentResponses];
3597
+ export type GetSegmentData = {
3409
3598
  body?: never;
3410
3599
  path: {
3411
3600
  /**
3412
- * AniList character ID
3601
+ * ID of the media
3602
+ */
3603
+ mediaId: number;
3604
+ /**
3605
+ * Episode number
3606
+ */
3607
+ episodeNumber: number;
3608
+ /**
3609
+ * Segment ID
3413
3610
  */
3414
3611
  id: number;
3415
3612
  };
3416
3613
  query?: never;
3417
- url: '/v1/media/characters/{id}';
3614
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3418
3615
  };
3419
- export type GetCharacterErrors = {
3616
+ export type GetSegmentErrors = {
3420
3617
  /**
3421
3618
  * Bad Request
3422
3619
  */
3423
3620
  400: Error400;
3424
3621
  /**
3425
- * Unauthorized
3622
+ * Unauthorized (API key)
3426
3623
  */
3427
3624
  401: Error401;
3428
3625
  /**
@@ -3442,37 +3639,40 @@ export type GetCharacterErrors = {
3442
3639
  */
3443
3640
  500: Error500;
3444
3641
  };
3445
- export type GetCharacterError = GetCharacterErrors[keyof GetCharacterErrors];
3446
- export type GetCharacterResponses = {
3642
+ export type GetSegmentError = GetSegmentErrors[keyof GetSegmentErrors];
3643
+ export type GetSegmentResponses = {
3447
3644
  /**
3448
- * OK
3645
+ * Single segment response
3449
3646
  */
3450
- 200: CharacterWithMedia;
3647
+ 200: Segment;
3451
3648
  };
3452
- export type GetCharacterResponse = GetCharacterResponses[keyof GetCharacterResponses];
3453
- export type GetSeiyuuData = {
3454
- body?: never;
3649
+ export type GetSegmentResponse = GetSegmentResponses[keyof GetSegmentResponses];
3650
+ export type UpdateSegmentData = {
3651
+ body: SegmentUpdateRequest;
3455
3652
  path: {
3456
3653
  /**
3457
- * AniList staff ID
3654
+ * ID of the media
3458
3655
  */
3459
- id: number;
3460
- };
3461
- query?: {
3656
+ mediaId: number;
3657
+ /**
3658
+ * Episode number
3659
+ */
3660
+ episodeNumber: number;
3462
3661
  /**
3463
- * Resources to expand in the response (`character` is included by default)
3662
+ * Segment ID
3464
3663
  */
3465
- include?: Array<'character'>;
3664
+ id: number;
3466
3665
  };
3467
- url: '/v1/media/seiyuu/{id}';
3666
+ query?: never;
3667
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/{id}';
3468
3668
  };
3469
- export type GetSeiyuuErrors = {
3669
+ export type UpdateSegmentErrors = {
3470
3670
  /**
3471
3671
  * Bad Request
3472
3672
  */
3473
3673
  400: Error400;
3474
3674
  /**
3475
- * Unauthorized
3675
+ * Unauthorized (API key)
3476
3676
  */
3477
3677
  401: Error401;
3478
3678
  /**
@@ -3492,14 +3692,14 @@ export type GetSeiyuuErrors = {
3492
3692
  */
3493
3693
  500: Error500;
3494
3694
  };
3495
- export type GetSeiyuuError = GetSeiyuuErrors[keyof GetSeiyuuErrors];
3496
- export type GetSeiyuuResponses = {
3695
+ export type UpdateSegmentError = UpdateSegmentErrors[keyof UpdateSegmentErrors];
3696
+ export type UpdateSegmentResponses = {
3497
3697
  /**
3498
- * OK
3698
+ * Single segment response with internal fields
3499
3699
  */
3500
- 200: SeiyuuWithRoles;
3700
+ 200: SegmentInternal;
3501
3701
  };
3502
- export type GetSeiyuuResponse = GetSeiyuuResponses[keyof GetSeiyuuResponses];
3702
+ export type UpdateSegmentResponse = UpdateSegmentResponses[keyof UpdateSegmentResponses];
3503
3703
  export type GetUserQuotaData = {
3504
3704
  body?: never;
3505
3705
  path?: never;
@@ -3508,9 +3708,13 @@ export type GetUserQuotaData = {
3508
3708
  };
3509
3709
  export type GetUserQuotaErrors = {
3510
3710
  /**
3511
- * Unauthorized
3711
+ * Unauthorized (session)
3512
3712
  */
3513
3713
  401: Error401;
3714
+ /**
3715
+ * Forbidden
3716
+ */
3717
+ 403: Error403;
3514
3718
  /**
3515
3719
  * Too Many Requests
3516
3720
  */
@@ -3528,43 +3732,6 @@ export type GetUserQuotaResponses = {
3528
3732
  200: UserQuotaResponse;
3529
3733
  };
3530
3734
  export type GetUserQuotaResponse = GetUserQuotaResponses[keyof GetUserQuotaResponses];
3531
- export type ListUserReportsData = {
3532
- body?: never;
3533
- path?: never;
3534
- query?: {
3535
- /**
3536
- * Cursor for pagination (report ID to start after)
3537
- */
3538
- cursor?: number;
3539
- /**
3540
- * Number of results per page
3541
- */
3542
- limit?: number;
3543
- /**
3544
- * Filter by report status
3545
- */
3546
- status?: 'PENDING' | 'CONCERN' | 'ACCEPTED' | 'REJECTED' | 'RESOLVED' | 'IGNORED';
3547
- };
3548
- url: '/v1/user/reports';
3549
- };
3550
- export type ListUserReportsErrors = {
3551
- /**
3552
- * Unauthorized
3553
- */
3554
- 401: Error401;
3555
- /**
3556
- * Internal Server Error
3557
- */
3558
- 500: Error500;
3559
- };
3560
- export type ListUserReportsError = ListUserReportsErrors[keyof ListUserReportsErrors];
3561
- export type ListUserReportsResponses = {
3562
- /**
3563
- * OK
3564
- */
3565
- 200: ReportListResponse;
3566
- };
3567
- export type ListUserReportsResponse = ListUserReportsResponses[keyof ListUserReportsResponses];
3568
3735
  export type CreateUserReportData = {
3569
3736
  body: CreateReportRequest;
3570
3737
  path?: never;
@@ -3577,7 +3744,7 @@ export type CreateUserReportErrors = {
3577
3744
  */
3578
3745
  400: Error400;
3579
3746
  /**
3580
- * Unauthorized
3747
+ * Unauthorized (session)
3581
3748
  */
3582
3749
  401: Error401;
3583
3750
  /**
@@ -3605,7 +3772,7 @@ export type GetUserPreferencesData = {
3605
3772
  };
3606
3773
  export type GetUserPreferencesErrors = {
3607
3774
  /**
3608
- * Unauthorized
3775
+ * Unauthorized (session)
3609
3776
  */
3610
3777
  401: Error401;
3611
3778
  /**
@@ -3629,7 +3796,7 @@ export type UpdateUserPreferencesData = {
3629
3796
  };
3630
3797
  export type UpdateUserPreferencesErrors = {
3631
3798
  /**
3632
- * Unauthorized
3799
+ * Unauthorized (session)
3633
3800
  */
3634
3801
  401: Error401;
3635
3802
  /**
@@ -3658,7 +3825,7 @@ export type DeleteUserActivityData = {
3658
3825
  };
3659
3826
  export type DeleteUserActivityErrors = {
3660
3827
  /**
3661
- * Unauthorized
3828
+ * Unauthorized (session)
3662
3829
  */
3663
3830
  401: Error401;
3664
3831
  /**
@@ -3672,7 +3839,6 @@ export type DeleteUserActivityResponses = {
3672
3839
  * OK
3673
3840
  */
3674
3841
  200: {
3675
- message: string;
3676
3842
  deletedCount: number;
3677
3843
  };
3678
3844
  };
@@ -3682,13 +3848,13 @@ export type ListUserActivityData = {
3682
3848
  path?: never;
3683
3849
  query?: {
3684
3850
  /**
3685
- * Cursor for pagination (activity ID to start after)
3851
+ * Opaque cursor token for keyset pagination
3686
3852
  */
3687
- cursor?: number;
3853
+ cursor?: string;
3688
3854
  /**
3689
3855
  * Number of results per page
3690
3856
  */
3691
- limit?: number;
3857
+ take?: number;
3692
3858
  /**
3693
3859
  * Filter by activity type
3694
3860
  */
@@ -3702,7 +3868,7 @@ export type ListUserActivityData = {
3702
3868
  };
3703
3869
  export type ListUserActivityErrors = {
3704
3870
  /**
3705
- * Unauthorized
3871
+ * Unauthorized (session)
3706
3872
  */
3707
3873
  401: Error401;
3708
3874
  /**
@@ -3717,10 +3883,44 @@ export type ListUserActivityResponses = {
3717
3883
  */
3718
3884
  200: {
3719
3885
  activities: Array<UserActivity>;
3720
- pagination: CursorPagination;
3886
+ pagination: OpaqueCursorPagination;
3721
3887
  };
3722
3888
  };
3723
3889
  export type ListUserActivityResponse = ListUserActivityResponses[keyof ListUserActivityResponses];
3890
+ export type TrackUserActivityData = {
3891
+ body: {
3892
+ activityType: 'SEGMENT_PLAY' | 'SHARE';
3893
+ segmentUuid?: string;
3894
+ mediaId?: number;
3895
+ mediaName?: string;
3896
+ japaneseText?: string;
3897
+ };
3898
+ path?: never;
3899
+ query?: never;
3900
+ url: '/v1/user/activity';
3901
+ };
3902
+ export type TrackUserActivityErrors = {
3903
+ /**
3904
+ * Bad Request
3905
+ */
3906
+ 400: Error400;
3907
+ /**
3908
+ * Unauthorized (session)
3909
+ */
3910
+ 401: Error401;
3911
+ /**
3912
+ * Internal Server Error
3913
+ */
3914
+ 500: Error500;
3915
+ };
3916
+ export type TrackUserActivityError = TrackUserActivityErrors[keyof TrackUserActivityErrors];
3917
+ export type TrackUserActivityResponses = {
3918
+ /**
3919
+ * Activity tracked
3920
+ */
3921
+ 204: void;
3922
+ };
3923
+ export type TrackUserActivityResponse = TrackUserActivityResponses[keyof TrackUserActivityResponses];
3724
3924
  export type GetUserActivityHeatmapData = {
3725
3925
  body?: never;
3726
3926
  path?: never;
@@ -3729,16 +3929,12 @@ export type GetUserActivityHeatmapData = {
3729
3929
  * Number of days to include in the heatmap
3730
3930
  */
3731
3931
  days?: number;
3732
- /**
3733
- * Filter by activity type
3734
- */
3735
- activityType?: ActivityType;
3736
3932
  };
3737
3933
  url: '/v1/user/activity/heatmap';
3738
3934
  };
3739
3935
  export type GetUserActivityHeatmapErrors = {
3740
3936
  /**
3741
- * Unauthorized
3937
+ * Unauthorized (session)
3742
3938
  */
3743
3939
  401: Error401;
3744
3940
  /**
@@ -3753,10 +3949,10 @@ export type GetUserActivityHeatmapResponses = {
3753
3949
  */
3754
3950
  200: {
3755
3951
  /**
3756
- * Map of YYYY-MM-DD date strings to activity counts
3952
+ * Map of YYYY-MM-DD date strings to per-type activity counts
3757
3953
  */
3758
- counts: {
3759
- [key: string]: number;
3954
+ activityByDay: {
3955
+ [key: string]: HeatmapDayCounts;
3760
3956
  };
3761
3957
  };
3762
3958
  };
@@ -3774,7 +3970,7 @@ export type GetUserActivityStatsData = {
3774
3970
  };
3775
3971
  export type GetUserActivityStatsErrors = {
3776
3972
  /**
3777
- * Unauthorized
3973
+ * Unauthorized (session)
3778
3974
  */
3779
3975
  401: Error401;
3780
3976
  /**
@@ -3792,10 +3988,7 @@ export type GetUserActivityStatsResponses = {
3792
3988
  totalExports: number;
3793
3989
  totalPlays: number;
3794
3990
  totalListAdds: number;
3795
- /**
3796
- * Consecutive days with at least one activity
3797
- */
3798
- streakDays: number;
3991
+ totalShares: number;
3799
3992
  topMedia: Array<{
3800
3993
  mediaId: number;
3801
3994
  count: number;
@@ -3803,6 +3996,70 @@ export type GetUserActivityStatsResponses = {
3803
3996
  };
3804
3997
  };
3805
3998
  export type GetUserActivityStatsResponse = GetUserActivityStatsResponses[keyof GetUserActivityStatsResponses];
3999
+ export type DeleteUserActivityByDateData = {
4000
+ body?: never;
4001
+ path: {
4002
+ /**
4003
+ * Date in YYYY-MM-DD format
4004
+ */
4005
+ date: string;
4006
+ };
4007
+ query?: never;
4008
+ url: '/v1/user/activity/date/{date}';
4009
+ };
4010
+ export type DeleteUserActivityByDateErrors = {
4011
+ /**
4012
+ * Unauthorized (session)
4013
+ */
4014
+ 401: Error401;
4015
+ /**
4016
+ * Internal Server Error
4017
+ */
4018
+ 500: Error500;
4019
+ };
4020
+ export type DeleteUserActivityByDateError = DeleteUserActivityByDateErrors[keyof DeleteUserActivityByDateErrors];
4021
+ export type DeleteUserActivityByDateResponses = {
4022
+ /**
4023
+ * OK
4024
+ */
4025
+ 200: {
4026
+ deletedCount: number;
4027
+ };
4028
+ };
4029
+ export type DeleteUserActivityByDateResponse = DeleteUserActivityByDateResponses[keyof DeleteUserActivityByDateResponses];
4030
+ export type DeleteUserActivityByIdData = {
4031
+ body?: never;
4032
+ path: {
4033
+ /**
4034
+ * Activity record ID
4035
+ */
4036
+ id: number;
4037
+ };
4038
+ query?: never;
4039
+ url: '/v1/user/activity/{id}';
4040
+ };
4041
+ export type DeleteUserActivityByIdErrors = {
4042
+ /**
4043
+ * Unauthorized (session)
4044
+ */
4045
+ 401: Error401;
4046
+ /**
4047
+ * Not Found
4048
+ */
4049
+ 404: Error404;
4050
+ /**
4051
+ * Internal Server Error
4052
+ */
4053
+ 500: Error500;
4054
+ };
4055
+ export type DeleteUserActivityByIdError = DeleteUserActivityByIdErrors[keyof DeleteUserActivityByIdErrors];
4056
+ export type DeleteUserActivityByIdResponses = {
4057
+ /**
4058
+ * Activity deleted
4059
+ */
4060
+ 204: void;
4061
+ };
4062
+ export type DeleteUserActivityByIdResponse = DeleteUserActivityByIdResponses[keyof DeleteUserActivityByIdResponses];
3806
4063
  export type ExportUserDataData = {
3807
4064
  body?: never;
3808
4065
  path?: never;
@@ -3811,7 +4068,7 @@ export type ExportUserDataData = {
3811
4068
  };
3812
4069
  export type ExportUserDataErrors = {
3813
4070
  /**
3814
- * Unauthorized
4071
+ * Unauthorized (session)
3815
4072
  */
3816
4073
  401: Error401;
3817
4074
  /**
@@ -3835,7 +4092,7 @@ export type ListUserLabsData = {
3835
4092
  };
3836
4093
  export type ListUserLabsErrors = {
3837
4094
  /**
3838
- * Unauthorized
4095
+ * Unauthorized (session)
3839
4096
  */
3840
4097
  401: Error401;
3841
4098
  /**
@@ -3851,6 +4108,72 @@ export type ListUserLabsResponses = {
3851
4108
  200: Array<UserLabFeature>;
3852
4109
  };
3853
4110
  export type ListUserLabsResponse = ListUserLabsResponses[keyof ListUserLabsResponses];
4111
+ export type UnenrollUserLabData = {
4112
+ body?: never;
4113
+ path: {
4114
+ /**
4115
+ * Lab feature key
4116
+ */
4117
+ key: string;
4118
+ };
4119
+ query?: never;
4120
+ url: '/v1/user/labs/{key}';
4121
+ };
4122
+ export type UnenrollUserLabErrors = {
4123
+ /**
4124
+ * Unauthorized (session)
4125
+ */
4126
+ 401: Error401;
4127
+ /**
4128
+ * Not Found
4129
+ */
4130
+ 404: Error404;
4131
+ /**
4132
+ * Internal Server Error
4133
+ */
4134
+ 500: Error500;
4135
+ };
4136
+ export type UnenrollUserLabError = UnenrollUserLabErrors[keyof UnenrollUserLabErrors];
4137
+ export type UnenrollUserLabResponses = {
4138
+ /**
4139
+ * Unenrolled successfully
4140
+ */
4141
+ 204: void;
4142
+ };
4143
+ export type UnenrollUserLabResponse = UnenrollUserLabResponses[keyof UnenrollUserLabResponses];
4144
+ export type EnrollUserLabData = {
4145
+ body?: never;
4146
+ path: {
4147
+ /**
4148
+ * Lab feature key
4149
+ */
4150
+ key: string;
4151
+ };
4152
+ query?: never;
4153
+ url: '/v1/user/labs/{key}';
4154
+ };
4155
+ export type EnrollUserLabErrors = {
4156
+ /**
4157
+ * Unauthorized (session)
4158
+ */
4159
+ 401: Error401;
4160
+ /**
4161
+ * Not Found
4162
+ */
4163
+ 404: Error404;
4164
+ /**
4165
+ * Internal Server Error
4166
+ */
4167
+ 500: Error500;
4168
+ };
4169
+ export type EnrollUserLabError = EnrollUserLabErrors[keyof EnrollUserLabErrors];
4170
+ export type EnrollUserLabResponses = {
4171
+ /**
4172
+ * Enrolled successfully
4173
+ */
4174
+ 204: void;
4175
+ };
4176
+ export type EnrollUserLabResponse = EnrollUserLabResponses[keyof EnrollUserLabResponses];
3854
4177
  export type ListCollectionsData = {
3855
4178
  body?: never;
3856
4179
  path?: never;
@@ -3860,19 +4183,13 @@ export type ListCollectionsData = {
3860
4183
  */
3861
4184
  visibility?: 'public' | 'private';
3862
4185
  /**
3863
- * Cursor offset for pagination
4186
+ * Opaque pagination cursor token
3864
4187
  */
3865
- cursor?: number;
3866
- /**
3867
- * Page number (1-indexed)
3868
- *
3869
- * @deprecated
3870
- */
3871
- page?: number;
4188
+ cursor?: string;
3872
4189
  /**
3873
4190
  * Items per page
3874
4191
  */
3875
- limit?: number;
4192
+ take?: number;
3876
4193
  };
3877
4194
  url: '/v1/collections';
3878
4195
  };
@@ -3882,7 +4199,7 @@ export type ListCollectionsErrors = {
3882
4199
  */
3883
4200
  400: Error400;
3884
4201
  /**
3885
- * Unauthorized
4202
+ * Unauthorized (session)
3886
4203
  */
3887
4204
  401: Error401;
3888
4205
  /**
@@ -3918,7 +4235,7 @@ export type CreateCollectionErrors = {
3918
4235
  */
3919
4236
  400: Error400;
3920
4237
  /**
3921
- * Unauthorized
4238
+ * Unauthorized (session)
3922
4239
  */
3923
4240
  401: Error401;
3924
4241
  /**
@@ -3959,7 +4276,7 @@ export type DeleteCollectionErrors = {
3959
4276
  */
3960
4277
  400: Error400;
3961
4278
  /**
3962
- * Unauthorized
4279
+ * Unauthorized (session)
3963
4280
  */
3964
4281
  401: Error401;
3965
4282
  /**
@@ -3997,19 +4314,13 @@ export type GetCollectionData = {
3997
4314
  };
3998
4315
  query?: {
3999
4316
  /**
4000
- * Cursor offset for paginated segments
4001
- */
4002
- cursor?: number;
4003
- /**
4004
- * Page number (1-indexed)
4005
- *
4006
- * @deprecated
4317
+ * Opaque pagination cursor token for paginated segments
4007
4318
  */
4008
- page?: number;
4319
+ cursor?: string;
4009
4320
  /**
4010
4321
  * Items per page
4011
4322
  */
4012
- limit?: number;
4323
+ take?: number;
4013
4324
  };
4014
4325
  url: '/v1/collections/{id}';
4015
4326
  };
@@ -4019,7 +4330,7 @@ export type GetCollectionErrors = {
4019
4330
  */
4020
4331
  400: Error400;
4021
4332
  /**
4022
- * Unauthorized
4333
+ * Unauthorized (session)
4023
4334
  */
4024
4335
  401: Error401;
4025
4336
  /**
@@ -4067,7 +4378,7 @@ export type UpdateCollectionErrors = {
4067
4378
  */
4068
4379
  400: Error400;
4069
4380
  /**
4070
- * Unauthorized
4381
+ * Unauthorized (session)
4071
4382
  */
4072
4383
  401: Error401;
4073
4384
  /**
@@ -4090,19 +4401,122 @@ export type UpdateCollectionErrors = {
4090
4401
  export type UpdateCollectionError = UpdateCollectionErrors[keyof UpdateCollectionErrors];
4091
4402
  export type UpdateCollectionResponses = {
4092
4403
  /**
4093
- * OK
4404
+ * OK
4405
+ */
4406
+ 200: Collection;
4407
+ };
4408
+ export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCollectionResponses];
4409
+ export type AddSegmentToCollectionData = {
4410
+ body: {
4411
+ /**
4412
+ * UUID of the segment to add
4413
+ */
4414
+ segmentUuid: string;
4415
+ /**
4416
+ * Optional annotation
4417
+ */
4418
+ note?: string;
4419
+ };
4420
+ path: {
4421
+ /**
4422
+ * Collection ID
4423
+ */
4424
+ id: number;
4425
+ };
4426
+ query?: never;
4427
+ url: '/v1/collections/{id}/segments';
4428
+ };
4429
+ export type AddSegmentToCollectionErrors = {
4430
+ /**
4431
+ * Bad Request
4432
+ */
4433
+ 400: Error400;
4434
+ /**
4435
+ * Unauthorized (session)
4436
+ */
4437
+ 401: Error401;
4438
+ /**
4439
+ * Forbidden
4440
+ */
4441
+ 403: Error403;
4442
+ /**
4443
+ * Not Found
4444
+ */
4445
+ 404: Error404;
4446
+ /**
4447
+ * Too Many Requests
4448
+ */
4449
+ 429: Error429;
4450
+ /**
4451
+ * Internal Server Error
4452
+ */
4453
+ 500: Error500;
4454
+ };
4455
+ export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4456
+ export type AddSegmentToCollectionResponses = {
4457
+ /**
4458
+ * No Content
4459
+ */
4460
+ 204: void;
4461
+ };
4462
+ export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4463
+ export type RemoveSegmentFromCollectionData = {
4464
+ body?: never;
4465
+ path: {
4466
+ /**
4467
+ * Collection ID
4468
+ */
4469
+ id: number;
4470
+ /**
4471
+ * Segment UUID
4472
+ */
4473
+ uuid: string;
4474
+ };
4475
+ query?: never;
4476
+ url: '/v1/collections/{id}/segments/{uuid}';
4477
+ };
4478
+ export type RemoveSegmentFromCollectionErrors = {
4479
+ /**
4480
+ * Bad Request
4481
+ */
4482
+ 400: Error400;
4483
+ /**
4484
+ * Unauthorized (session)
4485
+ */
4486
+ 401: Error401;
4487
+ /**
4488
+ * Forbidden
4489
+ */
4490
+ 403: Error403;
4491
+ /**
4492
+ * Not Found
4493
+ */
4494
+ 404: Error404;
4495
+ /**
4496
+ * Too Many Requests
4497
+ */
4498
+ 429: Error429;
4499
+ /**
4500
+ * Internal Server Error
4501
+ */
4502
+ 500: Error500;
4503
+ };
4504
+ export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4505
+ export type RemoveSegmentFromCollectionResponses = {
4506
+ /**
4507
+ * No Content
4094
4508
  */
4095
- 200: Collection;
4509
+ 204: void;
4096
4510
  };
4097
- export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCollectionResponses];
4098
- export type AddSegmentToCollectionData = {
4511
+ export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4512
+ export type UpdateCollectionSegmentData = {
4099
4513
  body: {
4100
4514
  /**
4101
- * UUID of the segment to add
4515
+ * New position in the collection
4102
4516
  */
4103
- segmentUuid: string;
4517
+ position?: number;
4104
4518
  /**
4105
- * Optional annotation
4519
+ * Updated annotation
4106
4520
  */
4107
4521
  note?: string;
4108
4522
  };
@@ -4111,17 +4525,21 @@ export type AddSegmentToCollectionData = {
4111
4525
  * Collection ID
4112
4526
  */
4113
4527
  id: number;
4528
+ /**
4529
+ * Segment UUID
4530
+ */
4531
+ uuid: string;
4114
4532
  };
4115
4533
  query?: never;
4116
- url: '/v1/collections/{id}/segments';
4534
+ url: '/v1/collections/{id}/segments/{uuid}';
4117
4535
  };
4118
- export type AddSegmentToCollectionErrors = {
4536
+ export type UpdateCollectionSegmentErrors = {
4119
4537
  /**
4120
4538
  * Bad Request
4121
4539
  */
4122
4540
  400: Error400;
4123
4541
  /**
4124
- * Unauthorized
4542
+ * Unauthorized (session)
4125
4543
  */
4126
4544
  401: Error401;
4127
4545
  /**
@@ -4141,36 +4559,41 @@ export type AddSegmentToCollectionErrors = {
4141
4559
  */
4142
4560
  500: Error500;
4143
4561
  };
4144
- export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4145
- export type AddSegmentToCollectionResponses = {
4562
+ export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4563
+ export type UpdateCollectionSegmentResponses = {
4146
4564
  /**
4147
4565
  * No Content
4148
4566
  */
4149
4567
  204: void;
4150
4568
  };
4151
- export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4152
- export type RemoveSegmentFromCollectionData = {
4569
+ export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4570
+ export type SearchCollectionSegmentsData = {
4153
4571
  body?: never;
4154
4572
  path: {
4155
4573
  /**
4156
4574
  * Collection ID
4157
4575
  */
4158
4576
  id: number;
4577
+ };
4578
+ query?: {
4159
4579
  /**
4160
- * Segment UUID
4580
+ * Opaque cursor token for pagination
4161
4581
  */
4162
- uuid: string;
4582
+ cursor?: string;
4583
+ /**
4584
+ * Items per page
4585
+ */
4586
+ take?: number;
4163
4587
  };
4164
- query?: never;
4165
- url: '/v1/collections/{id}/segments/{uuid}';
4588
+ url: '/v1/collections/{id}/search';
4166
4589
  };
4167
- export type RemoveSegmentFromCollectionErrors = {
4590
+ export type SearchCollectionSegmentsErrors = {
4168
4591
  /**
4169
4592
  * Bad Request
4170
4593
  */
4171
4594
  400: Error400;
4172
4595
  /**
4173
- * Unauthorized
4596
+ * Unauthorized (session)
4174
4597
  */
4175
4598
  401: Error401;
4176
4599
  /**
@@ -4190,45 +4613,32 @@ export type RemoveSegmentFromCollectionErrors = {
4190
4613
  */
4191
4614
  500: Error500;
4192
4615
  };
4193
- export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4194
- export type RemoveSegmentFromCollectionResponses = {
4616
+ export type SearchCollectionSegmentsError = SearchCollectionSegmentsErrors[keyof SearchCollectionSegmentsErrors];
4617
+ export type SearchCollectionSegmentsResponses = {
4195
4618
  /**
4196
- * No Content
4619
+ * OK
4197
4620
  */
4198
- 204: void;
4621
+ 200: SearchResponse;
4199
4622
  };
4200
- export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4201
- export type UpdateCollectionSegmentData = {
4202
- body: {
4203
- /**
4204
- * New position in the collection
4205
- */
4206
- position?: number;
4207
- /**
4208
- * Updated annotation
4209
- */
4210
- note?: string;
4211
- };
4623
+ export type SearchCollectionSegmentsResponse = SearchCollectionSegmentsResponses[keyof SearchCollectionSegmentsResponses];
4624
+ export type GetCollectionStatsData = {
4625
+ body?: never;
4212
4626
  path: {
4213
4627
  /**
4214
4628
  * Collection ID
4215
4629
  */
4216
4630
  id: number;
4217
- /**
4218
- * Segment UUID
4219
- */
4220
- uuid: string;
4221
4631
  };
4222
4632
  query?: never;
4223
- url: '/v1/collections/{id}/segments/{uuid}';
4633
+ url: '/v1/collections/{id}/stats';
4224
4634
  };
4225
- export type UpdateCollectionSegmentErrors = {
4635
+ export type GetCollectionStatsErrors = {
4226
4636
  /**
4227
4637
  * Bad Request
4228
4638
  */
4229
4639
  400: Error400;
4230
4640
  /**
4231
- * Unauthorized
4641
+ * Unauthorized (session)
4232
4642
  */
4233
4643
  401: Error401;
4234
4644
  /**
@@ -4248,14 +4658,14 @@ export type UpdateCollectionSegmentErrors = {
4248
4658
  */
4249
4659
  500: Error500;
4250
4660
  };
4251
- export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4252
- export type UpdateCollectionSegmentResponses = {
4661
+ export type GetCollectionStatsError = GetCollectionStatsErrors[keyof GetCollectionStatsErrors];
4662
+ export type GetCollectionStatsResponses = {
4253
4663
  /**
4254
- * No Content
4664
+ * OK
4255
4665
  */
4256
- 204: void;
4666
+ 200: SearchStatsResponse;
4257
4667
  };
4258
- export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4668
+ export type GetCollectionStatsResponse = GetCollectionStatsResponses[keyof GetCollectionStatsResponses];
4259
4669
  export type GetAdminDashboardData = {
4260
4670
  body?: never;
4261
4671
  path?: never;
@@ -4264,7 +4674,7 @@ export type GetAdminDashboardData = {
4264
4674
  };
4265
4675
  export type GetAdminDashboardErrors = {
4266
4676
  /**
4267
- * Unauthorized
4677
+ * Unauthorized (session)
4268
4678
  */
4269
4679
  401: Error401;
4270
4680
  /**
@@ -4356,7 +4766,7 @@ export type GetAdminHealthData = {
4356
4766
  };
4357
4767
  export type GetAdminHealthErrors = {
4358
4768
  /**
4359
- * Unauthorized
4769
+ * Unauthorized (session)
4360
4770
  */
4361
4771
  401: Error401;
4362
4772
  /**
@@ -4418,7 +4828,7 @@ export type TriggerReindexErrors = {
4418
4828
  */
4419
4829
  400: Error400;
4420
4830
  /**
4421
- * Unauthorized
4831
+ * Unauthorized (session)
4422
4832
  */
4423
4833
  401: Error401;
4424
4834
  /**
@@ -4454,7 +4864,7 @@ export type ListAdminQueueStatsErrors = {
4454
4864
  */
4455
4865
  400: Error400;
4456
4866
  /**
4457
- * Unauthorized
4867
+ * Unauthorized (session)
4458
4868
  */
4459
4869
  401: Error401;
4460
4870
  /**
@@ -4476,15 +4886,15 @@ export type ListAdminQueueStatsResponses = {
4476
4886
  * Queue statistics retrieved successfully
4477
4887
  */
4478
4888
  200: Array<{
4479
- queue?: string;
4889
+ queue: string;
4480
4890
  /**
4481
4891
  * Number of jobs currently pending/active
4482
4892
  */
4483
- stuckCount?: number;
4893
+ stuckCount: number;
4484
4894
  /**
4485
4895
  * Number of failed jobs
4486
4896
  */
4487
- failedCount?: number;
4897
+ failedCount: number;
4488
4898
  }>;
4489
4899
  };
4490
4900
  export type ListAdminQueueStatsResponse = ListAdminQueueStatsResponses[keyof ListAdminQueueStatsResponses];
@@ -4505,7 +4915,7 @@ export type GetAdminQueueErrors = {
4505
4915
  */
4506
4916
  400: Error400;
4507
4917
  /**
4508
- * Unauthorized
4918
+ * Unauthorized (session)
4509
4919
  */
4510
4920
  401: Error401;
4511
4921
  /**
@@ -4590,7 +5000,7 @@ export type ListAdminQueueFailedErrors = {
4590
5000
  */
4591
5001
  400: Error400;
4592
5002
  /**
4593
- * Unauthorized
5003
+ * Unauthorized (session)
4594
5004
  */
4595
5005
  401: Error401;
4596
5006
  /**
@@ -4615,19 +5025,19 @@ export type ListAdminQueueFailedResponses = {
4615
5025
  /**
4616
5026
  * Job ID
4617
5027
  */
4618
- id?: string;
5028
+ id: string;
4619
5029
  /**
4620
5030
  * The segment ID that failed to sync
4621
5031
  */
4622
- segmentId?: number;
5032
+ segmentId: number;
4623
5033
  /**
4624
5034
  * Error message from the last attempt
4625
5035
  */
4626
- error?: string;
5036
+ error: string;
4627
5037
  /**
4628
5038
  * When the job was created
4629
5039
  */
4630
- createdOn?: string;
5040
+ createdOn: string;
4631
5041
  }>;
4632
5042
  };
4633
5043
  export type ListAdminQueueFailedResponse = ListAdminQueueFailedResponses[keyof ListAdminQueueFailedResponses];
@@ -4648,7 +5058,7 @@ export type RetryAdminQueueFailedErrors = {
4648
5058
  */
4649
5059
  400: Error400;
4650
5060
  /**
4651
- * Unauthorized
5061
+ * Unauthorized (session)
4652
5062
  */
4653
5063
  401: Error401;
4654
5064
  /**
@@ -4670,12 +5080,12 @@ export type RetryAdminQueueFailedResponses = {
4670
5080
  * Jobs queued for retry
4671
5081
  */
4672
5082
  200: {
4673
- success?: boolean;
5083
+ success: boolean;
4674
5084
  /**
4675
5085
  * Number of jobs queued for retry
4676
5086
  */
4677
- retriedCount?: number;
4678
- message?: string;
5087
+ retriedCount: number;
5088
+ message: string;
4679
5089
  };
4680
5090
  };
4681
5091
  export type RetryAdminQueueFailedResponse = RetryAdminQueueFailedResponses[keyof RetryAdminQueueFailedResponses];
@@ -4696,7 +5106,7 @@ export type PurgeAdminQueueFailedErrors = {
4696
5106
  */
4697
5107
  400: Error400;
4698
5108
  /**
4699
- * Unauthorized
5109
+ * Unauthorized (session)
4700
5110
  */
4701
5111
  401: Error401;
4702
5112
  /**
@@ -4718,27 +5128,105 @@ export type PurgeAdminQueueFailedResponses = {
4718
5128
  * Failed jobs purged successfully
4719
5129
  */
4720
5130
  200: {
4721
- success?: boolean;
5131
+ success: boolean;
4722
5132
  /**
4723
5133
  * Number of failed jobs deleted
4724
5134
  */
4725
- purgedCount?: number;
4726
- message?: string;
5135
+ purgedCount: number;
5136
+ message: string;
4727
5137
  };
4728
5138
  };
4729
5139
  export type PurgeAdminQueueFailedResponse = PurgeAdminQueueFailedResponses[keyof PurgeAdminQueueFailedResponses];
5140
+ export type ClearAdminImpersonationData = {
5141
+ body?: never;
5142
+ path?: never;
5143
+ query?: never;
5144
+ url: '/v1/admin/impersonation';
5145
+ };
5146
+ export type ClearAdminImpersonationErrors = {
5147
+ /**
5148
+ * Forbidden
5149
+ */
5150
+ 403: Error403;
5151
+ /**
5152
+ * Too Many Requests
5153
+ */
5154
+ 429: Error429;
5155
+ /**
5156
+ * Internal Server Error
5157
+ */
5158
+ 500: Error500;
5159
+ };
5160
+ export type ClearAdminImpersonationError = ClearAdminImpersonationErrors[keyof ClearAdminImpersonationErrors];
5161
+ export type ClearAdminImpersonationResponses = {
5162
+ /**
5163
+ * Impersonation session cleared
5164
+ */
5165
+ 200: {
5166
+ message: string;
5167
+ };
5168
+ };
5169
+ export type ClearAdminImpersonationResponse = ClearAdminImpersonationResponses[keyof ClearAdminImpersonationResponses];
5170
+ export type ImpersonateAdminUserData = {
5171
+ body: {
5172
+ /**
5173
+ * User ID to impersonate
5174
+ */
5175
+ userId: number;
5176
+ };
5177
+ path?: never;
5178
+ query?: never;
5179
+ url: '/v1/admin/impersonation';
5180
+ };
5181
+ export type ImpersonateAdminUserErrors = {
5182
+ /**
5183
+ * Bad Request
5184
+ */
5185
+ 400: Error400;
5186
+ /**
5187
+ * Forbidden
5188
+ */
5189
+ 403: Error403;
5190
+ /**
5191
+ * Not Found
5192
+ */
5193
+ 404: Error404;
5194
+ /**
5195
+ * Too Many Requests
5196
+ */
5197
+ 429: Error429;
5198
+ /**
5199
+ * Internal Server Error
5200
+ */
5201
+ 500: Error500;
5202
+ };
5203
+ export type ImpersonateAdminUserError = ImpersonateAdminUserErrors[keyof ImpersonateAdminUserErrors];
5204
+ export type ImpersonateAdminUserResponses = {
5205
+ /**
5206
+ * Impersonation session created
5207
+ */
5208
+ 200: {
5209
+ message: string;
5210
+ user: {
5211
+ id: number;
5212
+ username: string;
5213
+ email: string;
5214
+ };
5215
+ };
5216
+ };
5217
+ export type ImpersonateAdminUserResponse = ImpersonateAdminUserResponses[keyof ImpersonateAdminUserResponses];
4730
5218
  export type ListAdminReportsData = {
4731
5219
  body?: never;
4732
5220
  path?: never;
4733
5221
  query?: {
4734
5222
  /**
4735
- * Cursor for pagination (report ID to start after)
5223
+ * Opaque pagination cursor token
4736
5224
  */
4737
- cursor?: number;
5225
+ cursor?: string;
4738
5226
  /**
4739
5227
  * Number of results per page
4740
5228
  */
4741
- limit?: number;
5229
+ take?: number;
4742
5230
  /**
4743
5231
  * Filter by report status
4744
5232
  */
@@ -4764,15 +5252,15 @@ export type ListAdminReportsData = {
4764
5252
  */
4765
5253
  'target.segmentUuid'?: string;
4766
5254
  /**
4767
- * Filter by review check run ID
5255
+ * Filter by audit run ID
4768
5256
  */
4769
- reviewCheckRunId?: number;
5257
+ auditRunId?: number;
4770
5258
  };
4771
5259
  url: '/v1/admin/reports';
4772
5260
  };
4773
5261
  export type ListAdminReportsErrors = {
4774
5262
  /**
4775
- * Unauthorized
5263
+ * Unauthorized (session)
4776
5264
  */
4777
5265
  401: Error401;
4778
5266
  /**
@@ -4813,7 +5301,7 @@ export type UpdateAdminReportErrors = {
4813
5301
  */
4814
5302
  400: Error400;
4815
5303
  /**
4816
- * Unauthorized
5304
+ * Unauthorized (session)
4817
5305
  */
4818
5306
  401: Error401;
4819
5307
  /**
@@ -4841,56 +5329,15 @@ export type UpdateAdminReportResponses = {
4841
5329
  200: Report;
4842
5330
  };
4843
5331
  export type UpdateAdminReportResponse = UpdateAdminReportResponses[keyof UpdateAdminReportResponses];
4844
- export type RunAdminReviewData = {
4845
- body?: never;
4846
- path?: never;
4847
- query?: {
4848
- /**
4849
- * Optional category filter
4850
- */
4851
- category?: 'ANIME' | 'JDRAMA';
4852
- /**
4853
- * Optional check name to run a single check instead of all
4854
- */
4855
- checkName?: string;
4856
- };
4857
- url: '/v1/admin/review/run';
4858
- };
4859
- export type RunAdminReviewErrors = {
4860
- /**
4861
- * Unauthorized
4862
- */
4863
- 401: Error401;
4864
- /**
4865
- * Forbidden
4866
- */
4867
- 403: Error403;
4868
- /**
4869
- * Too Many Requests
4870
- */
4871
- 429: Error429;
4872
- /**
4873
- * Internal Server Error
4874
- */
4875
- 500: Error500;
4876
- };
4877
- export type RunAdminReviewError = RunAdminReviewErrors[keyof RunAdminReviewErrors];
4878
- export type RunAdminReviewResponses = {
4879
- /**
4880
- * Check run completed
4881
- */
4882
- 200: RunReviewResponse;
4883
- };
4884
- export type RunAdminReviewResponse = RunAdminReviewResponses[keyof RunAdminReviewResponses];
4885
- export type ListAdminReviewChecksData = {
5332
+ export type ListAdminMediaAuditsData = {
4886
5333
  body?: never;
4887
5334
  path?: never;
4888
5335
  query?: never;
4889
- url: '/v1/admin/review/checks';
5336
+ url: '/v1/admin/media/audits';
4890
5337
  };
4891
- export type ListAdminReviewChecksErrors = {
5338
+ export type ListAdminMediaAuditsErrors = {
4892
5339
  /**
4893
- * Unauthorized
5340
+ * Unauthorized (session)
4894
5341
  */
4895
5342
  401: Error401;
4896
5343
  /**
@@ -4906,15 +5353,15 @@ export type ListAdminReviewChecksErrors = {
4906
5353
  */
4907
5354
  500: Error500;
4908
5355
  };
4909
- export type ListAdminReviewChecksError = ListAdminReviewChecksErrors[keyof ListAdminReviewChecksErrors];
4910
- export type ListAdminReviewChecksResponses = {
5356
+ export type ListAdminMediaAuditsError = ListAdminMediaAuditsErrors[keyof ListAdminMediaAuditsErrors];
5357
+ export type ListAdminMediaAuditsResponses = {
4911
5358
  /**
4912
5359
  * OK
4913
5360
  */
4914
- 200: Array<ReviewCheck>;
5361
+ 200: Array<MediaAudit>;
4915
5362
  };
4916
- export type ListAdminReviewChecksResponse = ListAdminReviewChecksResponses[keyof ListAdminReviewChecksResponses];
4917
- export type UpdateAdminReviewCheckData = {
5363
+ export type ListAdminMediaAuditsResponse = ListAdminMediaAuditsResponses[keyof ListAdminMediaAuditsResponses];
5364
+ export type UpdateAdminMediaAuditData = {
4918
5365
  body: {
4919
5366
  /**
4920
5367
  * New threshold values
@@ -4923,26 +5370,26 @@ export type UpdateAdminReviewCheckData = {
4923
5370
  [key: string]: unknown;
4924
5371
  };
4925
5372
  /**
4926
- * Enable or disable this check
5373
+ * Enable or disable this audit
4927
5374
  */
4928
5375
  enabled?: boolean;
4929
5376
  };
4930
5377
  path: {
4931
5378
  /**
4932
- * Check name identifier
5379
+ * Audit name identifier
4933
5380
  */
4934
5381
  name: string;
4935
5382
  };
4936
5383
  query?: never;
4937
- url: '/v1/admin/review/checks/{name}';
5384
+ url: '/v1/admin/media/audits/{name}';
4938
5385
  };
4939
- export type UpdateAdminReviewCheckErrors = {
5386
+ export type UpdateAdminMediaAuditErrors = {
4940
5387
  /**
4941
5388
  * Bad Request
4942
5389
  */
4943
5390
  400: Error400;
4944
5391
  /**
4945
- * Unauthorized
5392
+ * Unauthorized (session)
4946
5393
  */
4947
5394
  401: Error401;
4948
5395
  /**
@@ -4962,76 +5409,33 @@ export type UpdateAdminReviewCheckErrors = {
4962
5409
  */
4963
5410
  500: Error500;
4964
5411
  };
4965
- export type UpdateAdminReviewCheckError = UpdateAdminReviewCheckErrors[keyof UpdateAdminReviewCheckErrors];
4966
- export type UpdateAdminReviewCheckResponses = {
5412
+ export type UpdateAdminMediaAuditError = UpdateAdminMediaAuditErrors[keyof UpdateAdminMediaAuditErrors];
5413
+ export type UpdateAdminMediaAuditResponses = {
4967
5414
  /**
4968
- * Check updated successfully
5415
+ * Audit updated successfully
4969
5416
  */
4970
- 200: ReviewCheck;
5417
+ 200: MediaAudit;
4971
5418
  };
4972
- export type UpdateAdminReviewCheckResponse = UpdateAdminReviewCheckResponses[keyof UpdateAdminReviewCheckResponses];
4973
- export type ListAdminReviewRunsData = {
5419
+ export type UpdateAdminMediaAuditResponse = UpdateAdminMediaAuditResponses[keyof UpdateAdminMediaAuditResponses];
5420
+ export type RunAdminMediaAuditData = {
4974
5421
  body?: never;
4975
- path?: never;
4976
- query?: {
4977
- /**
4978
- * Filter by check name
4979
- */
4980
- checkName?: string;
4981
- /**
4982
- * Cursor for pagination
4983
- */
4984
- cursor?: number;
5422
+ path: {
4985
5423
  /**
4986
- * Number of results per page
5424
+ * Audit name to run, or "all" to run all enabled audits
4987
5425
  */
4988
- limit?: number;
4989
- };
4990
- url: '/v1/admin/review/runs';
4991
- };
4992
- export type ListAdminReviewRunsErrors = {
4993
- /**
4994
- * Unauthorized
4995
- */
4996
- 401: Error401;
4997
- /**
4998
- * Forbidden
4999
- */
5000
- 403: Error403;
5001
- /**
5002
- * Too Many Requests
5003
- */
5004
- 429: Error429;
5005
- /**
5006
- * Internal Server Error
5007
- */
5008
- 500: Error500;
5009
- };
5010
- export type ListAdminReviewRunsError = ListAdminReviewRunsErrors[keyof ListAdminReviewRunsErrors];
5011
- export type ListAdminReviewRunsResponses = {
5012
- /**
5013
- * OK
5014
- */
5015
- 200: {
5016
- runs: Array<ReviewCheckRun>;
5017
- pagination: CursorPagination;
5426
+ name: string;
5018
5427
  };
5019
- };
5020
- export type ListAdminReviewRunsResponse = ListAdminReviewRunsResponses[keyof ListAdminReviewRunsResponses];
5021
- export type GetAdminReviewRunData = {
5022
- body?: never;
5023
- path: {
5428
+ query?: {
5024
5429
  /**
5025
- * Run ID
5430
+ * Optional category filter
5026
5431
  */
5027
- id: number;
5432
+ category?: 'ANIME' | 'JDRAMA';
5028
5433
  };
5029
- query?: never;
5030
- url: '/v1/admin/review/runs/{id}';
5434
+ url: '/v1/admin/media/audits/{name}/run';
5031
5435
  };
5032
- export type GetAdminReviewRunErrors = {
5436
+ export type RunAdminMediaAuditErrors = {
5033
5437
  /**
5034
- * Unauthorized
5438
+ * Unauthorized (session)
5035
5439
  */
5036
5440
  401: Error401;
5037
5441
  /**
@@ -5051,94 +5455,42 @@ export type GetAdminReviewRunErrors = {
5051
5455
  */
5052
5456
  500: Error500;
5053
5457
  };
5054
- export type GetAdminReviewRunError = GetAdminReviewRunErrors[keyof GetAdminReviewRunErrors];
5055
- export type GetAdminReviewRunResponses = {
5458
+ export type RunAdminMediaAuditError = RunAdminMediaAuditErrors[keyof RunAdminMediaAuditErrors];
5459
+ export type RunAdminMediaAuditResponses = {
5056
5460
  /**
5057
- * OK
5461
+ * Audit run completed
5058
5462
  */
5059
- 200: {
5060
- run: ReviewCheckRun;
5061
- reports: Array<Report>;
5062
- };
5463
+ 200: RunAuditResponse;
5063
5464
  };
5064
- export type GetAdminReviewRunResponse = GetAdminReviewRunResponses[keyof GetAdminReviewRunResponses];
5065
- export type ListAdminReviewAllowlistData = {
5465
+ export type RunAdminMediaAuditResponse = RunAdminMediaAuditResponses[keyof RunAdminMediaAuditResponses];
5466
+ export type ListAdminMediaAuditRunsData = {
5066
5467
  body?: never;
5067
5468
  path?: never;
5068
5469
  query?: {
5069
5470
  /**
5070
- * Filter by check name
5071
- */
5072
- checkName?: string;
5073
- };
5074
- url: '/v1/admin/review/allowlist';
5075
- };
5076
- export type ListAdminReviewAllowlistErrors = {
5077
- /**
5078
- * Unauthorized
5079
- */
5080
- 401: Error401;
5081
- /**
5082
- * Forbidden
5083
- */
5084
- 403: Error403;
5085
- /**
5086
- * Too Many Requests
5087
- */
5088
- 429: Error429;
5089
- /**
5090
- * Internal Server Error
5091
- */
5092
- 500: Error500;
5093
- };
5094
- export type ListAdminReviewAllowlistError = ListAdminReviewAllowlistErrors[keyof ListAdminReviewAllowlistErrors];
5095
- export type ListAdminReviewAllowlistResponses = {
5096
- /**
5097
- * OK
5098
- */
5099
- 200: Array<ReviewAllowlist>;
5100
- };
5101
- export type ListAdminReviewAllowlistResponse = ListAdminReviewAllowlistResponses[keyof ListAdminReviewAllowlistResponses];
5102
- export type CreateAdminReviewAllowlistEntryData = {
5103
- body: {
5104
- /**
5105
- * Check name to allowlist for
5106
- */
5107
- checkName: string;
5108
- /**
5109
- * Media ID to allowlist
5471
+ * Filter by audit name
5110
5472
  */
5111
- mediaId: number;
5473
+ auditName?: string;
5112
5474
  /**
5113
- * Episode number (for episode-level checks)
5475
+ * Opaque pagination cursor token
5114
5476
  */
5115
- episodeNumber?: number;
5477
+ cursor?: string;
5116
5478
  /**
5117
- * Reason for allowlisting
5479
+ * Number of results per page
5118
5480
  */
5119
- reason?: string;
5481
+ take?: number;
5120
5482
  };
5121
- path?: never;
5122
- query?: never;
5123
- url: '/v1/admin/review/allowlist';
5483
+ url: '/v1/admin/media/audits/runs';
5124
5484
  };
5125
- export type CreateAdminReviewAllowlistEntryErrors = {
5126
- /**
5127
- * Bad Request
5128
- */
5129
- 400: Error400;
5485
+ export type ListAdminMediaAuditRunsErrors = {
5130
5486
  /**
5131
- * Unauthorized
5487
+ * Unauthorized (session)
5132
5488
  */
5133
5489
  401: Error401;
5134
5490
  /**
5135
5491
  * Forbidden
5136
5492
  */
5137
5493
  403: Error403;
5138
- /**
5139
- * Conflict
5140
- */
5141
- 409: Error409;
5142
5494
  /**
5143
5495
  * Too Many Requests
5144
5496
  */
@@ -5148,28 +5500,31 @@ export type CreateAdminReviewAllowlistEntryErrors = {
5148
5500
  */
5149
5501
  500: Error500;
5150
5502
  };
5151
- export type CreateAdminReviewAllowlistEntryError = CreateAdminReviewAllowlistEntryErrors[keyof CreateAdminReviewAllowlistEntryErrors];
5152
- export type CreateAdminReviewAllowlistEntryResponses = {
5503
+ export type ListAdminMediaAuditRunsError = ListAdminMediaAuditRunsErrors[keyof ListAdminMediaAuditRunsErrors];
5504
+ export type ListAdminMediaAuditRunsResponses = {
5153
5505
  /**
5154
- * Added to allowlist
5506
+ * OK
5155
5507
  */
5156
- 201: ReviewAllowlist;
5508
+ 200: {
5509
+ runs: Array<MediaAuditRun>;
5510
+ pagination: OpaqueCursorPagination;
5511
+ };
5157
5512
  };
5158
- export type CreateAdminReviewAllowlistEntryResponse = CreateAdminReviewAllowlistEntryResponses[keyof CreateAdminReviewAllowlistEntryResponses];
5159
- export type DeleteAdminReviewAllowlistEntryData = {
5513
+ export type ListAdminMediaAuditRunsResponse = ListAdminMediaAuditRunsResponses[keyof ListAdminMediaAuditRunsResponses];
5514
+ export type GetAdminMediaAuditRunData = {
5160
5515
  body?: never;
5161
5516
  path: {
5162
5517
  /**
5163
- * Allowlist entry ID
5518
+ * Run ID
5164
5519
  */
5165
5520
  id: number;
5166
5521
  };
5167
5522
  query?: never;
5168
- url: '/v1/admin/review/allowlist/{id}';
5523
+ url: '/v1/admin/media/audits/runs/{id}';
5169
5524
  };
5170
- export type DeleteAdminReviewAllowlistEntryErrors = {
5525
+ export type GetAdminMediaAuditRunErrors = {
5171
5526
  /**
5172
- * Unauthorized
5527
+ * Unauthorized (session)
5173
5528
  */
5174
5529
  401: Error401;
5175
5530
  /**
@@ -5189,12 +5544,15 @@ export type DeleteAdminReviewAllowlistEntryErrors = {
5189
5544
  */
5190
5545
  500: Error500;
5191
5546
  };
5192
- export type DeleteAdminReviewAllowlistEntryError = DeleteAdminReviewAllowlistEntryErrors[keyof DeleteAdminReviewAllowlistEntryErrors];
5193
- export type DeleteAdminReviewAllowlistEntryResponses = {
5547
+ export type GetAdminMediaAuditRunError = GetAdminMediaAuditRunErrors[keyof GetAdminMediaAuditRunErrors];
5548
+ export type GetAdminMediaAuditRunResponses = {
5194
5549
  /**
5195
- * Removed from allowlist
5550
+ * OK
5196
5551
  */
5197
- 204: void;
5552
+ 200: {
5553
+ run: MediaAuditRun;
5554
+ reports: Array<Report>;
5555
+ };
5198
5556
  };
5199
- export type DeleteAdminReviewAllowlistEntryResponse = DeleteAdminReviewAllowlistEntryResponses[keyof DeleteAdminReviewAllowlistEntryResponses];
5557
+ export type GetAdminMediaAuditRunResponse = GetAdminMediaAuditRunResponses[keyof GetAdminMediaAuditRunResponses];
5200
5558
  //# sourceMappingURL=types.gen.d.ts.map