@brigadasos/nadeshiko-sdk 1.4.3-dev.e5c01f0 → 1.5.0-dev.220bc0b

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
1434
1534
  */
1435
- mediaId: number;
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
1568
+ */
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: number;
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;
2528
- path: {
2783
+ export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesResponses];
2784
+ export type AddMediaToSeriesData = {
2785
+ body: {
2529
2786
  /**
2530
- * ID of the media
2787
+ * Media public ID to add
2531
2788
  */
2532
- mediaId: number;
2789
+ mediaId: string;
2533
2790
  /**
2534
- * Episode number
2791
+ * Position in the series (1-indexed)
2792
+ */
2793
+ position: number;
2794
+ };
2795
+ path: {
2796
+ /**
2797
+ * Series public ID
2535
2798
  */
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
3035
+ * Media public ID
2799
3036
  */
2800
- mediaId: number;
2801
- /**
2802
- * Episode number
2803
- */
2804
- episodeNumber: number;
2805
- /**
2806
- * Segment ID
2807
- */
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
2852
- */
2853
- mediaId: number;
2854
- /**
2855
- * Episode number
3080
+ * Media public ID
2856
3081
  */
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
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
  */
@@ -3037,47 +3262,47 @@ export type ListSeriesErrors = {
3037
3262
  * Internal Server Error
3038
3263
  */
3039
3264
  500: Error500;
3040
- };
3041
- export type ListSeriesError = ListSeriesErrors[keyof ListSeriesErrors];
3042
- export type ListSeriesResponses = {
3265
+ };
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;
3603
+ /**
3604
+ * Episode number
3605
+ */
3606
+ episodeNumber: number;
3366
3607
  /**
3367
- * Media ID
3608
+ * Segment ID
3368
3609
  */
3369
- mediaId: number;
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;
3462
3709
  /**
3463
- * Resources to expand in the response (`character` is included by default)
3710
+ * Episode number
3711
+ */
3712
+ episodeNumber: number;
3713
+ /**
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)
3764
+ */
3765
+ 401: Error401;
3766
+ /**
3767
+ * Forbidden
3512
3768
  */
3513
- 401: Error401;
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,44 @@ 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: 'SEGMENT_PLAY' | 'SHARE';
3945
+ segmentId?: number;
3946
+ mediaId?: number;
3947
+ mediaName?: string;
3948
+ japaneseText?: string;
3949
+ };
3950
+ path?: never;
3951
+ query?: never;
3952
+ url: '/v1/user/activity';
3953
+ };
3954
+ export type TrackUserActivityErrors = {
3955
+ /**
3956
+ * Bad Request
3957
+ */
3958
+ 400: Error400;
3959
+ /**
3960
+ * Unauthorized (session)
3961
+ */
3962
+ 401: Error401;
3963
+ /**
3964
+ * Internal Server Error
3965
+ */
3966
+ 500: Error500;
3967
+ };
3968
+ export type TrackUserActivityError = TrackUserActivityErrors[keyof TrackUserActivityErrors];
3969
+ export type TrackUserActivityResponses = {
3970
+ /**
3971
+ * Activity tracked
3972
+ */
3973
+ 204: void;
3974
+ };
3975
+ export type TrackUserActivityResponse = TrackUserActivityResponses[keyof TrackUserActivityResponses];
3724
3976
  export type GetUserActivityHeatmapData = {
3725
3977
  body?: never;
3726
3978
  path?: never;
@@ -3729,16 +3981,12 @@ export type GetUserActivityHeatmapData = {
3729
3981
  * Number of days to include in the heatmap
3730
3982
  */
3731
3983
  days?: number;
3732
- /**
3733
- * Filter by activity type
3734
- */
3735
- activityType?: ActivityType;
3736
3984
  };
3737
3985
  url: '/v1/user/activity/heatmap';
3738
3986
  };
