@brigadasos/nadeshiko-sdk 1.5.0-dev.ca90b30 → 1.5.0-dev.cd60faf

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.
@@ -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
  */
@@ -250,6 +254,10 @@ export type Seiyuu = {
250
254
  * Internal seiyuu ID
251
255
  */
252
256
  id: number;
257
+ /**
258
+ * Public identifier for the seiyuu (use this in public URLs)
259
+ */
260
+ publicId: string;
253
261
  externalIds: ExternalId;
254
262
  /**
255
263
  * Japanese name of the voice actor
@@ -295,9 +303,13 @@ export type MediaCharacter = {
295
303
  */
296
304
  export type Media = {
297
305
  /**
298
- * Unique identifier for the media
306
+ * Internal unique identifier for the media
299
307
  */
300
308
  id: number;
309
+ /**
310
+ * Public identifier for the media (use this in public URLs)
311
+ */
312
+ publicId: string;
301
313
  externalIds: ExternalId;
302
314
  /**
303
315
  * Original Japanese name of the media
@@ -866,8 +878,65 @@ export type Error409 = {
866
878
  [key: string]: string;
867
879
  };
868
880
  };
881
+ /**
882
+ * Slim media item returned by autocomplete (names + cover only)
883
+ */
884
+ export type MediaAutocompleteItem = {
885
+ /**
886
+ * Unique identifier for the media
887
+ */
888
+ id: number;
889
+ /**
890
+ * Original Japanese name of the media
891
+ */
892
+ nameJa: string;
893
+ /**
894
+ * Romaji transliteration of the media name
895
+ */
896
+ nameRomaji: string;
897
+ /**
898
+ * English name of the media
899
+ */
900
+ nameEn: string;
901
+ /**
902
+ * Full URL to the cover image
903
+ */
904
+ coverUrl: string;
905
+ category: Category;
906
+ };
869
907
  export type MediaAutocompleteResponse = {
870
- media: Array<Media>;
908
+ media: Array<MediaAutocompleteItem>;
909
+ };
910
+ /**
911
+ * Segment with internal fields. For write operations (create, update) all fields are always populated.
912
+ * For GET, optional fields are only populated when requested via include[].
913
+ *
914
+ */
915
+ export type SegmentInternal = Segment & {
916
+ /**
917
+ * Storage backend for segment assets
918
+ */
919
+ storage?: 'LOCAL' | 'R2';
920
+ /**
921
+ * Hash identifier for the segment
922
+ */
923
+ hashedId?: string;
924
+ /**
925
+ * Base path in the storage backend
926
+ */
927
+ storageBasePath?: string;
928
+ /**
929
+ * Raw WD Tagger v3 classifier output used to derive content rating
930
+ */
931
+ ratingAnalysis?: {
932
+ [key: string]: unknown;
933
+ };
934
+ /**
935
+ * POS tokenization results keyed by engine (sudachi, unidic)
936
+ */
937
+ posAnalysis?: {
938
+ [key: string]: unknown;
939
+ };
871
940
  };
872
941
  /**
873
942
  * Not Found error response
@@ -972,35 +1041,6 @@ export type SegmentUpdateRequest = {
972
1041
  */
973
1042
  hashedId?: string;
974
1043
  };
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
1044
  export type SegmentContextResponse = {
1005
1045
  segments: Array<Segment>;
1006
1046
  includes: {
@@ -1012,6 +1052,30 @@ export type SegmentContextResponse = {
1012
1052
  };
1013
1053
  };
1014
1054
  };
1055
+ export type SegmentRevision = {
1056
+ /**
1057
+ * Revision ID
1058
+ */
1059
+ id: number;
1060
+ /**
1061
+ * Sequential revision number per segment
1062
+ */
1063
+ revisionNumber: number;
1064
+ /**
1065
+ * Snapshot of editable fields at the time of the revision
1066
+ */
1067
+ snapshot: {
1068
+ [key: string]: unknown;
1069
+ };
1070
+ /**
1071
+ * Name of the user who made the change
1072
+ */
1073
+ userName?: string;
1074
+ /**
1075
+ * When the revision was created
1076
+ */
1077
+ createdAt: string;
1078
+ };
1015
1079
  /**
1016
1080
  * Ordered media series grouping
1017
1081
  */
@@ -1076,6 +1140,10 @@ export type Character = {
1076
1140
  * Internal character ID
1077
1141
  */
1078
1142
  id: number;
1143
+ /**
1144
+ * Public identifier for the character (use this in public URLs)
1145
+ */
1146
+ publicId: string;
1079
1147
  externalIds: ExternalId;
1080
1148
  /**
1081
1149
  * Japanese name of the character
@@ -1397,6 +1465,9 @@ export type SegmentCreateRequest = {
1397
1465
  */
1398
1466
  hashedId: string;
1399
1467
  };
1468
+ export type SegmentBatchCreateRequest = {
1469
+ segments: Array<SegmentCreateRequest>;
1470
+ };
1400
1471
  export type UserQuotaResponse = {
1401
1472
  /**
1402
1473
  * Number of API requests used in the current billing period.
@@ -1584,7 +1655,7 @@ export type UserPreferences = {
1584
1655
  /**
1585
1656
  * Type of user activity
1586
1657
  */
1587
- export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'LIST_ADD_SEGMENT';
1658
+ export type ActivityType = 'SEARCH' | 'ANKI_EXPORT' | 'SEGMENT_PLAY' | 'SHARE';
1588
1659
  export type UserActivity = {
1589
1660
  id: number;
1590
1661
  activityType: ActivityType;
@@ -1595,6 +1666,15 @@ export type UserActivity = {
1595
1666
  japaneseText: string;
1596
1667
  createdAt: string;
1597
1668
  };
1669
+ /**
1670
+ * Activity counts for a single day, broken down by type. Only types with at least 1 event are present.
1671
+ */
1672
+ export type HeatmapDayCounts = {
1673
+ SEARCH?: number;
1674
+ SEGMENT_PLAY?: number;
1675
+ ANKI_EXPORT?: number;
1676
+ SHARE?: number;
1677
+ };
1598
1678
  /**
1599
1679
  * User segment collection
1600
1680
  */
@@ -1607,6 +1687,10 @@ export type Collection = {
1607
1687
  * Name of the collection
1608
1688
  */
1609
1689
  name: string;
1690
+ /**
1691
+ * Type of the collection
1692
+ */
1693
+ type: 'USER' | 'ANKI_EXPORT';
1610
1694
  /**
1611
1695
  * Visibility of the collection
1612
1696
  */
@@ -2202,11 +2286,16 @@ export type GetSegmentByUuidData = {
2202
2286
  body?: never;
2203
2287
  path: {
2204
2288
  /**
2205
- * Segment UUID
2289
+ * Segment UUID or publicId
2206
2290
  */
2207
2291
  uuid: string;
2208
2292
  };
2209
- query?: never;
2293
+ query?: {
2294
+ /**
2295
+ * Additional internal fields to include in the response
2296
+ */
2297
+ include?: Array<'ratingAnalysis' | 'posAnalysis' | 'hashedId' | 'storageBasePath' | 'storage'>;
2298
+ };
2210
2299
  url: '/v1/media/segments/{uuid}';
2211
2300
  };
2212
2301
  export type GetSegmentByUuidErrors = {
@@ -2215,7 +2304,7 @@ export type GetSegmentByUuidErrors = {
2215
2304
  */
2216
2305
  400: Error400;
2217
2306
  /**
2218
- * Unauthorized (API key)
2307
+ * Unauthorized (API key or session)
2219
2308
  */
2220
2309
  401: Error401;
2221
2310
  /**
@@ -2238,16 +2327,16 @@ export type GetSegmentByUuidErrors = {
2238
2327
  export type GetSegmentByUuidError = GetSegmentByUuidErrors[keyof GetSegmentByUuidErrors];
2239
2328
  export type GetSegmentByUuidResponses = {
2240
2329
  /**
2241
- * OK
2330
+ * Single segment response with internal fields
2242
2331
  */
2243
- 200: Segment;
2332
+ 200: SegmentInternal;
2244
2333
  };
2245
2334
  export type GetSegmentByUuidResponse = GetSegmentByUuidResponses[keyof GetSegmentByUuidResponses];
2246
2335
  export type UpdateSegmentByUuidData = {
2247
2336
  body: SegmentUpdateRequest;
2248
2337
  path: {
2249
2338
  /**
2250
- * Segment UUID
2339
+ * Segment UUID or publicId
2251
2340
  */
2252
2341
  uuid: string;
2253
2342
  };
@@ -2292,7 +2381,7 @@ export type GetSegmentContextData = {
2292
2381
  body?: never;
2293
2382
  path: {
2294
2383
  /**
2295
- * Segment UUID
2384
+ * Segment UUID or publicId
2296
2385
  */
2297
2386
  uuid: string;
2298
2387
  };
@@ -2314,7 +2403,7 @@ export type GetSegmentContextErrors = {
2314
2403
  */
2315
2404
  400: Error400;
2316
2405
  /**
2317
- * Unauthorized (API key)
2406
+ * Unauthorized (API key or session)
2318
2407
  */
2319
2408
  401: Error401;
2320
2409
  /**
@@ -2342,6 +2431,53 @@ export type GetSegmentContextResponses = {
2342
2431
  200: SegmentContextResponse;
2343
2432
  };
2344
2433
  export type GetSegmentContextResponse = GetSegmentContextResponses[keyof GetSegmentContextResponses];
2434
+ export type ListSegmentRevisionsData = {
2435
+ body?: never;
2436
+ path: {
2437
+ /**
2438
+ * Segment UUID or publicId
2439
+ */
2440
+ uuid: string;
2441
+ };
2442
+ query?: never;
2443
+ url: '/v1/media/segments/{uuid}/revisions';
2444
+ };
2445
+ export type ListSegmentRevisionsErrors = {
2446
+ /**
2447
+ * Bad Request
2448
+ */
2449
+ 400: Error400;
2450
+ /**
2451
+ * Unauthorized (API key or session)
2452
+ */
2453
+ 401: Error401;
2454
+ /**
2455
+ * Forbidden
2456
+ */
2457
+ 403: Error403;
2458
+ /**
2459
+ * Not Found
2460
+ */
2461
+ 404: Error404;
2462
+ /**
2463
+ * Too Many Requests
2464
+ */
2465
+ 429: Error429;
2466
+ /**
2467
+ * Internal Server Error
2468
+ */
2469
+ 500: Error500;
2470
+ };
2471
+ export type ListSegmentRevisionsError = ListSegmentRevisionsErrors[keyof ListSegmentRevisionsErrors];
2472
+ export type ListSegmentRevisionsResponses = {
2473
+ /**
2474
+ * List of segment revisions
2475
+ */
2476
+ 200: {
2477
+ revisions: Array<SegmentRevision>;
2478
+ };
2479
+ };
2480
+ export type ListSegmentRevisionsResponse = ListSegmentRevisionsResponses[keyof ListSegmentRevisionsResponses];
2345
2481
  export type ListSeriesData = {
2346
2482
  body?: never;
2347
2483
  path?: never;
@@ -3347,6 +3483,64 @@ export type CreateSegmentResponses = {
3347
3483
  201: SegmentInternal;
3348
3484
  };
3349
3485
  export type CreateSegmentResponse = CreateSegmentResponses[keyof CreateSegmentResponses];
3486
+ export type CreateSegmentsBatchData = {
3487
+ body: SegmentBatchCreateRequest;
3488
+ path: {
3489
+ /**
3490
+ * ID of the media
3491
+ */
3492
+ mediaId: number;
3493
+ /**
3494
+ * Episode number
3495
+ */
3496
+ episodeNumber: number;
3497
+ };
3498
+ query?: never;
3499
+ url: '/v1/media/{mediaId}/episodes/{episodeNumber}/segments/batch';
3500
+ };
3501
+ export type CreateSegmentsBatchErrors = {
3502
+ /**
3503
+ * Bad Request
3504
+ */
3505
+ 400: Error400;
3506
+ /**
3507
+ * Unauthorized (API key)
3508
+ */
3509
+ 401: Error401;
3510
+ /**
3511
+ * Forbidden
3512
+ */
3513
+ 403: Error403;
3514
+ /**
3515
+ * Not Found
3516
+ */
3517
+ 404: Error404;
3518
+ /**
3519
+ * Too Many Requests
3520
+ */
3521
+ 429: Error429;
3522
+ /**
3523
+ * Internal Server Error
3524
+ */
3525
+ 500: Error500;
3526
+ };
3527
+ export type CreateSegmentsBatchError = CreateSegmentsBatchErrors[keyof CreateSegmentsBatchErrors];
3528
+ export type CreateSegmentsBatchResponses = {
3529
+ /**
3530
+ * Batch segment creation result
3531
+ */
3532
+ 201: {
3533
+ /**
3534
+ * Number of segments successfully created
3535
+ */
3536
+ created: number;
3537
+ /**
3538
+ * Number of segments skipped due to duplicate UUIDs
3539
+ */
3540
+ skipped: number;
3541
+ };
3542
+ };
3543
+ export type CreateSegmentsBatchResponse = CreateSegmentsBatchResponses[keyof CreateSegmentsBatchResponses];
3350
3544
  export type DeleteSegmentData = {
3351
3545
  body?: never;
3352
3546
  path: {
@@ -3695,7 +3889,7 @@ export type ListUserActivityResponses = {
3695
3889
  export type ListUserActivityResponse = ListUserActivityResponses[keyof ListUserActivityResponses];
3696
3890
  export type TrackUserActivityData = {
3697
3891
  body: {
3698
- activityType: 'SEGMENT_PLAY';
3892
+ activityType: 'SEGMENT_PLAY' | 'SHARE';
3699
3893
  segmentUuid?: string;
3700
3894
  mediaId?: number;
3701
3895
  mediaName?: string;
@@ -3735,10 +3929,6 @@ export type GetUserActivityHeatmapData = {
3735
3929
  * Number of days to include in the heatmap
3736
3930
  */
3737
3931
  days?: number;
3738
- /**
3739
- * Filter by activity type
3740
- */
3741
- activityType?: ActivityType;
3742
3932
  };
3743
3933
  url: '/v1/user/activity/heatmap';
3744
3934
  };
@@ -3759,10 +3949,10 @@ export type GetUserActivityHeatmapResponses = {
3759
3949
  */
3760
3950
  200: {
3761
3951
  /**
3762
- * Map of YYYY-MM-DD date strings to activity activityByDay
3952
+ * Map of YYYY-MM-DD date strings to per-type activity counts
3763
3953
  */
3764
3954
  activityByDay: {
3765
- [key: string]: number;
3955
+ [key: string]: HeatmapDayCounts;
3766
3956
  };
3767
3957
  };
3768
3958
  };
@@ -3798,6 +3988,7 @@ export type GetUserActivityStatsResponses = {
3798
3988
  totalExports: number;
3799
3989
  totalPlays: number;
3800
3990
  totalListAdds: number;
3991
+ totalShares: number;
3801
3992
  topMedia: Array<{
3802
3993
  mediaId: number;
3803
3994
  count: number;
@@ -4483,7 +4674,7 @@ export type GetAdminDashboardData = {
4483
4674
  };
4484
4675
  export type GetAdminDashboardErrors = {
4485
4676
  /**
4486
- * Unauthorized (API key)
4677
+ * Unauthorized (session)
4487
4678
  */
4488
4679
  401: Error401;
4489
4680
  /**
@@ -4575,7 +4766,7 @@ export type GetAdminHealthData = {
4575
4766
  };
4576
4767
  export type GetAdminHealthErrors = {
4577
4768
  /**
4578
- * Unauthorized (API key)
4769
+ * Unauthorized (session)
4579
4770
  */
4580
4771
  401: Error401;
4581
4772
  /**
@@ -4637,7 +4828,7 @@ export type TriggerReindexErrors = {
4637
4828
  */
4638
4829
  400: Error400;
4639
4830
  /**
4640
- * Unauthorized (API key)
4831
+ * Unauthorized (session)
4641
4832
  */
4642
4833
  401: Error401;
4643
4834
  /**
@@ -4673,7 +4864,7 @@ export type ListAdminQueueStatsErrors = {
4673
4864
  */
4674
4865
  400: Error400;
4675
4866
  /**
4676
- * Unauthorized (API key)
4867
+ * Unauthorized (session)
4677
4868
  */
4678
4869
  401: Error401;
4679
4870
  /**
@@ -4724,7 +4915,7 @@ export type GetAdminQueueErrors = {
4724
4915
  */
4725
4916
  400: Error400;
4726
4917
  /**
4727
- * Unauthorized (API key)
4918
+ * Unauthorized (session)
4728
4919
  */
4729
4920
  401: Error401;
4730
4921
  /**
@@ -4809,7 +5000,7 @@ export type ListAdminQueueFailedErrors = {
4809
5000
  */
4810
5001
  400: Error400;
4811
5002
  /**
4812
- * Unauthorized (API key)
5003
+ * Unauthorized (session)
4813
5004
  */
4814
5005
  401: Error401;
4815
5006
  /**
@@ -4867,7 +5058,7 @@ export type RetryAdminQueueFailedErrors = {
4867
5058
  */
4868
5059
  400: Error400;
4869
5060
  /**
4870
- * Unauthorized (API key)
5061
+ * Unauthorized (session)
4871
5062
  */
4872
5063
  401: Error401;
4873
5064
  /**
@@ -4915,7 +5106,7 @@ export type PurgeAdminQueueFailedErrors = {
4915
5106
  */
4916
5107
  400: Error400;
4917
5108
  /**
4918
- * Unauthorized (API key)
5109
+ * Unauthorized (session)
4919
5110
  */
4920
5111
  401: Error401;
4921
5112
  /**
@@ -4953,10 +5144,6 @@ export type ClearAdminImpersonationData = {
4953
5144
  url: '/v1/admin/impersonation';
4954
5145
  };
4955
5146
  export type ClearAdminImpersonationErrors = {
4956
- /**
4957
- * Unauthorized (session)
4958
- */
4959
- 401: Error401;
4960
5147
  /**
4961
5148
  * Forbidden
4962
5149
  */
@@ -4996,10 +5183,6 @@ export type ImpersonateAdminUserErrors = {
4996
5183
  * Bad Request
4997
5184
  */
4998
5185
  400: Error400;
4999
- /**
5000
- * Unauthorized (session)
5001
- */
5002
- 401: Error401;
5003
5186
  /**
5004
5187
  * Forbidden
5005
5188
  */
@@ -5077,7 +5260,7 @@ export type ListAdminReportsData = {
5077
5260
  };
5078
5261
  export type ListAdminReportsErrors = {
5079
5262
  /**
5080
- * Unauthorized (API key)
5263
+ * Unauthorized (session)
5081
5264
  */
5082
5265
  401: Error401;
5083
5266
  /**
@@ -5118,7 +5301,7 @@ export type UpdateAdminReportErrors = {
5118
5301
  */
5119
5302
  400: Error400;
5120
5303
  /**
5121
- * Unauthorized (API key)
5304
+ * Unauthorized (session)
5122
5305
  */
5123
5306
  401: Error401;
5124
5307
  /**
@@ -5154,7 +5337,7 @@ export type ListAdminMediaAuditsData = {
5154
5337
  };
5155
5338
  export type ListAdminMediaAuditsErrors = {
5156
5339
  /**
5157
- * Unauthorized (API key)
5340
+ * Unauthorized (session)
5158
5341
  */
5159
5342
  401: Error401;
5160
5343
  /**
@@ -5206,7 +5389,7 @@ export type UpdateAdminMediaAuditErrors = {
5206
5389
  */
5207
5390
  400: Error400;
5208
5391
  /**
5209
- * Unauthorized (API key)
5392
+ * Unauthorized (session)
5210
5393
  */
5211
5394
  401: Error401;
5212
5395
  /**
@@ -5252,7 +5435,7 @@ export type RunAdminMediaAuditData = {
5252
5435
  };
5253
5436
  export type RunAdminMediaAuditErrors = {
5254
5437
  /**
5255
- * Unauthorized (API key)
5438
+ * Unauthorized (session)
5256
5439
  */
5257
5440
  401: Error401;
5258
5441
  /**
@@ -5301,7 +5484,7 @@ export type ListAdminMediaAuditRunsData = {
5301
5484
  };
5302
5485
  export type ListAdminMediaAuditRunsErrors = {
5303
5486
  /**
5304
- * Unauthorized (API key)
5487
+ * Unauthorized (session)
5305
5488
  */
5306
5489
  401: Error401;
5307
5490
  /**
@@ -5341,7 +5524,7 @@ export type GetAdminMediaAuditRunData = {
5341
5524
  };
5342
5525
  export type GetAdminMediaAuditRunErrors = {
5343
5526
  /**
5344
- * Unauthorized (API key)
5527
+ * Unauthorized (session)
5345
5528
  */
5346
5529
  401: Error401;
5347
5530
  /**