@brigadasos/nadeshiko-sdk 1.4.3-dev.e5c01f0 → 1.5.0-dev.0dea288

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