@brigadasos/nadeshiko-sdk 1.4.3-dev.e5c01f0 → 1.5.0-dev.2f9d92f

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