3739
3987
  export type GetUserActivityHeatmapErrors = {
3740
3988
  /**
3741
- * Unauthorized
3989
+ * Unauthorized (session)
3742
3990
  */
3743
3991
  401: Error401;
3744
3992
  /**
@@ -3753,10 +4001,10 @@ export type GetUserActivityHeatmapResponses = {
3753
4001
  */
3754
4002
  200: {
3755
4003
  /**
3756
- * Map of YYYY-MM-DD date strings to activity counts
4004
+ * Map of YYYY-MM-DD date strings to per-type activity counts
3757
4005
  */
3758
- counts: {
3759
- [key: string]: number;
4006
+ activityByDay: {
4007
+ [key: string]: HeatmapDayCounts;
3760
4008
  };
3761
4009
  };
3762
4010
  };
@@ -3774,7 +4022,7 @@ export type GetUserActivityStatsData = {
3774
4022
  };
3775
4023
  export type GetUserActivityStatsErrors = {
3776
4024
  /**
3777
- * Unauthorized
4025
+ * Unauthorized (session)
3778
4026
  */
3779
4027
  401: Error401;
3780
4028
  /**
@@ -3792,10 +4040,7 @@ export type GetUserActivityStatsResponses = {
3792
4040
  totalExports: number;
3793
4041
  totalPlays: number;
3794
4042
  totalListAdds: number;
3795
- /**
3796
- * Consecutive days with at least one activity
3797
- */
3798
- streakDays: number;
4043
+ totalShares: number;
3799
4044
  topMedia: Array<{
3800
4045
  mediaId: number;
3801
4046
  count: number;
@@ -3803,6 +4048,70 @@ export type GetUserActivityStatsResponses = {
3803
4048
  };
3804
4049
  };
3805
4050
  export type GetUserActivityStatsResponse = GetUserActivityStatsResponses[keyof GetUserActivityStatsResponses];
4051
+ export type DeleteUserActivityByDateData = {
4052
+ body?: never;
4053
+ path: {
4054
+ /**
4055
+ * Date in YYYY-MM-DD format
4056
+ */
4057
+ date: string;
4058
+ };
4059
+ query?: never;
4060
+ url: '/v1/user/activity/date/{date}';
4061
+ };
4062
+ export type DeleteUserActivityByDateErrors = {
4063
+ /**
4064
+ * Unauthorized (session)
4065
+ */
4066
+ 401: Error401;
4067
+ /**
4068
+ * Internal Server Error
4069
+ */
4070
+ 500: Error500;
4071
+ };
4072
+ export type DeleteUserActivityByDateError = DeleteUserActivityByDateErrors[keyof DeleteUserActivityByDateErrors];
4073
+ export type DeleteUserActivityByDateResponses = {
4074
+ /**
4075
+ * OK
4076
+ */
4077
+ 200: {
4078
+ deletedCount: number;
4079
+ };
4080
+ };
4081
+ export type DeleteUserActivityByDateResponse = DeleteUserActivityByDateResponses[keyof DeleteUserActivityByDateResponses];
4082
+ export type DeleteUserActivityByIdData = {
4083
+ body?: never;
4084
+ path: {
4085
+ /**
4086
+ * Activity record ID
4087
+ */
4088
+ id: number;
4089
+ };
4090
+ query?: never;
4091
+ url: '/v1/user/activity/{id}';
4092
+ };
4093
+ export type DeleteUserActivityByIdErrors = {
4094
+ /**
4095
+ * Unauthorized (session)
4096
+ */
4097
+ 401: Error401;
4098
+ /**
4099
+ * Not Found
4100
+ */
4101
+ 404: Error404;
4102
+ /**
4103
+ * Internal Server Error
4104
+ */
4105
+ 500: Error500;
4106
+ };
4107
+ export type DeleteUserActivityByIdError = DeleteUserActivityByIdErrors[keyof DeleteUserActivityByIdErrors];
4108
+ export type DeleteUserActivityByIdResponses = {
4109
+ /**
4110
+ * Activity deleted
4111
+ */
4112
+ 204: void;
4113
+ };
4114
+ export type DeleteUserActivityByIdResponse = DeleteUserActivityByIdResponses[keyof DeleteUserActivityByIdResponses];
3806
4115
  export type ExportUserDataData = {
3807
4116
  body?: never;
3808
4117
  path?: never;
@@ -3811,7 +4120,7 @@ export type ExportUserDataData = {
3811
4120
  };
3812
4121
  export type ExportUserDataErrors = {
3813
4122
  /**
3814
- * Unauthorized
4123
+ * Unauthorized (session)
3815
4124
  */
3816
4125
  401: Error401;
3817
4126
  /**
@@ -3835,7 +4144,7 @@ export type ListUserLabsData = {
3835
4144
  };
3836
4145
  export type ListUserLabsErrors = {
3837
4146
  /**
3838
- * Unauthorized
4147
+ * Unauthorized (session)
3839
4148
  */
3840
4149
  401: Error401;
3841
4150
  /**
@@ -3851,6 +4160,72 @@ export type ListUserLabsResponses = {
3851
4160
  200: Array<UserLabFeature>;
3852
4161
  };
3853
4162
  export type ListUserLabsResponse = ListUserLabsResponses[keyof ListUserLabsResponses];
4163
+ export type UnenrollUserLabData = {
4164
+ body?: never;
4165
+ path: {
4166
+ /**
4167
+ * Lab feature key
4168
+ */
4169
+ key: string;
4170
+ };
4171
+ query?: never;
4172
+ url: '/v1/user/labs/{key}';
4173
+ };
4174
+ export type UnenrollUserLabErrors = {
4175
+ /**
4176
+ * Unauthorized (session)
4177
+ */
4178
+ 401: Error401;
4179
+ /**
4180
+ * Not Found
4181
+ */
4182
+ 404: Error404;
4183
+ /**
4184
+ * Internal Server Error
4185
+ */
4186
+ 500: Error500;
4187
+ };
4188
+ export type UnenrollUserLabError = UnenrollUserLabErrors[keyof UnenrollUserLabErrors];
4189
+ export type UnenrollUserLabResponses = {
4190
+ /**
4191
+ * Unenrolled successfully
4192
+ */
4193
+ 204: void;
4194
+ };
4195
+ export type UnenrollUserLabResponse = UnenrollUserLabResponses[keyof UnenrollUserLabResponses];
4196
+ export type EnrollUserLabData = {
4197
+ body?: never;
4198
+ path: {
4199
+ /**
4200
+ * Lab feature key
4201
+ */
4202
+ key: string;
4203
+ };
4204
+ query?: never;
4205
+ url: '/v1/user/labs/{key}';
4206
+ };
4207
+ export type EnrollUserLabErrors = {
4208
+ /**
4209
+ * Unauthorized (session)
4210
+ */
4211
+ 401: Error401;
4212
+ /**
4213
+ * Not Found
4214
+ */
4215
+ 404: Error404;
4216
+ /**
4217
+ * Internal Server Error
4218
+ */
4219
+ 500: Error500;
4220
+ };
4221
+ export type EnrollUserLabError = EnrollUserLabErrors[keyof EnrollUserLabErrors];
4222
+ export type EnrollUserLabResponses = {
4223
+ /**
4224
+ * Enrolled successfully
4225
+ */
4226
+ 204: void;
4227
+ };
4228
+ export type EnrollUserLabResponse = EnrollUserLabResponses[keyof EnrollUserLabResponses];
3854
4229
  export type ListCollectionsData = {
3855
4230
  body?: never;
3856
4231
  path?: never;
@@ -3860,19 +4235,13 @@ export type ListCollectionsData = {
3860
4235
  */
3861
4236
  visibility?: 'public' | 'private';
3862
4237
  /**
3863
- * Cursor offset for pagination
4238
+ * Opaque pagination cursor token
3864
4239
  */
3865
- cursor?: number;
3866
- /**
3867
- * Page number (1-indexed)
3868
- *
3869
- * @deprecated
3870
- */
3871
- page?: number;
4240
+ cursor?: string;
3872
4241
  /**
3873
4242
  * Items per page
3874
4243
  */
3875
- limit?: number;
4244
+ take?: number;
3876
4245
  };
3877
4246
  url: '/v1/collections';
3878
4247
  };
@@ -3882,7 +4251,7 @@ export type ListCollectionsErrors = {
3882
4251
  */
3883
4252
  400: Error400;
3884
4253
  /**
3885
- * Unauthorized
4254
+ * Unauthorized (session)
3886
4255
  */
3887
4256
  401: Error401;
3888
4257
  /**
@@ -3918,7 +4287,7 @@ export type CreateCollectionErrors = {
3918
4287
  */
3919
4288
  400: Error400;
3920
4289
  /**
3921
- * Unauthorized
4290
+ * Unauthorized (session)
3922
4291
  */
3923
4292
  401: Error401;
3924
4293
  /**
@@ -3946,9 +4315,9 @@ export type DeleteCollectionData = {
3946
4315
  body?: never;
3947
4316
  path: {
3948
4317
  /**
3949
- * Collection ID
4318
+ * Collection public ID
3950
4319
  */
3951
- id: number;
4320
+ id: string;
3952
4321
  };
3953
4322
  query?: never;
3954
4323
  url: '/v1/collections/{id}';
@@ -3959,7 +4328,7 @@ export type DeleteCollectionErrors = {
3959
4328
  */
3960
4329
  400: Error400;
3961
4330
  /**
3962
- * Unauthorized
4331
+ * Unauthorized (session)
3963
4332
  */
3964
4333
  401: Error401;
3965
4334
  /**
@@ -3991,25 +4360,19 @@ export type GetCollectionData = {
3991
4360
  body?: never;
3992
4361
  path: {
3993
4362
  /**
3994
- * Collection ID
4363
+ * Collection public ID
3995
4364
  */
3996
- id: number;
4365
+ id: string;
3997
4366
  };
3998
4367
  query?: {
3999
4368
  /**
4000
- * Cursor offset for paginated segments
4001
- */
4002
- cursor?: number;
4003
- /**
4004
- * Page number (1-indexed)
4005
- *
4006
- * @deprecated
4369
+ * Opaque pagination cursor token for paginated segments
4007
4370
  */
4008
- page?: number;
4371
+ cursor?: string;
4009
4372
  /**
4010
4373
  * Items per page
4011
4374
  */
4012
- limit?: number;
4375
+ take?: number;
4013
4376
  };
4014
4377
  url: '/v1/collections/{id}';
4015
4378
  };
@@ -4019,7 +4382,7 @@ export type GetCollectionErrors = {
4019
4382
  */
4020
4383
  400: Error400;
4021
4384
  /**
4022
- * Unauthorized
4385
+ * Unauthorized (session)
4023
4386
  */
4024
4387
  401: Error401;
4025
4388
  /**
@@ -4054,9 +4417,9 @@ export type UpdateCollectionData = {
4054
4417
  };
4055
4418
  path: {
4056
4419
  /**
4057
- * Collection ID
4420
+ * Collection public ID
4058
4421
  */
4059
- id: number;
4422
+ id: string;
4060
4423
  };
4061
4424
  query?: never;
4062
4425
  url: '/v1/collections/{id}';
@@ -4067,7 +4430,7 @@ export type UpdateCollectionErrors = {
4067
4430
  */
4068
4431
  400: Error400;
4069
4432
  /**
4070
- * Unauthorized
4433
+ * Unauthorized (session)
4071
4434
  */
4072
4435
  401: Error401;
4073
4436
  /**
@@ -4090,38 +4453,145 @@ export type UpdateCollectionErrors = {
4090
4453
  export type UpdateCollectionError = UpdateCollectionErrors[keyof UpdateCollectionErrors];
4091
4454
  export type UpdateCollectionResponses = {
4092
4455
  /**
4093
- * OK
4456
+ * OK
4457
+ */
4458
+ 200: Collection;
4459
+ };
4460
+ export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCollectionResponses];
4461
+ export type AddSegmentToCollectionData = {
4462
+ body: {
4463
+ /**
4464
+ * Public ID or UUID of the segment to add
4465
+ */
4466
+ segmentId: string;
4467
+ /**
4468
+ * Optional annotation
4469
+ */
4470
+ note?: string;
4471
+ };
4472
+ path: {
4473
+ /**
4474
+ * Collection public ID
4475
+ */
4476
+ id: string;
4477
+ };
4478
+ query?: never;
4479
+ url: '/v1/collections/{id}/segments';
4480
+ };
4481
+ export type AddSegmentToCollectionErrors = {
4482
+ /**
4483
+ * Bad Request
4484
+ */
4485
+ 400: Error400;
4486
+ /**
4487
+ * Unauthorized (session)
4488
+ */
4489
+ 401: Error401;
4490
+ /**
4491
+ * Forbidden
4492
+ */
4493
+ 403: Error403;
4494
+ /**
4495
+ * Not Found
4496
+ */
4497
+ 404: Error404;
4498
+ /**
4499
+ * Too Many Requests
4500
+ */
4501
+ 429: Error429;
4502
+ /**
4503
+ * Internal Server Error
4504
+ */
4505
+ 500: Error500;
4506
+ };
4507
+ export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4508
+ export type AddSegmentToCollectionResponses = {
4509
+ /**
4510
+ * No Content
4511
+ */
4512
+ 204: void;
4513
+ };
4514
+ export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4515
+ export type RemoveSegmentFromCollectionData = {
4516
+ body?: never;
4517
+ path: {
4518
+ /**
4519
+ * Collection public ID
4520
+ */
4521
+ id: string;
4522
+ /**
4523
+ * Segment ID
4524
+ */
4525
+ segmentId: number;
4526
+ };
4527
+ query?: never;
4528
+ url: '/v1/collections/{id}/segments/{segmentId}';
4529
+ };
4530
+ export type RemoveSegmentFromCollectionErrors = {
4531
+ /**
4532
+ * Bad Request
4533
+ */
4534
+ 400: Error400;
4535
+ /**
4536
+ * Unauthorized (session)
4537
+ */
4538
+ 401: Error401;
4539
+ /**
4540
+ * Forbidden
4541
+ */
4542
+ 403: Error403;
4543
+ /**
4544
+ * Not Found
4545
+ */
4546
+ 404: Error404;
4547
+ /**
4548
+ * Too Many Requests
4549
+ */
4550
+ 429: Error429;
4551
+ /**
4552
+ * Internal Server Error
4553
+ */
4554
+ 500: Error500;
4555
+ };
4556
+ export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4557
+ export type RemoveSegmentFromCollectionResponses = {
4558
+ /**
4559
+ * No Content
4094
4560
  */
4095
- 200: Collection;
4561
+ 204: void;
4096
4562
  };
