@brigadasos/nadeshiko-sdk 1.5.0-dev.c2b9767 → 1.5.0-dev.ca1fe65

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.
@@ -6,9 +6,9 @@ export type ClientOptions = {
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
  */
@@ -132,6 +132,35 @@ export type SearchRequest = {
132
132
  */
133
133
  include?: Array<IncludeExpansion>;
134
134
  };
135
+ /**
136
+ * Morphological token from Japanese text analysis
137
+ */
138
+ export type Token = {
139
+ /**
140
+ * Surface form (the text as it appears in the sentence)
141
+ */
142
+ s: string;
143
+ /**
144
+ * Dictionary form (base/lemma form for search)
145
+ */
146
+ d: string;
147
+ /**
148
+ * Reading in katakana
149
+ */
150
+ r: string;
151
+ /**
152
+ * Begin character offset in textJa.content
153
+ */
154
+ b: number;
155
+ /**
156
+ * End character offset in textJa.content
157
+ */
158
+ e: number;
159
+ /**
160
+ * Primary part-of-speech tag
161
+ */
162
+ p: string;
163
+ };
135
164
  /**
136
165
  * Segment with content, optional highlights, and media URLs
137
166
  */
@@ -144,6 +173,10 @@ export type Segment = {
144
173
  * Unique identifier for the segment
145
174
  */
146
175
  uuid: string;
176
+ /**
177
+ * Public identifier for the segment (use this instead of uuid in public URLs)
178
+ */
179
+ publicId: string;
147
180
  /**
148
181
  * Position of the segment within the episode
149
182
  */
@@ -169,6 +202,10 @@ export type Segment = {
169
202
  * Media ID this segment belongs to
170
203
  */
171
204
  mediaId: number;
205
+ /**
206
+ * Public ID of the media this segment belongs to
207
+ */
208
+ mediaPublicId: string;
172
209
  textJa: {
173
210
  /**
174
211
  * Original Japanese content
@@ -178,6 +215,10 @@ export type Segment = {
178
215
  * Japanese content with search terms highlighted
179
216
  */
180
217
  highlight?: string;
218
+ /**
219
+ * Morphological tokens for interactive display (Labs feature)
220
+ */
221
+ tokens?: Array<Token>;
181
222
  };
182
223
  textEn: {
183
224
  /**
@@ -241,6 +282,10 @@ export type ExternalId = {
241
282
  * TVDB ID
242
283
  */
243
284
  tvdb?: string;
285
+ /**
286
+ * TMDB ID
287
+ */
288
+ tmdb?: string;
244
289
  };
245
290
  /**
246
291
  * Japanese voice actor (seiyuu)
@@ -250,6 +295,10 @@ export type Seiyuu = {
250
295
  * Internal seiyuu ID
251
296
  */
252
297
  id: number;
298
+ /**
299
+ * Public identifier for the seiyuu (use this in public URLs)
300
+ */
301
+ publicId: string;
253
302
  externalIds: ExternalId;
254
303
  /**
255
304
  * Japanese name of the voice actor
@@ -295,9 +344,13 @@ export type MediaCharacter = {
295
344
  */
296
345
  export type Media = {
297
346
  /**
298
- * Unique identifier for the media
347
+ * Internal unique identifier for the media
299
348
  */
300
349
  id: number;
350
+ /**
351
+ * Public identifier for the media (use this in public URLs)
352
+ */
353
+ publicId: string;
301
354
  externalIds: ExternalId;
302
355
  /**
303
356
  * Original Japanese name of the media
@@ -351,7 +404,7 @@ export type Media = {
351
404
  /**
352
405
  * Animation studio that produced the media
353
406
  */
354
- studio: string;
407
+ studio?: string;
355
408
  /**
356
409
  * Airing season label for the media
357
410
  */
@@ -390,7 +443,7 @@ export type SearchResponse = {
390
443
  segments: Array<Segment>;
391
444
  includes: {
392
445
  /**
393
- * Media objects keyed by mediaId
446
+ * Media objects keyed by media publicId
394
447
  */
395
448
  media: {
396
449
  [key: string]: Media;
@@ -601,6 +654,10 @@ export type MediaSearchStats = {
601
654
  * Media identifier (look up full details in includes.media)
602
655
  */
603
656
  mediaId: number;
657
+ /**
658
+ * Public identifier for use in URLs and filters
659
+ */
660
+ publicId: string;
604
661
  /**
605
662
  * Number of matching segments found in this media
606
663
  */
@@ -627,7 +684,7 @@ export type SearchStatsResponse = {
627
684
  categories: Array<CategoryCount>;
628
685
  includes: {
629
686
  /**
630
- * Media objects keyed by mediaId
687
+ * Media objects keyed by media publicId
631
688
  */
632
689
  media: {
633
690
  [key: string]: Media;
@@ -719,6 +776,20 @@ export type OpaqueCursorPagination = {
719
776
  export type MediaListResponse = {
720
777
  media: Array<Media>;
721
778
  pagination: OpaqueCursorPagination;
779
+ stats: {
780
+ /**
781
+ * Total number of media across all pages
782
+ */
783
+ totalMedia: number;
784
+ /**
785
+ * Total number of non-deleted segments
786
+ */
787
+ totalSegments: number;
788
+ /**
789
+ * Total number of episodes
790
+ */
791
+ totalEpisodes: number;
792
+ };
722
793
  };
723
794
  /**
724
795
  * Character data for creating/updating media
@@ -813,7 +884,7 @@ export type MediaCreateRequest = {
813
884
  /**
814
885
  * Animation studio that produced the media
815
886
  */
816
- studio: string;
887
+ studio?: string;
817
888
  /**
818
889
  * Airing season label for the media
819
890
  */
@@ -866,8 +937,65 @@ export type Error409 = {
866
937
  [key: string]: string;
867
938
  };
868
939
  };
940
+ /**
941
+ * Slim media item returned by autocomplete (names + cover only)
942
+ */
943
+ export type MediaAutocompleteItem = {
944
+ /**
945
+ * Unique identifier for the media
946
+ */
947
+ id: number;
948
+ /**
949
+ * Original Japanese name of the media
950
+ */
951
+ nameJa: string;
952
+ /**
953
+ * Romaji transliteration of the media name
954
+ */
955
+ nameRomaji: string;
956
+ /**
957
+ * English name of the media
958
+ */
959
+ nameEn: string;
960
+ /**
961
+ * Full URL to the cover image
962
+ */
963
+ coverUrl: string;
964
+ category: Category;
965
+ };
869
966
  export type MediaAutocompleteResponse = {
870
- media: Array<Media>;
967
+ media: Array<MediaAutocompleteItem>;
968
+ };
969
+ /**
970
+ * Segment with internal fields. For write operations (create, update) all fields are always populated.
971
+ * For GET, optional fields are only populated when requested via include[].
972
+ *
973
+ */
974
+ export type SegmentInternal = Segment & {
975
+ /**
976
+ * Storage backend for segment assets
977
+ */
978
+ storage?: 'LOCAL' | 'R2';
979
+ /**
980
+ * Hash identifier for the segment
981
+ */
982
+ hashedId?: string;
983
+ /**
984
+ * Base path in the storage backend
985
+ */
986
+ storageBasePath?: string;
987
+ /**
988
+ * Raw WD Tagger v3 classifier output used to derive content rating
989
+ */
990
+ ratingAnalysis?: {
991
+ [key: string]: unknown;
992
+ };
993
+ /**
994
+ * POS tokenization results keyed by engine (sudachi, unidic)
995
+ */
996
+ posAnalysis?: {
997
+ [key: string]: unknown;
998
+ };
871
999
  };
872
1000
  /**
873
1001
  * Not Found error response
@@ -972,35 +1100,6 @@ export type SegmentUpdateRequest = {
972
1100
  */
973
1101
  hashedId?: string;
974
1102
  };
975
- /**
976
- * Segment with internal fields (for internal API responses)
977
- */
978
- export type SegmentInternal = Segment & {
979
- /**
980
- * Storage backend for segment assets
981
- */
982
- storage: 'LOCAL' | 'R2';
983
- /**
984
- * Hash identifier for the segment
985
- */
986
- hashedId: string;
987
- /**
988
- * Base path in the storage backend
989
- */
990
- storageBasePath: string;
991
- /**
992
- * Raw WD Tagger v3 classifier output used to derive content rating
993
- */
994
- ratingAnalysis: {
995
- [key: string]: unknown;
996
- };
997
- /**
998
- * POS tokenization results keyed by engine (sudachi, unidic)
999
- */
1000
- posAnalysis: {
1001
- [key: string]: unknown;
1002
- };
1003
- };
1004
1103
  export type SegmentContextResponse = {
1005
1104
  segments: Array<Segment>;
1006
1105
  includes: {
@@ -1012,6 +1111,30 @@ export type SegmentContextResponse = {
1012
1111
  };
1013
1112
  };
1014
1113
  };
1114
+ export type SegmentRevision = {
1115
+ /**
1116
+ * Revision ID
1117
+ */
1118
+ id: number;
1119
+ /**
1120
+ * Sequential revision number per segment
1121
+ */
1122
+ revisionNumber: number;
1123
+ /**
1124
+ * Snapshot of editable fields at the time of the revision
1125
+ */
1126
+ snapshot: {
1127
+ [key: string]: unknown;
1128
+ };
1129
+ /**
1130
+ * Name of the user who made the change
1131
+ */
1132
+ userName?: string;
1133
+ /**
1134
+ * When the revision was created
1135
+ */
1136
+ createdAt: string;
1137
+ };
1015
1138
  /**
1016
1139
  * Ordered media series grouping
1017
1140
  */
@@ -1020,6 +1143,10 @@ export type Series = {
1020
1143
  * Series ID
1021
1144
  */
1022
1145
  id: number;
1146
+ /**
1147
+ * Public identifier for the series
1148
+ */
1149
+ publicId: string;
1023
1150
  /**
1024
1151
  * Japanese name of the series
1025
1152
  */
@@ -1076,6 +1203,10 @@ export type Character = {
1076
1203
  * Internal character ID
1077
1204
  */
1078
1205
  id: number;
1206
+ /**
1207
+ * Public identifier for the character (use this in public URLs)
1208
+ */
1209
+ publicId: string;
1079
1210
  externalIds: ExternalId;
1080
1211
  /**
1081
1212
  * Japanese name of the character
@@ -1397,6 +1528,9 @@ export type SegmentCreateRequest = {
1397
1528
  */
1398
1529
  hashedId: string;
1399
1530
  };
1531
+ export type SegmentBatchCreateRequest = {
1532
+ segments: Array<SegmentCreateRequest>;
1533
+ };
1400
1534
  export type UserQuotaResponse = {
1401
1535
  /**
1402
1536
  * Number of API requests used in the current billing period.
@@ -1429,39 +1563,39 @@ export type ReportTargetMedia = {
1429
1563
  */
1430
1564
  type: 'MEDIA';
1431
1565
  /**
1432
- * Media ID this report targets
1566
+ * Public ID of the media this report targets
1433
1567
  */
1434
- mediaId: number;
1568
+ mediaId: string;
1435
1569
  };
1436
- export type ReportTargetSegment = {
1570
+ export type ReportTargetSegmentInput = {
1437
1571
  /**
1438
1572
  * Report target type
1439
1573
  */
1440
1574
  type: 'SEGMENT';
1441
1575
  /**
1442
- * Media ID this report targets
1576
+ * Public ID of the media this report targets
1443
1577
  */
1444
- mediaId: number;
1578
+ mediaId: string;
1445
1579
  /**
1446
1580
  * Episode number containing the segment
1447
1581
  */
1448
1582
  episodeNumber?: number;
1449
1583
  /**
1450
- * Segment UUID this report targets
1584
+ * Segment public ID or UUID
1451
1585
  */
1452
- segmentUuid: string;
1586
+ segmentId: string;
1453
1587
  };
1454
1588
  export type UserReportTarget = ({
1455
1589
  type: 'MEDIA';
1456
1590
  } & ReportTargetMedia) | ({
1457
1591
  type: 'SEGMENT';
1458
- } & ReportTargetSegment);
1592
+ } & ReportTargetSegmentInput);
1459
1593
  export type CreateReportRequest = {
1460
1594
  target: UserReportTarget;
1461
1595
  /**
1462
1596
  * Reason for the report
1463
1597
  */
1464
- reason: 'WRONG_TRANSLATION' | 'WRONG_TIMING' | 'WRONG_AUDIO' | 'NSFW_NOT_TAGGED' | 'DUPLICATE_SEGMENT' | 'WRONG_METADATA' | 'MISSING_EPISODES' | 'WRONG_COVER_IMAGE' | 'INAPPROPRIATE_CONTENT' | 'OTHER';
1598
+ 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';
1465
1599
  /**
1466
1600
  * Optional description with additional details
1467
1601
  */
@@ -1473,14 +1607,32 @@ export type ReportTargetEpisode = {
1473
1607
  */
1474
1608
  type: 'EPISODE';
1475
1609
  /**
1476
- * Media ID this report targets
1610
+ * Public ID of the media this report targets
1477
1611
  */
1478
- mediaId: number;
1612
+ mediaId: string;
1479
1613
  /**
1480
1614
  * Episode number this report targets
1481
1615
  */
1482
1616
  episodeNumber: number;
1483
1617
  };
1618
+ export type ReportTargetSegment = {
1619
+ /**
1620
+ * Report target type
1621
+ */
1622
+ type: 'SEGMENT';
1623
+ /**
1624
+ * Public ID of the media this report targets
1625
+ */
1626
+ mediaId: string;
1627
+ /**
1628
+ * Episode number containing the segment
1629
+ */
1630
+ episodeNumber?: number;
1631
+ /**
1632
+ * Segment public ID or UUID
1633
+ */
1634
+ segmentId: string;
1635
+ };
1484
1636
  export type ReportTarget = ({
1485
1637
  type: 'MEDIA';
1486
1638
  } & ReportTargetMedia) | ({
@@ -1505,7 +1657,7 @@ export type Report = {
1505
1657
  /**
1506
1658
  * Reason for the report
1507
1659
  */
1508
- 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';
1660
+ 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';
1509
1661
  /**
1510
1662
  * Optional description with additional details
1511
1663
  */
@@ -1584,17 +1736,26 @@ export type UserPreferences = {
1584
1736
  /**
1585
1737
  * Type of user activity
1586
1738
  */
1587
- export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'LIST_ADD_SEGMENT';
1739
+ export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'SHARE';
1588
1740
  export type UserActivity = {
1589
1741
  id: number;
1590
1742
  activityType: ActivityType;
1591
- segmentUuid: string;
1743
+ segmentId: string;
1592
1744
  mediaId: number;
1593
1745
  searchQuery: string;
1594
1746
  mediaName: string;
1595
1747
  japaneseText: string;
1596
1748
  createdAt: string;
1597
1749
  };
1750
+ /**
1751
+ * Activity counts for a single day, broken down by type. Only types with at least 1 event are present.
1752
+ */
1753
+ export type HeatmapDayCounts = {
1754
+ SEARCH?: number;
1755
+ SEGMENT_PLAY?: number;
1756
+ ANKI_EXPORT?: number;
1757
+ SHARE?: number;
1758
+ };
1598
1759
  /**
1599
1760
  * User segment collection
1600
1761
  */
@@ -1603,10 +1764,18 @@ export type Collection = {
1603
1764
  * Collection ID
1604
1765
  */
1605
1766
  id: number;
1767
+ /**
1768
+ * Public identifier for the collection
1769
+ */
1770
+ publicId: string;
1606
1771
  /**
1607
1772
  * Name of the collection
1608
1773
  */
1609
1774
  name: string;
1775
+ /**
1776
+ * Type of the collection
1777
+ */
1778
+ type: 'USER' | 'ANKI_EXPORT';
1610
1779
  /**
1611
1780
  * Visibility of the collection
1612
1781
  */
@@ -1626,9 +1795,9 @@ export type Collection = {
1626
1795
  };
1627
1796
  export type UserExportCollection = Collection & {
1628
1797
  /**
1629
- * Segment UUIDs in saved order
1798
+ * Segment IDs in saved order
1630
1799
  */
1631
- segmentUuids: Array<string>;
1800
+ segmentIds: Array<number>;
1632
1801
  };
1633
1802
  /**
1634
1803
  * User data export payload (identifier-oriented references)
@@ -2202,11 +2371,16 @@ export type GetSegmentByUuidData = {
2202
2371
  body?: never;
2203
2372
  path: {
2204
2373
  /**
2205
- * Segment UUID
2374
+ * Segment UUID or publicId
2206
2375
  */
2207
2376
  uuid: string;
2208
2377
  };
2209
- query?: never;
2378
+ query?: {
2379
+ /**
2380
+ * Additional internal fields to include in the response
2381
+ */
2382
+ include?: Array<'ratingAnalysis' | 'posAnalysis' | 'hashedId' | 'storageBasePath' | 'storage'>;
2383
+ };
2210
2384
  url: '/v1/media/segments/{uuid}';
2211
2385
  };
2212
2386
  export type GetSegmentByUuidErrors = {
@@ -2238,16 +2412,16 @@ export type GetSegmentByUuidErrors = {
2238
2412
  export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2239
2413
  export type GetSegmentByUuidResponses = {
2240
2414
  /**
2241
- * OK
2415
+ * Single segment response with internal fields
2242
2416
  */
2243
- 200: Segment;
2417
+ 200: SegmentInternal;
2244
2418
  };
2245
2419
  export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2246
2420
  export type UpdateSegmentByUuidData = {
2247
2421
  body: SegmentUpdateRequest;
2248
2422
  path: {
2249
2423
  /**
2250
- * Segment UUID
2424
+ * Segment UUID or publicId
2251
2425
  */
2252
2426
  uuid: string;
2253
2427
  };
@@ -2292,7 +2466,7 @@ export type GetSegmentContextData = {
2292
2466
  body?: never;
2293
2467
  path: {
2294
2468
  /**
2295
- * Segment UUID
2469
+ * Segment UUID or publicId
2296
2470
  */
2297
2471
  uuid: string;
2298
2472
  };
@@ -2342,6 +2516,53 @@ export type GetSegmentContextResponses = {
2342
2516
  200: SegmentContextResponse;
2343
2517
  };
2344
2518
  export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2519
+ export type ListSegmentRevisionsData = {
2520
+ body?: never;
2521
+ path: {
2522
+ /**
2523
+ * Segment UUID or publicId
2524
+ */
2525
+ uuid: string;
2526
+ };
2527
+ query?: never;
2528
+ url: '/v1/media/segments/{uuid}/revisions';
2529
+ };
2530
+ export type ListSegmentRevisionsErrors = {
2531
+ /**
2532
+ * Bad Request
2533
+ */
2534
+ 400: Error400;
2535
+ /**
2536
+ * Unauthorized (API key or session)
2537
+ */
2538
+ 401: Error401;
2539
+ /**
2540
+ * Forbidden
2541
+ */
2542
+ 403: Error403;
2543
+ /**
2544
+ * Not Found
2545
+ */
2546
+ 404: Error404;
2547
+ /**
2548
+ * Too Many Requests
2549
+ */
2550
+ 429: Error429;
2551
+ /**
2552
+ * Internal Server Error
2553
+ */
2554
+ 500: Error500;
2555
+ };
2556
+ export type ListSegmentRevisionsError = ListSegmentRevisionsErrors[keyof ListSegmentRevisionsErrors];
2557
+ export type ListSegmentRevisionsResponses = {
2558
+ /**
2559
+ * List of segment revisions
2560
+ */
2561
+ 200: {
2562
+ revisions: Array<SegmentRevision>;
2563
+ };
2564
+ };
2565
+ export type ListSegmentRevisionsResponse = ListSegmentRevisionsResponses[keyof ListSegmentRevisionsResponses];
2345
2566
  export type ListSeriesData = {
2346
2567
  body?: never;
2347
2568
  path?: never;
@@ -2444,9 +2665,9 @@ export type DeleteSeriesData = {
2444
2665
  body?: never;
2445
2666
  path: {
2446
2667
  /**
2447
- * Series ID
2668
+ * Series public ID
2448
2669
  */
2449
- id: number;
2670
+ id: string;
2450
2671
  };
2451
2672
  query?: never;
2452
2673
  url: '/v1/media/series/{id}';
@@ -2489,9 +2710,9 @@ export type GetSeriesData = {
2489
2710
  body?: never;
2490
2711
  path: {
2491
2712
  /**
2492
- * Series ID
2713
+ * Series public ID
2493
2714
  */
2494
- id: number;
2715
+ id: string;
2495
2716
  };
2496
2717
  query?: {
2497
2718
  /**
@@ -2552,9 +2773,9 @@ export type UpdateSeriesData = {
2552
2773
  };
2553
2774
  path: {
2554
2775
  /**
2555
- * Series ID
2776
+ * Series public ID
2556
2777
  */
2557
- id: number;
2778
+ id: string;
2558
2779
  };
2559
2780
  query?: never;
2560
2781
  url: '/v1/media/series/{id}';
@@ -2596,9 +2817,9 @@ export type UpdateSeriesResponse = UpdateSeriesResponses[keyof UpdateSeriesRespo
2596
2817
  export type AddMediaToSeriesData = {
2597
2818
  body: {
2598
2819
  /**
2599
- * Media ID to add
2820
+ * Media public ID to add
2600
2821
  */
2601
- mediaId: number;
2822
+ mediaId: string;
2602
2823
  /**
2603
2824
  * Position in the series (1-indexed)
2604
2825
  */
@@ -2606,9 +2827,9 @@ export type AddMediaToSeriesData = {
2606
2827
  };
2607
2828
  path: {
2608
2829
  /**
2609
- * Series ID
2830
+ * Series public ID
2610
2831
  */
2611
- id: number;
2832
+ id: string;
2612
2833
  };
2613
2834
  query?: never;
2614
2835
  url: '/v1/media/series/{id}/media';
@@ -2651,13 +2872,13 @@ export type RemoveMediaFromSeriesData = {
2651
2872
  body?: never;
2652
2873
  path: {
2653
2874
  /**
2654
- * Series ID
2875
+ * Series public ID
2655
2876
  */
2656
- id: number;
2877
+ id: string;
2657
2878
  /**
2658
- * Media ID
2879
+ * Media public ID
2659
2880
  */
2660
- mediaId: number;
2881
+ mediaId: string;
2661
2882
  };
2662
2883
  query?: never;
2663
2884
  url: '/v1/media/series/{id}/media/{mediaId}';
@@ -2705,13 +2926,13 @@ export type UpdateSeriesMediaData = {
2705
2926
  };
2706
2927
  path: {
2707
2928
  /**
2708
- * Series ID
2929
+ * Series public ID
2709
2930
  */
2710
- id: number;
2931
+ id: string;
2711
2932
  /**
2712
- * Media ID
2933
+ * Media public ID
2713
2934
  */
2714
- mediaId: number;
2935
+ mediaId: string;
2715
2936
  };
2716
2937
  query?: never;
2717
2938
  url: '/v1/media/series/{id}/media/{mediaId}';
@@ -2754,7 +2975,7 @@ export type GetCharacterData = {
2754
2975
  body?: never;
2755
2976
  path: {
2756
2977
  /**
2757
- * Internal character ID
2978
+ * Character ID
2758
2979
  */
2759
2980
  id: number;
2760
2981
  };
@@ -2844,9 +3065,9 @@ export type DeleteMediaData = {
2844
3065
  body?: never;
2845
3066
  path: {
2846
3067
  /**
2847
- * Media ID
3068
+ * Media public ID
2848
3069
  */
2849
- id: number;
3070
+ id: string;
2850
3071
  };
2851
3072
  query?: never;
2852
3073
  url: '/v1/media/{id}';
@@ -2889,9 +3110,9 @@ export type GetMediaData = {
2889
3110
  body?: never;
2890
3111
  path: {
2891
3112
  /**
2892
- * Media ID
3113
+ * Media public ID
2893
3114
  */
2894
- id: number;
3115
+ id: string;
2895
3116
  };
2896
3117
  query?: {
2897
3118
  /**
@@ -2939,9 +3160,9 @@ export type UpdateMediaData = {
2939
3160
  body: MediaUpdateRequest;
2940
3161
  path: {
2941
3162
  /**
2942
- * Media ID
3163
+ * Media public ID
2943
3164
  */
2944
- id: number;
3165
+ id: string;
2945
3166
  };
2946
3167
  query?: never;
2947
3168
  url: '/v1/media/{id}';
@@ -2984,9 +3205,9 @@ export type ListEpisodesData = {
2984
3205
  body?: never;
2985
3206
  path: {
2986
3207
  /**
2987
- * ID of the media
3208
+ * Public ID of the media
2988
3209
  */
2989
- mediaId: number;
3210
+ mediaId: string;
2990
3211
  };
2991
3212
  query?: {
2992
3213
  /**
@@ -3038,9 +3259,9 @@ export type CreateEpisodeData = {
3038
3259
  body: EpisodeCreateRequest;
3039
3260
  path: {
3040
3261
  /**
3041
- * ID of the media
3262
+ * Public ID of the media
3042
3263
  */
3043
- mediaId: number;
3264
+ mediaId: string;
3044
3265
  };
3045
3266
  query?: never;
3046
3267
  url: '/v1/media/{mediaId}/episodes';
@@ -3087,9 +3308,9 @@ export type DeleteEpisodeData = {
3087
3308
  body?: never;
3088
3309
  path: {
3089
3310
  /**
3090
- * ID of the media
3311
+ * Public ID of the media
3091
3312
  */
3092
- mediaId: number;
3313
+ mediaId: string;
3093
3314
  /**
3094
3315
  * Episode number
3095
3316
  */
@@ -3136,9 +3357,9 @@ export type GetEpisodeData = {
3136
3357
  body?: never;
3137
3358
  path: {
3138
3359
  /**
3139
- * ID of the media
3360
+ * Public ID of the media
3140
3361
  */
3141
- mediaId: number;
3362
+ mediaId: string;
3142
3363
  /**
3143
3364
  * Episode number
3144
3365
  */
@@ -3185,9 +3406,9 @@ export type UpdateEpisodeData = {
3185
3406
  body: EpisodeUpdateRequest;
3186
3407
  path: {
3187
3408
  /**
3188
- * ID of the media
3409
+ * Public ID of the media
3189
3410
  */
3190
- mediaId: number;
3411
+ mediaId: string;
3191
3412
  /**
3192
3413
  * Episode number
3193
3414
  */
@@ -3234,9 +3455,9 @@ export type ListSegmentsData = {
3234
3455
  body?: never;
3235
3456
  path: {
3236
3457
  /**
3237
- * ID of the media
3458
+ * Public ID of the media
3238
3459
  */
3239
- mediaId: number;
3460
+ mediaId: string;
3240
3461
  /**
3241
3462
  * Episode number
3242
3463
  */
@@ -3298,9 +3519,9 @@ export type CreateSegmentData = {
3298
3519
  body: SegmentCreateRequest;
3299
3520
  path: {
3300
3521
  /**
3301
- * ID of the media
3522
+ * Public ID of the media
3302
3523
  */
3303
- mediaId: number;
3524
+ mediaId: string;
3304
3525
  /**
3305
3526
  * Episode number
3306
3527
  */
@@ -3347,13 +3568,71 @@ export type CreateSegmentResponses = {
3347
3568
  201: SegmentInternal;
3348
3569
  };
3349
3570
  export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
3571
+ export type CreateSegmentsBatchData = {
3572
+ body: SegmentBatchCreateRequest;
3573
+ path: {
3574
+ /**
3575
+ * Public ID of the media
3576
+ */
3577
+ mediaId: string;
3578
+ /**
3579
+ * Episode number
3580
+ */
3581
+ episodeNumber: number;
3582
+ };
3583
+ query?: never;
3584
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/batch';
3585
+ };
3586
+ export type CreateSegmentsBatchErrors = {
3587
+ /**
3588
+ * Bad Request
3589
+ */
3590
+ 400: Error400;
3591
+ /**
3592
+ * Unauthorized (API key)
3593
+ */
3594
+ 401: Error401;
3595
+ /**
3596
+ * Forbidden
3597
+ */
3598
+ 403: Error403;
3599
+ /**
3600
+ * Not Found
3601
+ */
3602
+ 404: Error404;
3603
+ /**
3604
+ * Too Many Requests
3605
+ */
3606
+ 429: Error429;
3607
+ /**
3608
+ * Internal Server Error
3609
+ */
3610
+ 500: Error500;
3611
+ };
3612
+ export type CreateSegmentsBatchError = CreateSegmentsBatchErrors[keyof CreateSegmentsBatchErrors];
3613
+ export type CreateSegmentsBatchResponses = {
3614
+ /**
3615
+ * Batch segment creation result
3616
+ */
3617
+ 201: {
3618
+ /**
3619
+ * Number of segments successfully created
3620
+ */
3621
+ created: number;
3622
+ /**
3623
+ * Number of segments skipped due to duplicate UUIDs
3624
+ */
3625
+ skipped: number;
3626
+ };
3627
+ };
3628
+ export type CreateSegmentsBatchResponse = CreateSegmentsBatchResponses[keyof CreateSegmentsBatchResponses];
3350
3629
  export type DeleteSegmentData = {
3351
3630
  body?: never;
3352
3631
  path: {
3353
3632
  /**
3354
- * ID of the media
3633
+ * Public ID of the media
3355
3634
  */
3356
- mediaId: number;
3635
+ mediaId: string;
3357
3636
  /**
3358
3637
  * Episode number
3359
3638
  */
@@ -3404,9 +3683,9 @@ export type GetSegmentData = {
3404
3683
  body?: never;
3405
3684
  path: {
3406
3685
  /**
3407
- * ID of the media
3686
+ * Public ID of the media
3408
3687
  */
3409
- mediaId: number;
3688
+ mediaId: string;
3410
3689
  /**
3411
3690
  * Episode number
3412
3691
  */
@@ -3457,9 +3736,9 @@ export type UpdateSegmentData = {
3457
3736
  body: SegmentUpdateRequest;
3458
3737
  path: {
3459
3738
  /**
3460
- * ID of the media
3739
+ * Public ID of the media
3461
3740
  */
3462
- mediaId: number;
3741
+ mediaId: string;
3463
3742
  /**
3464
3743
  * Episode number
3465
3744
  */
@@ -3695,11 +3974,12 @@ export type ListUserActivityResponses = {
3695
3974
  export type ListUserActivityResponse = ListUserActivityResponses[keyof ListUserActivityResponses];
3696
3975
  export type TrackUserActivityData = {
3697
3976
  body: {
3698
- activityType: 'SEGMENT_PLAY';
3699
- segmentUuid?: string;
3977
+ activityType: 'SEARCH' | 'SEGMENT_PLAY' | 'SHARE';
3978
+ segmentId?: string;
3700
3979
  mediaId?: number;
3701
3980
  mediaName?: string;
3702
3981
  japaneseText?: string;
3982
+ searchQuery?: string;
3703
3983
  };
3704
3984
  path?: never;
3705
3985
  query?: never;
@@ -3735,10 +4015,6 @@ export type GetUserActivityHeatmapData = {
3735
4015
  * Number of days to include in the heatmap
3736
4016
  */
3737
4017
  days?: number;
3738
- /**
3739
- * Filter by activity type
3740
- */
3741
- activityType?: ActivityType;
3742
4018
  };
3743
4019
  url: '/v1/user/activity/heatmap';
3744
4020
  };
@@ -3759,10 +4035,10 @@ export type GetUserActivityHeatmapResponses = {
3759
4035
  */
3760
4036
  200: {
3761
4037
  /**
3762
- * Map of YYYY-MM-DD date strings to activity activityByDay
4038
+ * Map of YYYY-MM-DD date strings to per-type activity counts
3763
4039
  */
3764
4040
  activityByDay: {
3765
- [key: string]: number;
4041
+ [key: string]: HeatmapDayCounts;
3766
4042
  };
3767
4043
  };
3768
4044
  };
@@ -3798,6 +4074,7 @@ export type GetUserActivityStatsResponses = {
3798
4074
  totalExports: number;
3799
4075
  totalPlays: number;
3800
4076
  totalListAdds: number;
4077
+ totalShares: number;
3801
4078
  topMedia: Array<{
3802
4079
  mediaId: number;
3803
4080
  count: number;
@@ -4072,9 +4349,9 @@ export type DeleteCollectionData = {
4072
4349
  body?: never;
4073
4350
  path: {
4074
4351
  /**
4075
- * Collection ID
4352
+ * Collection public ID
4076
4353
  */
4077
- id: number;
4354
+ id: string;
4078
4355
  };
4079
4356
  query?: never;
4080
4357
  url: '/v1/collections/{id}';
@@ -4117,9 +4394,9 @@ export type GetCollectionData = {
4117
4394
  body?: never;
4118
4395
  path: {
4119
4396
  /**
4120
- * Collection ID
4397
+ * Collection public ID
4121
4398
  */
4122
- id: number;
4399
+ id: string;
4123
4400
  };
4124
4401
  query?: {
4125
4402
  /**
@@ -4174,9 +4451,9 @@ export type UpdateCollectionData = {
4174
4451
  };
4175
4452
  path: {
4176
4453
  /**
4177
- * Collection ID
4454
+ * Collection public ID
4178
4455
  */
4179
- id: number;
4456
+ id: string;
4180
4457
  };
4181
4458
  query?: never;
4182
4459
  url: '/v1/collections/{id}';
@@ -4218,9 +4495,9 @@ export type UpdateCollectionResponse = UpdateCollectionResponses[keyof UpdateCol
4218
4495
  export type AddSegmentToCollectionData = {
4219
4496
  body: {
4220
4497
  /**
4221
- * UUID of the segment to add
4498
+ * Public ID or UUID of the segment to add
4222
4499
  */
4223
- segmentUuid: string;
4500
+ segmentId: string;
4224
4501
  /**
4225
4502
  * Optional annotation
4226
4503
  */
@@ -4228,9 +4505,9 @@ export type AddSegmentToCollectionData = {
4228
4505
  };
4229
4506
  path: {
4230
4507
  /**
4231
- * Collection ID
4508
+ * Collection public ID
4232
4509
  */
4233
- id: number;
4510
+ id: string;
4234
4511
  };
4235
4512
  query?: never;
4236
4513
  url: '/v1/collections/{id}/segments';
@@ -4273,16 +4550,16 @@ export type RemoveSegmentFromCollectionData = {
4273
4550
  body?: never;
4274
4551
  path: {
4275
4552
  /**
4276
- * Collection ID
4553
+ * Collection public ID
4277
4554
  */
4278
- id: number;
4555
+ id: string;
4279
4556
  /**
4280
- * Segment UUID
4557
+ * Segment ID
4281
4558
  */
4282
- uuid: string;
4559
+ segmentId: number;
4283
4560
  };
4284
4561
  query?: never;
4285
- url: '/v1/collections/{id}/segments/{uuid}';
4562
+ url: '/v1/collections/{id}/segments/{segmentId}';
4286
4563
  };
4287
4564
  export type RemoveSegmentFromCollectionErrors = {
4288
4565
  /**
@@ -4331,16 +4608,16 @@ export type UpdateCollectionSegmentData = {
4331
4608
  };
4332
4609
  path: {
4333
4610
  /**
4334
- * Collection ID
4611
+ * Collection public ID
4335
4612
  */
4336
- id: number;
4613
+ id: string;
4337
4614
  /**
4338
- * Segment UUID
4615
+ * Segment ID
4339
4616
  */
4340
- uuid: string;
4617
+ segmentId: number;
4341
4618
  };
4342
4619
  query?: never;
4343
- url: '/v1/collections/{id}/segments/{uuid}';
4620
+ url: '/v1/collections/{id}/segments/{segmentId}';
4344
4621
  };
4345
4622
  export type UpdateCollectionSegmentErrors = {
4346
4623
  /**
@@ -4380,9 +4657,9 @@ export type SearchCollectionSegmentsData = {
4380
4657
  body?: never;
4381
4658
  path: {
4382
4659
  /**
4383
- * Collection ID
4660
+ * Collection public ID
4384
4661
  */
4385
- id: number;
4662
+ id: string;
4386
4663
  };
4387
4664
  query?: {
4388
4665
  /**
@@ -4434,9 +4711,9 @@ export type GetCollectionStatsData = {
4434
4711
  body?: never;
4435
4712
  path: {
4436
4713
  /**
4437
- * Collection ID
4714
+ * Collection public ID
4438
4715
  */
4439
- id: number;
4716
+ id: string;
4440
4717
  };
4441
4718
  query?: never;
4442
4719
  url: '/v1/collections/{id}/stats';
@@ -5057,9 +5334,9 @@ export type ListAdminReportsData = {
5057
5334
  */
5058
5335
  'target.episodeNumber'?: number;
5059
5336
  /**
5060
- * Filter by target segment UUID
5337
+ * Filter by target segment ID
5061
5338
  */
5062
- 'target.segmentUuid'?: string;
5339
+ 'target.segmentId'?: number;
5063
5340
  /**
5064
5341
  * Filter by audit run ID
5065
5342
  */
@@ -5364,4 +5641,80 @@ export type GetAdminMediaAuditRunResponses = {
5364
5641
  };
5365
5642
  };
5366
5643
  export type GetAdminMediaAuditRunResponse = GetAdminMediaAuditRunResponses[keyof GetAdminMediaAuditRunResponses];
5644
+ export type GetAnnouncementData = {
5645
+ body?: never;
5646
+ path?: never;
5647
+ query?: never;
5648
+ url: '/v1/admin/announcement';
5649
+ };
5650
+ export type GetAnnouncementErrors = {
5651
+ /**
5652
+ * Too Many Requests
5653
+ */
5654
+ 429: Error429;
5655
+ /**
5656
+ * Internal Server Error
5657
+ */
5658
+ 500: Error500;
5659
+ };
5660
+ export type GetAnnouncementError = GetAnnouncementErrors[keyof GetAnnouncementErrors];
5661
+ export type GetAnnouncementResponses = {
5662
+ /**
5663
+ * OK
5664
+ */
5665
+ 200: {
5666
+ message: string;
5667
+ type: 'info' | 'warning' | 'maintenance';
5668
+ active: boolean;
5669
+ };
5670
+ /**
5671
+ * No announcement set
5672
+ */
5673
+ 204: void;
5674
+ };
5675
+ export type GetAnnouncementResponse = GetAnnouncementResponses[keyof GetAnnouncementResponses];
5676
+ export type UpdateAnnouncementData = {
5677
+ body: {
5678
+ message: string;
5679
+ type: 'info' | 'warning' | 'maintenance';
5680
+ active: boolean;
5681
+ };
5682
+ path?: never;
5683
+ query?: never;
5684
+ url: '/v1/admin/announcement';
5685
+ };
5686
+ export type UpdateAnnouncementErrors = {
5687
+ /**
5688
+ * Bad Request
5689
+ */
5690
+ 400: Error400;
5691
+ /**
5692
+ * Unauthorized (session)
5693
+ */
5694
+ 401: Error401;
5695
+ /**
5696
+ * Forbidden
5697
+ */
5698
+ 403: Error403;
5699
+ /**
5700
+ * Too Many Requests
5701
+ */
5702
+ 429: Error429;
5703
+ /**
5704
+ * Internal Server Error
5705
+ */
5706
+ 500: Error500;
5707
+ };
5708
+ export type UpdateAnnouncementError = UpdateAnnouncementErrors[keyof UpdateAnnouncementErrors];
5709
+ export type UpdateAnnouncementResponses = {
5710
+ /**
5711
+ * Announcement updated
5712
+ */
5713
+ 200: {
5714
+ message: string;
5715
+ type: 'info' | 'warning' | 'maintenance';
5716
+ active: boolean;
5717
+ };
5718
+ };
5719
+ export type UpdateAnnouncementResponse = UpdateAnnouncementResponses[keyof UpdateAnnouncementResponses];
5367
5720
  //# sourceMappingURL=types.gen.d.ts.map