4097
- export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCollectionResponses];
4098
- export type AddSegmentToCollectionData = {
4563
+ export type RemoveSegmentFromCollectionResponse = RemoveSegmentFromCollectionResponses[keyof RemoveSegmentFromCollectionResponses];
4564
+ export type UpdateCollectionSegmentData = {
4099
4565
  body: {
4100
4566
  /**
4101
- * UUID of the segment to add
4567
+ * New position in the collection
4102
4568
  */
4103
- segmentUuid: string;
4569
+ position?: number;
4104
4570
  /**
4105
- * Optional annotation
4571
+ * Updated annotation
4106
4572
  */
4107
4573
  note?: string;
4108
4574
  };
4109
4575
  path: {
4110
4576
  /**
4111
- * Collection ID
4577
+ * Collection public ID
4112
4578
  */
4113
- id: number;
4579
+ id: string;
4580
+ /**
4581
+ * Segment ID
4582
+ */
4583
+ segmentId: number;
4114
4584
  };
4115
4585
  query?: never;
4116
- url: '/v1/collections/{id}/segments';
4586
+ url: '/v1/collections/{id}/segments/{segmentId}';
4117
4587
  };
4118
- export type AddSegmentToCollectionErrors = {
4588
+ export type UpdateCollectionSegmentErrors = {
4119
4589
  /**
4120
4590
  * Bad Request
4121
4591
  */
4122
4592
  400: Error400;
4123
4593
  /**
4124
- * Unauthorized
4594
+ * Unauthorized (session)
4125
4595
  */
4126
4596
  401: Error401;
4127
4597
  /**
@@ -4141,36 +4611,41 @@ export type AddSegmentToCollectionErrors = {
4141
4611
  */
4142
4612
  500: Error500;
4143
4613
  };
4144
- export type AddSegmentToCollectionError = AddSegmentToCollectionErrors[keyof AddSegmentToCollectionErrors];
4145
- export type AddSegmentToCollectionResponses = {
4614
+ export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4615
+ export type UpdateCollectionSegmentResponses = {
4146
4616
  /**
4147
4617
  * No Content
4148
4618
  */
4149
4619
  204: void;
4150
4620
  };
4151
- export type AddSegmentToCollectionResponse = AddSegmentToCollectionResponses[keyof AddSegmentToCollectionResponses];
4152
- export type RemoveSegmentFromCollectionData = {
4621
+ export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4622
+ export type SearchCollectionSegmentsData = {
4153
4623
  body?: never;
4154
4624
  path: {
4155
4625
  /**
4156
- * Collection ID
4626
+ * Collection public ID
4157
4627
  */
4158
- id: number;
4628
+ id: string;
4629
+ };
4630
+ query?: {
4159
4631
  /**
4160
- * Segment UUID
4632
+ * Opaque cursor token for pagination
4161
4633
  */
4162
- uuid: string;
4634
+ cursor?: string;
4635
+ /**
4636
+ * Items per page
4637
+ */
4638
+ take?: number;
4163
4639
  };
4164
- query?: never;
4165
- url: '/v1/collections/{id}/segments/{uuid}';
4640
+ url: '/v1/collections/{id}/search';
4166
4641
  };
4167
- export type RemoveSegmentFromCollectionErrors = {
4642
+ export type SearchCollectionSegmentsErrors = {
4168
4643
  /**
4169
4644
  * Bad Request
4170
4645
  */
4171
4646
  400: Error400;
4172
4647
  /**
4173
- * Unauthorized
4648
+ * Unauthorized (session)
4174
4649
  */
4175
4650
  401: Error401;
4176
4651
  /**
@@ -4190,45 +4665,32 @@ export type RemoveSegmentFromCollectionErrors = {
4190
4665
  */
4191
4666
  500: Error500;
4192
4667
  };
4193
- export type RemoveSegmentFromCollectionError = RemoveSegmentFromCollectionErrors[keyof RemoveSegmentFromCollectionErrors];
4194
- export type RemoveSegmentFromCollectionResponses = {
4668
+ export type SearchCollectionSegmentsError = SearchCollectionSegmentsErrors[keyof SearchCollectionSegmentsErrors];
4669
+ export type SearchCollectionSegmentsResponses = {
4195
4670
  /**
4196
- * No Content
4671
+ * OK
4197
4672
  */
4198
- 204: void;
4673
+ 200: SearchResponse;
4199
4674
  };
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
- };
4675
+ export type SearchCollectionSegmentsResponse = SearchCollectionSegmentsResponses[keyof SearchCollectionSegmentsResponses];
4676
+ export type GetCollectionStatsData = {
4677
+ body?: never;
4212
4678
  path: {
4213
4679
  /**
4214
- * Collection ID
4215
- */
4216
- id: number;
4217
- /**
4218
- * Segment UUID
4680
+ * Collection public ID
4219
4681
  */
4220
- uuid: string;
4682
+ id: string;
4221
4683
  };
4222
4684
  query?: never;
4223
- url: '/v1/collections/{id}/segments/{uuid}';
4685
+ url: '/v1/collections/{id}/stats';
4224
4686
  };
4225
- export type UpdateCollectionSegmentErrors = {
4687
+ export type GetCollectionStatsErrors = {
4226
4688
  /**
4227
4689
  * Bad Request
4228
4690
  */
4229
4691
  400: Error400;
4230
4692
  /**
4231
- * Unauthorized
4693
+ * Unauthorized (session)
4232
4694
  */
4233
4695
  401: Error401;
4234
4696
  /**
@@ -4248,14 +4710,14 @@ export type UpdateCollectionSegmentErrors = {
4248
4710
  */
4249
4711
  500: Error500;
4250
4712
  };
4251
- export type UpdateCollectionSegmentError = UpdateCollectionSegmentErrors[keyof UpdateCollectionSegmentErrors];
4252
- export type UpdateCollectionSegmentResponses = {
4713
+ export type GetCollectionStatsError = GetCollectionStatsErrors[keyof GetCollectionStatsErrors];
4714
+ export type GetCollectionStatsResponses = {
4253
4715
  /**
4254
- * No Content
4716
+ * OK
4255
4717
  */
4256
- 204: void;
4718
+ 200: SearchStatsResponse;
4257
4719
  };
4258
- export type UpdateCollectionSegmentResponse = UpdateCollectionSegmentResponses[keyof UpdateCollectionSegmentResponses];
4720
+ export type GetCollectionStatsResponse = GetCollectionStatsResponses[keyof GetCollectionStatsResponses];
4259
4721
  export type GetAdminDashboardData = {
4260
4722
  body?: never;
4261
4723
  path?: never;
@@ -4264,7 +4726,7 @@ export type GetAdminDashboardData = {
4264
4726
  };
4265
4727
  export type GetAdminDashboardErrors = {
4266
4728
  /**
4267
- * Unauthorized
4729
+ * Unauthorized (session)
4268
4730
  */
4269
4731
  401: Error401;
4270
4732
  /**
@@ -4356,7 +4818,7 @@ export type GetAdminHealthData = {
4356
4818
  };
4357
4819
  export type GetAdminHealthErrors = {
4358
4820
  /**
4359
- * Unauthorized
4821
+ * Unauthorized (session)
4360
4822
  */
4361
4823
  401: Error401;
4362
4824
  /**
@@ -4418,7 +4880,7 @@ export type TriggerReindexErrors = {
4418
4880
  */
4419
4881
  400: Error400;
4420
4882
  /**
4421
- * Unauthorized
4883
+ * Unauthorized (session)
4422
4884
  */
4423
4885
  401: Error401;
4424
4886
  /**
@@ -4454,7 +4916,7 @@ export type ListAdminQueueStatsErrors = {
4454
4916
  */
4455
4917
  400: Error400;
4456
4918
  /**
4457
- * Unauthorized
4919
+ * Unauthorized (session)
4458
4920
  */
4459
4921
  401: Error401;
4460
4922
  /**
@@ -4476,15 +4938,15 @@ export type ListAdminQueueStatsResponses = {
4476
4938
  * Queue statistics retrieved successfully
4477
4939
  */
4478
4940
  200: Array<{
4479
- queue?: string;
4941
+ queue: string;
4480
4942
  /**
4481
4943
  * Number of jobs currently pending/active
4482
4944
  */
4483
- stuckCount?: number;
4945
+ stuckCount: number;
4484
4946
  /**
4485
4947
  * Number of failed jobs
4486
4948
  */
4487
- failedCount?: number;
4949
+ failedCount: number;
4488
4950
  }>;
4489
4951
  };
4490
4952
  export type ListAdminQueueStatsResponse = ListAdminQueueStatsResponses[keyof ListAdminQueueStatsResponses];
@@ -4505,7 +4967,7 @@ export type GetAdminQueueErrors = {
4505
4967
  */
4506
4968
  400: Error400;
4507
4969
  /**
4508
- * Unauthorized
4970
+ * Unauthorized (session)
4509
4971
  */
4510
4972
  401: Error401;
4511
4973
  /**
@@ -4590,7 +5052,7 @@ export type ListAdminQueueFailedErrors = {
4590
5052
  */
4591
5053
  400: Error400;
4592
5054
  /**
4593
- * Unauthorized
5055
+ * Unauthorized (session)
4594
5056
  */
4595
5057
  401: Error401;
4596
5058
  /**
@@ -4615,19 +5077,19 @@ export type ListAdminQueueFailedResponses = {
4615
5077
  /**
4616
5078
  * Job ID
4617
5079
  */
4618
- id?: string;
5080
+ id: string;
4619
5081
  /**
4620
5082
  * The segment ID that failed to sync
4621
5083
  */
4622
- segmentId?: number;
5084
+ segmentId: number;
4623
5085
  /**
4624
5086
  * Error message from the last attempt
4625
5087
  */
4626
- error?: string;
5088
+ error: string;
4627
5089
  /**
4628
5090
  * When the job was created
4629
5091
  */
4630
- createdOn?: string;
5092
+ createdOn: string;
4631
5093
  }>;
4632
5094
  };
4633
5095
  export type ListAdminQueueFailedResponse = ListAdminQueueFailedResponses[keyof ListAdminQueueFailedResponses];
@@ -4648,7 +5110,7 @@ export type RetryAdminQueueFailedErrors = {
4648
5110
  */
4649
5111
  400: Error400;
4650
5112
  /**
4651
- * Unauthorized
5113
+ * Unauthorized (session)
4652
5114
  */
4653
5115
  401: Error401;
4654
5116
  /**
@@ -4670,12 +5132,12 @@ export type RetryAdminQueueFailedResponses = {
4670
5132
  * Jobs queued for retry
4671
5133
  */
4672
5134
  200: {
4673
- success?: boolean;
5135
+ success: boolean;
4674
5136
  /**
4675
5137
  * Number of jobs queued for retry
4676
5138
  */
4677
- retriedCount?: number;
4678
- message?: string;
5139
+ retriedCount: number;
5140
+ message: string;
4679
5141
  };
4680
5142
  };
4681
5143
  export type RetryAdminQueueFailedResponse = RetryAdminQueueFailedResponses[keyof RetryAdminQueueFailedResponses];
@@ -4696,7 +5158,7 @@ export type PurgeAdminQueueFailedErrors = {
4696
5158
  */
4697
5159
  400: Error400;
4698
5160
  /**
4699
- * Unauthorized
5161
+ * Unauthorized (session)
4700
5162
  */
4701
5163
  401: Error401;
4702
5164
  /**
@@ -4718,27 +5180,105 @@ export type PurgeAdminQueueFailedResponses = {
4718
5180
  * Failed jobs purged successfully
4719
5181
  */
4720
5182
  200: {
4721
- success?: boolean;
5183
+ success: boolean;
4722
5184
  /**
4723
5185
  * Number of failed jobs deleted
4724
5186
  */
4725
- purgedCount?: number;
4726
- message?: string;
5187
+ purgedCount: number;
5188
+ message: string;
4727
5189
  };
4728
5190
  };
4729
5191
  export type PurgeAdminQueueFailedResponse = PurgeAdminQueueFailedResponses[keyof PurgeAdminQueueFailedResponses];
5192
+ export type ClearAdminImpersonationData = {
5193
+ body?: never;
5194
+ path?: never;
5195
+ query?: never;
5196
+ url: '/v1/admin/impersonation';
5197
+ };
5198
+ export type ClearAdminImpersonationErrors = {
5199
+ /**
5200
+ * Forbidden
5201
+ */
5202
+ 403: Error403;
5203
+ /**
5204
+ * Too Many Requests
5205
+ */
5206
+ 429: Error429;
5207
+ /**
5208
+ * Internal Server Error
5209
+ */
5210
+ 500: Error500;
5211
+ };
5212
+ export type ClearAdminImpersonationError = ClearAdminImpersonationErrors[keyof ClearAdminImpersonationErrors];
5213
+ export type ClearAdminImpersonationResponses = {
5214
+ /**
5215
+ * Impersonation session cleared
5216
+ */
5217
+ 200: {
5218
+ message: string;
5219
+ };
5220
+ };
5221
+ export type ClearAdminImpersonationResponse = ClearAdminImpersonationResponses[keyof ClearAdminImpersonationResponses];
5222
+ export type ImpersonateAdminUserData = {
5223
+ body: {
5224
+ /**
5225
+ * User ID to impersonate
5226
+ */
5227
+ userId: number;
5228
+ };
5229
+ path?: never;
5230
+ query?: never;
5231
+ url: '/v1/admin/impersonation';
5232
+ };
5233
+ export type ImpersonateAdminUserErrors = {
5234
+ /**
5235
+ * Bad Request
5236
+ */
5237
+ 400: Error400;
5238
+ /**
5239
+ * Forbidden
5240
+ */
5241
+ 403: Error403;
5242
+ /**
5243
+ * Not Found
5244
+ */
5245
+ 404: Error404;
5246
+ /**
5247
+ * Too Many Requests
5248
+ */
5249
+ 429: Error429;
5250
+ /**
5251
+ * Internal Server Error
5252
+ */
5253
+ 500: Error500;
5254
+ };
5255
+ export type ImpersonateAdminUserError = ImpersonateAdminUserErrors[keyof ImpersonateAdminUserErrors];
5256
+ export type ImpersonateAdminUserResponses = {
5257
+ /**
5258
+ * Impersonation session created
5259
+ */
5260
+ 200: {
5261
+ message: string;
5262
+ user: {
5263
+ id: number;
5264
+ username: string;
5265
+ email: string;
5266
+ };
5267
+ };
5268
+ };
5269
+ export type ImpersonateAdminUserResponse = ImpersonateAdminUserResponses[keyof ImpersonateAdminUserResponses];
4730
5270
  export type ListAdminReportsData = {
4731
5271
  body?: never;
4732
5272
  path?: never;
4733
5273
  query?: {
4734
5274
  /**
4735
- * Cursor for pagination (report ID to start after)
5275
+ * Opaque pagination cursor token
4736
5276
  */
4737
- cursor?: number;
5277
+ cursor?: string;
4738
5278
  /**
4739
5279
  * Number of results per page
4740
5280
  */
4741
- limit?: number;
5281
+ take?: number;
4742
5282
  /**
4743
5283
  * Filter by report status
4744
5284
  */
@@ -4760,19 +5300,19 @@ export type ListAdminReportsData = {
4760
5300
  */
4761
5301
  'target.episodeNumber'?: number;
4762
5302
  /**
4763
- * Filter by target segment UUID
5303
+ * Filter by target segment ID
4764
5304
  */
4765
- 'target.segmentUuid'?: string;
5305
+ 'target.segmentId'?: number;
4766
5306
  /**
4767
- * Filter by review check run ID
5307
+ * Filter by audit run ID
4768
5308
  */
4769
- reviewCheckRunId?: number;
5309
+ auditRunId?: number;
4770
5310
  };
4771
5311
  url: '/v1/admin/reports';
4772
5312
  };
4773
5313
  export type ListAdminReportsErrors = {
4774
5314
  /**
4775
- * Unauthorized
5315
+ * Unauthorized (session)
4776
5316
  */
4777
5317
  401: Error401;
4778
5318
  /**
@@ -4813,7 +5353,7 @@ export type UpdateAdminReportErrors = {
4813
5353
  */
4814
5354
  400: Error400;
4815
5355
  /**
4816
- * Unauthorized
5356
+ * Unauthorized (session)
4817
5357
  */
4818
5358
  401: Error401;
4819
5359
  /**
@@ -4841,24 +5381,15 @@ export type UpdateAdminReportResponses = {
4841
5381
  200: Report;
4842
5382
  };
4843
5383
  export type UpdateAdminReportResponse = UpdateAdminReportResponses[keyof UpdateAdminReportResponses];
4844
- export type RunAdminReviewData = {
5384
+ export type ListAdminMediaAuditsData = {
4845
5385
  body?: never;
4846
5386
  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';
5387
+ query?: never;
5388
+ url: '/v1/admin/media/audits';
4858
5389
  };
4859
- export type RunAdminReviewErrors = {
5390
+ export type ListAdminMediaAuditsErrors = {
4860
5391
  /**
4861
- * Unauthorized
5392
+ * Unauthorized (session)
4862
5393
  */
4863
5394
  401: Error401;
4864
5395
  /**
@@ -4874,29 +5405,53 @@ export type RunAdminReviewErrors = {
4874
5405
  */
4875
5406
  500: Error500;
4876
5407
  };
4877
- export type RunAdminReviewError = RunAdminReviewErrors[keyof RunAdminReviewErrors];
4878
- export type RunAdminReviewResponses = {
5408
+ export type ListAdminMediaAuditsError = ListAdminMediaAuditsErrors[keyof ListAdminMediaAuditsErrors];
5409
+ export type ListAdminMediaAuditsResponses = {
4879
5410
  /**
4880
- * Check run completed
5411
+ * OK
4881
5412
  */
4882
- 200: RunReviewResponse;
5413
+ 200: Array<MediaAudit>;
4883
5414
  };
4884
- export type RunAdminReviewResponse = RunAdminReviewResponses[keyof RunAdminReviewResponses];
4885
- export type ListAdminReviewChecksData = {
4886
- body?: never;
4887
- path?: never;
5415
+ export type ListAdminMediaAuditsResponse = ListAdminMediaAuditsResponses[keyof ListAdminMediaAuditsResponses];
5416
+ export type UpdateAdminMediaAuditData = {
5417
+ body: {
5418
+ /**
5419
+ * New threshold values
5420
+ */
5421
+ threshold?: {
5422
+ [key: string]: unknown;
5423
+ };
5424
+ /**
5425
+ * Enable or disable this audit
5426
+ */
5427
+ enabled?: boolean;
5428
+ };
5429
+ path: {
5430
+ /**
5431
+ * Audit name identifier
5432
+ */
5433
+ name: string;
5434
+ };
4888
5435
  query?: never;
4889
- url: '/v1/admin/review/checks';
5436
+ url: '/v1/admin/media/audits/{name}';
4890
5437
  };
4891
- export type ListAdminReviewChecksErrors = {
5438
+ export type UpdateAdminMediaAuditErrors = {
5439
+ /**
5440
+ * Bad Request
5441
+ */
5442
+ 400: Error400;
4892
5443
  /**
4893
- * Unauthorized
5444
+ * Unauthorized (session)
4894
5445
  */
4895
5446
  401: Error401;
4896
5447
  /**
4897
5448
  * Forbidden
4898
5449
  */
4899
5450
  403: Error403;
5451
+ /**
5452
+ * Not Found
5453
+ */
5454
+ 404: Error404;
4900
5455
  /**
4901
5456
  * Too Many Requests
4902
5457
  */
@@ -4906,43 +5461,33 @@ export type ListAdminReviewChecksErrors = {
4906
5461
  */
4907
5462
  500: Error500;
4908
5463
  };
4909
- export type ListAdminReviewChecksError = ListAdminReviewChecksErrors[keyof ListAdminReviewChecksErrors];
4910
- export type ListAdminReviewChecksResponses = {
5464
+ export type UpdateAdminMediaAuditError = UpdateAdminMediaAuditErrors[keyof UpdateAdminMediaAuditErrors];
5465
+ export type UpdateAdminMediaAuditResponses = {
4911
5466
  /**
4912
- * OK
5467
+ * Audit updated successfully
4913
5468
  */
4914
- 200: Array<ReviewCheck>;
5469
+ 200: MediaAudit;
4915
5470
  };
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
- };
5471
+ export type UpdateAdminMediaAuditResponse = UpdateAdminMediaAuditResponses[keyof UpdateAdminMediaAuditResponses];
5472
+ export type RunAdminMediaAuditData = {
5473
+ body?: never;
5474
+ path: {
4925
5475
  /**
4926
- * Enable or disable this check
5476
+ * Audit name to run, or "all" to run all enabled audits
4927
5477
  */
4928
- enabled?: boolean;
5478
+ name: string;
4929
5479
  };
4930
- path: {
5480
+ query?: {
4931
5481
  /**
4932
- * Check name identifier
5482
+ * Optional category filter
4933
5483
  */
4934
- name: string;
5484
+ category?: 'ANIME' | 'JDRAMA';
4935
5485
  };
4936
- query?: never;
4937
- url: '/v1/admin/review/checks/{name}';
5486
+ url: '/v1/admin/media/audits/{name}/run';
4938
5487
  };
4939
- export type UpdateAdminReviewCheckErrors = {
4940
- /**
4941
- * Bad Request
4942
- */
4943
- 400: Error400;
5488
+ export type RunAdminMediaAuditErrors = {
4944
5489
  /**
4945
- * Unauthorized
5490
+ * Unauthorized (session)
4946
5491
  */
4947
5492
  401: Error401;
4948
5493
  /**
@@ -4962,36 +5507,36 @@ export type UpdateAdminReviewCheckErrors = {
4962
5507
  */
4963
5508
  500: Error500;
4964
5509
  };
4965
- export type UpdateAdminReviewCheckError = UpdateAdminReviewCheckErrors[keyof UpdateAdminReviewCheckErrors];
4966
- export type UpdateAdminReviewCheckResponses = {
5510
+ export type RunAdminMediaAuditError = RunAdminMediaAuditErrors[keyof RunAdminMediaAuditErrors];
5511
+ export type RunAdminMediaAuditResponses = {
4967
5512
  /**
4968
- * Check updated successfully
5513
+ * Audit run completed
4969
5514
  */
4970
- 200: ReviewCheck;
5515
+ 200: RunAuditResponse;
4971
5516
  };
4972
- export type UpdateAdminReviewCheckResponse = UpdateAdminReviewCheckResponses[keyof UpdateAdminReviewCheckResponses];
4973
- export type ListAdminReviewRunsData = {
5517
+ export type RunAdminMediaAuditResponse = RunAdminMediaAuditResponses[keyof RunAdminMediaAuditResponses];
5518
+ export type ListAdminMediaAuditRunsData = {
4974
5519
  body?: never;
4975
5520
  path?: never;
4976
5521
  query?: {
4977
5522
  /**
4978
- * Filter by check name
5523
+ * Filter by audit name
4979
5524
  */
4980
- checkName?: string;
5525
+ auditName?: string;
4981
5526
  /**
4982
- * Cursor for pagination
5527
+ * Opaque pagination cursor token
4983
5528
  */
4984
- cursor?: number;
5529
+ cursor?: string;
4985
5530
  /**
4986
5531
  * Number of results per page
4987
5532
  */
4988
- limit?: number;
5533
+ take?: number;
4989
5534
  };
4990
- url: '/v1/admin/review/runs';
5535
+ url: '/v1/admin/media/audits/runs';
4991
5536
  };
4992
- export type ListAdminReviewRunsErrors = {
5537
+ export type ListAdminMediaAuditRunsErrors = {
4993
5538
  /**
4994
- * Unauthorized
5539
+ * Unauthorized (session)
4995
5540
  */
4996
5541
  401: Error401;
4997
5542
  /**
@@ -5007,18 +5552,18 @@ export type ListAdminReviewRunsErrors = {
5007
5552
  */
5008
5553
  500: Error500;
5009
5554
  };
5010
- export type ListAdminReviewRunsError = ListAdminReviewRunsErrors[keyof ListAdminReviewRunsErrors];
5011
- export type ListAdminReviewRunsResponses = {
5555
+ export type ListAdminMediaAuditRunsError = ListAdminMediaAuditRunsErrors[keyof ListAdminMediaAuditRunsErrors];
5556
+ export type ListAdminMediaAuditRunsResponses = {
5012
5557
  /**
5013
5558
  * OK
5014
5559
  */
5015
5560
  200: {
5016
- runs: Array<ReviewCheckRun>;
5017
- pagination: CursorPagination;
5561
+ runs: Array<MediaAuditRun>;
5562
+ pagination: OpaqueCursorPagination;
5018
5563
  };
5019
5564
  };
5020
- export type ListAdminReviewRunsResponse = ListAdminReviewRunsResponses[keyof ListAdminReviewRunsResponses];
5021
- export type GetAdminReviewRunData = {
5565
+ export type ListAdminMediaAuditRunsResponse = ListAdminMediaAuditRunsResponses[keyof ListAdminMediaAuditRunsResponses];
5566
+ export type GetAdminMediaAuditRunData = {
5022
5567
  body?: never;
5023
5568
  path: {
5024
5569
  /**
@@ -5027,11 +5572,11 @@ export type GetAdminReviewRunData = {
5027
5572
  id: number;
5028
5573
  };
5029
5574
  query?: never;
5030
- url: '/v1/admin/review/runs/{id}';
5575
+ url: '/v1/admin/media/audits/runs/{id}';
5031
5576
  };
5032
- export type GetAdminReviewRunErrors = {
5577
+ export type GetAdminMediaAuditRunErrors = {
5033
5578
  /**
5034
- * Unauthorized
5579
+ * Unauthorized (session)
5035
5580
  */
5036
5581
  401: Error401;
5037
5582
  /**
@@ -5051,37 +5596,24 @@ export type GetAdminReviewRunErrors = {
5051
5596
  */
5052
5597
  500: Error500;
5053
5598
  };
5054
- export type GetAdminReviewRunError = GetAdminReviewRunErrors[keyof GetAdminReviewRunErrors];
5055
- export type GetAdminReviewRunResponses = {
5599
+ export type GetAdminMediaAuditRunError = GetAdminMediaAuditRunErrors[keyof GetAdminMediaAuditRunErrors];
5600
+ export type GetAdminMediaAuditRunResponses = {
5056
5601
  /**
5057
5602
  * OK
5058
5603
  */
5059
5604
  200: {
5060
- run: ReviewCheckRun;
5605
+ run: MediaAuditRun;
5061
5606
  reports: Array<Report>;
5062
5607
  };
5063
5608
  };
5064
- export type GetAdminReviewRunResponse = GetAdminReviewRunResponses[keyof GetAdminReviewRunResponses];
5065
- export type ListAdminReviewAllowlistData = {
5609
+ export type GetAdminMediaAuditRunResponse = GetAdminMediaAuditRunResponses[keyof GetAdminMediaAuditRunResponses];
5610
+ export type GetAnnouncementData = {
5066
5611
  body?: never;
5067
5612
  path?: never;
5068
- query?: {
5069
- /**
5070
- * Filter by check name
5071
- */
5072
- checkName?: string;
5073
- };
5074
- url: '/v1/admin/review/allowlist';
5613
+ query?: never;
5614
+ url: '/v1/admin/announcement';
5075
5615
  };
5076
- export type ListAdminReviewAllowlistErrors = {
5077
- /**
5078
- * Unauthorized
5079
- */
5080
- 401: Error401;
5081
- /**
5082
- * Forbidden
5083
- */
5084
- 403: Error403;
5616
+ export type GetAnnouncementErrors = {
5085
5617
  /**
5086
5618
  * Too Many Requests
5087
5619
  */
@@ -5091,54 +5623,45 @@ export type ListAdminReviewAllowlistErrors = {
5091
5623
  */
5092
5624
  500: Error500;
5093
5625
  };
5094
- export type ListAdminReviewAllowlistError = ListAdminReviewAllowlistErrors[keyof ListAdminReviewAllowlistErrors];
5095
- export type ListAdminReviewAllowlistResponses = {
5626
+ export type GetAnnouncementError = GetAnnouncementErrors[keyof GetAnnouncementErrors];
5627
+ export type GetAnnouncementResponses = {
5096
5628
  /**
5097
5629
  * OK
5098
5630
  */
5099
- 200: Array<ReviewAllowlist>;
5631
+ 200: {
5632
+ message: string;
5633
+ type: 'info' | 'warning' | 'maintenance';
5634
+ active: boolean;
5635
+ };
5636
+ /**
5637
+ * No announcement set
5638
+ */
5639
+ 204: void;
5100
5640
  };
5101
- export type ListAdminReviewAllowlistResponse = ListAdminReviewAllowlistResponses[keyof ListAdminReviewAllowlistResponses];
5102
- export type CreateAdminReviewAllowlistEntryData = {
5641
+ export type GetAnnouncementResponse = GetAnnouncementResponses[keyof GetAnnouncementResponses];
5642
+ export type UpdateAnnouncementData = {
5103
5643
  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;
5644
+ message: string;
5645
+ type: 'info' | 'warning' | 'maintenance';
5646
+ active: boolean;
5120
5647
  };
5121
5648
  path?: never;
5122
5649
  query?: never;
5123
- url: '/v1/admin/review/allowlist';
5650
+ url: '/v1/admin/announcement';
5124
5651
  };
5125
- export type CreateAdminReviewAllowlistEntryErrors = {
5652
+ export type UpdateAnnouncementErrors = {
5126
5653
  /**
5127
5654
  * Bad Request
5128
5655
  */
5129
5656
  400: Error400;
5130
5657
  /**
5131
- * Unauthorized
5658
+ * Unauthorized (session)
5132
5659
  */
5133
5660
  401: Error401;
5134
5661
  /**
5135
5662
  * Forbidden
5136
5663
  */
5137
5664
  403: Error403;
5138
- /**
5139
- * Conflict
5140
- */
5141
- 409: Error409;
5142
5665
  /**
5143
5666
  * Too Many Requests
5144
5667
  */
@@ -5148,53 +5671,16 @@ export type CreateAdminReviewAllowlistEntryErrors = {
5148
5671
  */
5149
5672
  500: Error500;
5150
5673
  };
5151
- export type CreateAdminReviewAllowlistEntryError = CreateAdminReviewAllowlistEntryErrors[keyof CreateAdminReviewAllowlistEntryErrors];
5152
- export type CreateAdminReviewAllowlistEntryResponses = {
5674
+ export type UpdateAnnouncementError = UpdateAnnouncementErrors[keyof UpdateAnnouncementErrors];
5675
+ export type UpdateAnnouncementResponses = {
5153
5676
  /**
5154
- * Added to allowlist
5677
+ * Announcement updated
5155
5678
  */
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;
5679
+ 200: {
5680
+ message: string;
5681
+ type: 'info' | 'warning' | 'maintenance';
5682
+ active: boolean;
5166
5683
  };
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
5684
  };
5199
- export type DeleteAdminReviewAllowlistEntryResponse = DeleteAdminReviewAllowlistEntryResponses[keyof DeleteAdminReviewAllowlistEntryResponses];
5685
+ export type UpdateAnnouncementResponse = UpdateAnnouncementResponses[keyof UpdateAnnouncementResponses];
5200
5686
  //# sourceMappingURL=types.gen.d.ts.map