@viceme-ai/sdk 0.2.0 → 0.3.0

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.
Files changed (44) hide show
  1. package/README.md +49 -45
  2. package/dist/chunks/client-DKsaEtwq.js +941 -0
  3. package/dist/chunks/client-DKsaEtwq.js.map +1 -0
  4. package/dist/chunks/version-C3KVoLNb.js +51 -0
  5. package/dist/chunks/version-C3KVoLNb.js.map +1 -0
  6. package/dist/core/build-endpoints.d.ts +4 -1
  7. package/dist/core/build-endpoints.d.ts.map +1 -1
  8. package/dist/core/capabilities.d.ts +79 -0
  9. package/dist/core/capabilities.d.ts.map +1 -0
  10. package/dist/core/client.d.ts +34 -8
  11. package/dist/core/client.d.ts.map +1 -1
  12. package/dist/core/config.d.ts +14 -4
  13. package/dist/core/config.d.ts.map +1 -1
  14. package/dist/core/errors.d.ts +1 -1
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core/lifecycle.d.ts +4 -2
  17. package/dist/core/lifecycle.d.ts.map +1 -1
  18. package/dist/core/presentation.d.ts +24 -0
  19. package/dist/core/presentation.d.ts.map +1 -0
  20. package/dist/danmaku.js +44 -48
  21. package/dist/danmaku.js.map +1 -1
  22. package/dist/generated/public-contract.d.ts +617 -13
  23. package/dist/generated/public-contract.d.ts.map +1 -1
  24. package/dist/index.d.ts +8 -4
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +112 -95
  27. package/dist/index.js.map +1 -1
  28. package/dist/manifest.json +30 -18
  29. package/dist/session/session.d.ts +67 -0
  30. package/dist/session/session.d.ts.map +1 -0
  31. package/dist/testing/test-adapter.d.ts +59 -0
  32. package/dist/testing/test-adapter.d.ts.map +1 -0
  33. package/dist/testing.d.ts +9 -0
  34. package/dist/testing.d.ts.map +1 -0
  35. package/dist/testing.js +75 -0
  36. package/dist/testing.js.map +1 -0
  37. package/dist/transport/transport.d.ts +44 -0
  38. package/dist/transport/transport.d.ts.map +1 -0
  39. package/dist/version.d.ts +1 -1
  40. package/dist/viceme.min.js +232 -1
  41. package/dist/viceme.min.js.map +1 -1
  42. package/package.json +6 -2
  43. package/dist/chunks/version-BbUa2jZV.js +0 -38
  44. package/dist/chunks/version-BbUa2jZV.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  * GENERATED FILE — DO NOT EDIT.
3
3
  *
4
4
  * Generated from contracts/public-capabilities.openapi.json
5
- * (contractVersion 0.4.0, sha256 3e487a33d9633e4d…)
5
+ * (contractVersion 0.4.0, sha256 959598f82f106ea3…)
6
6
  * by scripts/generate-contracts.mjs. Regenerate with `pnpm contracts:generate`.
7
7
  */
8
8
  /**
@@ -10,6 +10,174 @@
10
10
  * Do not make direct changes to the file.
11
11
  */
12
12
  export interface paths {
13
+ "/v1/public/v1/work-sessions": {
14
+ parameters: {
15
+ query?: never;
16
+ header?: never;
17
+ path?: never;
18
+ cookie?: never;
19
+ };
20
+ get?: never;
21
+ put?: never;
22
+ /**
23
+ * Establish a public visitor session for a Work
24
+ * @description Binds a short-lived capability token to the Work, the caller Origin, the enabled capability set, and an expiry. The workKey locates the Work; it is never an authorization credential. CORS accepts any browser Origin with credentials disabled; no creator-managed Origin allowlist is required.
25
+ */
26
+ post: operations["createWorkSession"];
27
+ delete?: never;
28
+ options?: never;
29
+ head?: never;
30
+ patch?: never;
31
+ trace?: never;
32
+ };
33
+ "/v1/public/v1/auth/wechat/authorize": {
34
+ parameters: {
35
+ query?: never;
36
+ header?: never;
37
+ path?: never;
38
+ cookie?: never;
39
+ };
40
+ get?: never;
41
+ put?: never;
42
+ post: operations["authorizeWechat"];
43
+ delete?: never;
44
+ options?: never;
45
+ head?: never;
46
+ patch?: never;
47
+ trace?: never;
48
+ };
49
+ "/v1/public/v1/auth/exchange": {
50
+ parameters: {
51
+ query?: never;
52
+ header?: never;
53
+ path?: never;
54
+ cookie?: never;
55
+ };
56
+ get?: never;
57
+ put?: never;
58
+ post: operations["exchangeWechatCode"];
59
+ delete?: never;
60
+ options?: never;
61
+ head?: never;
62
+ patch?: never;
63
+ trace?: never;
64
+ };
65
+ "/v1/public/v1/auth/resume-codes": {
66
+ parameters: {
67
+ query?: never;
68
+ header?: never;
69
+ path?: never;
70
+ cookie?: never;
71
+ };
72
+ get?: never;
73
+ put?: never;
74
+ post: operations["createAuthResumeCode"];
75
+ delete?: never;
76
+ options?: never;
77
+ head?: never;
78
+ patch?: never;
79
+ trace?: never;
80
+ };
81
+ "/v1/public/v1/auth/resume": {
82
+ parameters: {
83
+ query?: never;
84
+ header?: never;
85
+ path?: never;
86
+ cookie?: never;
87
+ };
88
+ get?: never;
89
+ put?: never;
90
+ post: operations["resumeAuthenticatedSession"];
91
+ delete?: never;
92
+ options?: never;
93
+ head?: never;
94
+ patch?: never;
95
+ trace?: never;
96
+ };
97
+ "/v1/public/v1/follow": {
98
+ parameters: {
99
+ query?: never;
100
+ header?: never;
101
+ path?: never;
102
+ cookie?: never;
103
+ };
104
+ get: operations["getFollowState"];
105
+ put: operations["followWorkOwner"];
106
+ post?: never;
107
+ delete: operations["unfollowWorkOwner"];
108
+ options?: never;
109
+ head?: never;
110
+ patch?: never;
111
+ trace?: never;
112
+ };
113
+ "/v1/public/v1/access/check": {
114
+ parameters: {
115
+ query?: never;
116
+ header?: never;
117
+ path?: never;
118
+ cookie?: never;
119
+ };
120
+ get?: never;
121
+ put?: never;
122
+ post: operations["checkFeatureAccess"];
123
+ delete?: never;
124
+ options?: never;
125
+ head?: never;
126
+ patch?: never;
127
+ trace?: never;
128
+ };
129
+ "/v1/public/v1/access/features": {
130
+ parameters: {
131
+ query?: never;
132
+ header?: never;
133
+ path?: never;
134
+ cookie?: never;
135
+ };
136
+ /**
137
+ * List active feature presentation
138
+ * @description Returns server-authoritative titles and current prices for host-native access entry points. It does not alter access, checkout, or payment state.
139
+ */
140
+ get: operations["listAccessFeatures"];
141
+ put?: never;
142
+ post?: never;
143
+ delete?: never;
144
+ options?: never;
145
+ head?: never;
146
+ patch?: never;
147
+ trace?: never;
148
+ };
149
+ "/v1/public/v1/checkout/sessions": {
150
+ parameters: {
151
+ query?: never;
152
+ header?: never;
153
+ path?: never;
154
+ cookie?: never;
155
+ };
156
+ get?: never;
157
+ put?: never;
158
+ post: operations["createCheckoutSession"];
159
+ delete?: never;
160
+ options?: never;
161
+ head?: never;
162
+ patch?: never;
163
+ trace?: never;
164
+ };
165
+ "/v1/public/v1/checkout/bootstrap": {
166
+ parameters: {
167
+ query?: never;
168
+ header?: never;
169
+ path?: never;
170
+ cookie?: never;
171
+ };
172
+ get?: never;
173
+ put?: never;
174
+ post: operations["bootstrapEmbeddedCheckout"];
175
+ delete?: never;
176
+ options?: never;
177
+ head?: never;
178
+ patch?: never;
179
+ trace?: never;
180
+ };
13
181
  "/v1/danmaku/messages": {
14
182
  parameters: {
15
183
  query?: never;
@@ -32,8 +200,144 @@ export interface paths {
32
200
  export type webhooks = Record<string, never>;
33
201
  export interface components {
34
202
  schemas: {
35
- /** @description Public opaque SDK Work key. */
203
+ /** @description Public opaque work key. */
36
204
  WorkKey: string;
205
+ /** @description Enabled capability name for the work. */
206
+ CapabilityName: string;
207
+ CreateWorkSessionRequest: {
208
+ workKey: components["schemas"]["WorkKey"];
209
+ };
210
+ WorkDescriptor: {
211
+ key: components["schemas"]["WorkKey"];
212
+ capabilities: components["schemas"]["CapabilityName"][];
213
+ } & {
214
+ [key: string]: unknown;
215
+ };
216
+ /** @description Unknown additional fields are allowed and ignored by the SDK (forward compatibility). */
217
+ WorkSession: {
218
+ work: components["schemas"]["WorkDescriptor"];
219
+ /** @description Short-lived capability token; memory-only in the SDK. */
220
+ token?: string;
221
+ /** @description Epoch milliseconds when the token expires. */
222
+ expiresAt?: number;
223
+ } & {
224
+ [key: string]: unknown;
225
+ };
226
+ WorkUser: {
227
+ subject: string;
228
+ nickname: string | null;
229
+ /** Format: uri */
230
+ avatarUrl: string | null;
231
+ };
232
+ AuthAuthorizeRequest: {
233
+ channel: string;
234
+ /** @enum {string} */
235
+ clientType?: "h5" | "pc";
236
+ /** @enum {string} */
237
+ locale: "zh-CN" | "en-US";
238
+ };
239
+ AuthAuthorizeResponse: {
240
+ /** Format: uri */
241
+ authorizationUrl: string;
242
+ /** Format: uri */
243
+ completionOrigin: string;
244
+ };
245
+ AuthExchangeRequest: {
246
+ code: string;
247
+ codeVerifier: string;
248
+ };
249
+ AuthExchangeResponse: {
250
+ token: string;
251
+ expiresAt: number;
252
+ user: components["schemas"]["WorkUser"];
253
+ };
254
+ AuthResumeCodeResponse: {
255
+ code: string;
256
+ expiresAt: number;
257
+ };
258
+ AuthResumeRequest: {
259
+ code: string;
260
+ };
261
+ FollowState: {
262
+ following: boolean;
263
+ /** Format: date-time */
264
+ followedAt: string | null;
265
+ target: components["schemas"]["FollowTarget"];
266
+ };
267
+ FollowTarget: {
268
+ /** @enum {string} */
269
+ kind: "CREATOR" | "USER";
270
+ displayName: string;
271
+ /** Format: uri */
272
+ avatarUrl: string | null;
273
+ description: string | null;
274
+ workCount: number;
275
+ coverUrls: string[];
276
+ };
277
+ AccessCheckRequest: {
278
+ featureKeys: string[];
279
+ };
280
+ AccessDecision: {
281
+ allowed: boolean;
282
+ /** @enum {string} */
283
+ reason: "OWNER" | "FOLLOWING" | "PURCHASED" | "ENTITLED" | "AUTH_REQUIRED" | "FOLLOW_REQUIRED" | "PURCHASE_REQUIRED" | "FEATURE_NOT_FOUND" | "FEATURE_DISABLED" | "POLICY_UNSUPPORTED";
284
+ /** @enum {string|null} */
285
+ nextAction: "SIGN_IN" | "FOLLOW" | "CHECKOUT" | null;
286
+ };
287
+ AccessCheckResponse: {
288
+ decisions: {
289
+ [key: string]: components["schemas"]["AccessDecision"];
290
+ };
291
+ };
292
+ AccessFeaturePrice: {
293
+ amountCents: number;
294
+ /** @enum {string} */
295
+ currency: "CNY";
296
+ };
297
+ AccessFeaturePresentation: {
298
+ featureKey: string;
299
+ title: string;
300
+ policy: {
301
+ /** @enum {string} */
302
+ type: "PUBLIC" | "FOLLOW_OWNER" | "WORK_ENTITLEMENT";
303
+ };
304
+ price: components["schemas"]["AccessFeaturePrice"] | null;
305
+ };
306
+ AccessFeaturesResponse: {
307
+ features: components["schemas"]["AccessFeaturePresentation"][];
308
+ };
309
+ CheckoutRequest: {
310
+ featureKey: string;
311
+ /**
312
+ * @default zh-CN
313
+ * @enum {string}
314
+ */
315
+ locale: "zh-CN" | "en-US";
316
+ channel: string;
317
+ };
318
+ CheckoutResponse: {
319
+ /** Format: uri */
320
+ checkoutUrl: string;
321
+ alreadyOwned: boolean;
322
+ /** Format: uri */
323
+ completionOrigin: string;
324
+ };
325
+ CheckoutBootstrapRequest: {
326
+ code: string;
327
+ };
328
+ CheckoutBootstrapResponse: {
329
+ token: string;
330
+ /** Format: date-time */
331
+ expiresAt: string;
332
+ resumeCode: string;
333
+ };
334
+ ErrorBody: {
335
+ statusCode: number;
336
+ /** @enum {string} */
337
+ code: "CONFIG_INVALID" | "WORK_NOT_FOUND" | "CAPABILITY_DISABLED" | "SESSION_EXPIRED" | "AUTH_REQUIRED" | "SDK_AUTH_CODE_INVALID" | "RETURN_URL_NOT_ALLOWED" | "RATE_LIMITED" | "NETWORK_TIMEOUT" | "CHECKOUT_UNAVAILABLE" | "INTERNAL_ERROR";
338
+ message: string;
339
+ requestId: string;
340
+ };
37
341
  /** @description Opaque page-position anchor derived by the external SDK. */
38
342
  DanmakuAnchorKey: string;
39
343
  DanmakuCursor: string;
@@ -56,16 +360,10 @@ export interface components {
56
360
  content: string;
57
361
  anchorKey?: components["schemas"]["DanmakuAnchorKey"];
58
362
  };
59
- ErrorBody: {
60
- statusCode: number;
61
- code: string;
62
- message: string | string[];
63
- requestId: string;
64
- };
65
363
  };
66
364
  responses: {
67
- /** @description Invalid query or body. */
68
- BadRequest: {
365
+ /** @description Public request rejected. */
366
+ PublicError: {
69
367
  headers: {
70
368
  [name: string]: unknown;
71
369
  };
@@ -73,7 +371,16 @@ export interface components {
73
371
  "application/json": components["schemas"]["ErrorBody"];
74
372
  };
75
373
  };
76
- /** @description Unknown, inactive, or non-PUBLIC danmaku work. */
374
+ /** @description Invalid configuration. */
375
+ ValidationError: {
376
+ headers: {
377
+ [name: string]: unknown;
378
+ };
379
+ content: {
380
+ "application/json": components["schemas"]["ErrorBody"];
381
+ };
382
+ };
383
+ /** @description Unknown, private, or disabled work. */
77
384
  WorkNotFound: {
78
385
  headers: {
79
386
  [name: string]: unknown;
@@ -82,7 +389,7 @@ export interface components {
82
389
  "application/json": components["schemas"]["ErrorBody"];
83
390
  };
84
391
  };
85
- /** @description Danmaku write rate limit exceeded. */
392
+ /** @description Rate limit exceeded (retryable). */
86
393
  RateLimited: {
87
394
  headers: {
88
395
  [name: string]: unknown;
@@ -91,7 +398,7 @@ export interface components {
91
398
  "application/json": components["schemas"]["ErrorBody"];
92
399
  };
93
400
  };
94
- /** @description Unexpected Shop error. */
401
+ /** @description Server error (retryable). */
95
402
  InternalError: {
96
403
  headers: {
97
404
  [name: string]: unknown;
@@ -100,6 +407,15 @@ export interface components {
100
407
  "application/json": components["schemas"]["ErrorBody"];
101
408
  };
102
409
  };
410
+ /** @description Invalid query or body. */
411
+ BadRequest: {
412
+ headers: {
413
+ [name: string]: unknown;
414
+ };
415
+ content: {
416
+ "application/json": components["schemas"]["ErrorBody"];
417
+ };
418
+ };
103
419
  };
104
420
  parameters: never;
105
421
  requestBodies: never;
@@ -108,6 +424,294 @@ export interface components {
108
424
  }
109
425
  export type $defs = Record<string, never>;
110
426
  export interface operations {
427
+ createWorkSession: {
428
+ parameters: {
429
+ query?: never;
430
+ header?: never;
431
+ path?: never;
432
+ cookie?: never;
433
+ };
434
+ requestBody: {
435
+ content: {
436
+ "application/json": components["schemas"]["CreateWorkSessionRequest"];
437
+ };
438
+ };
439
+ responses: {
440
+ /** @description Session established. */
441
+ 201: {
442
+ headers: {
443
+ /** @description Server request id for support correlation. */
444
+ "x-request-id"?: string;
445
+ [name: string]: unknown;
446
+ };
447
+ content: {
448
+ "application/json": components["schemas"]["WorkSession"];
449
+ };
450
+ };
451
+ 400: components["responses"]["ValidationError"];
452
+ 404: components["responses"]["WorkNotFound"];
453
+ 429: components["responses"]["RateLimited"];
454
+ "5xx": components["responses"]["InternalError"];
455
+ };
456
+ };
457
+ authorizeWechat: {
458
+ parameters: {
459
+ query?: never;
460
+ header?: never;
461
+ path?: never;
462
+ cookie?: never;
463
+ };
464
+ requestBody: {
465
+ content: {
466
+ "application/json": components["schemas"]["AuthAuthorizeRequest"];
467
+ };
468
+ };
469
+ responses: {
470
+ /** @description Hosted WeChat authorization URL. */
471
+ 200: {
472
+ headers: {
473
+ [name: string]: unknown;
474
+ };
475
+ content: {
476
+ "application/json": components["schemas"]["AuthAuthorizeResponse"];
477
+ };
478
+ };
479
+ "4xx": components["responses"]["PublicError"];
480
+ "5xx": components["responses"]["InternalError"];
481
+ };
482
+ };
483
+ exchangeWechatCode: {
484
+ parameters: {
485
+ query?: never;
486
+ header?: never;
487
+ path?: never;
488
+ cookie?: never;
489
+ };
490
+ requestBody: {
491
+ content: {
492
+ "application/json": components["schemas"]["AuthExchangeRequest"];
493
+ };
494
+ };
495
+ responses: {
496
+ /** @description Authenticated work session. */
497
+ 200: {
498
+ headers: {
499
+ [name: string]: unknown;
500
+ };
501
+ content: {
502
+ "application/json": components["schemas"]["AuthExchangeResponse"];
503
+ };
504
+ };
505
+ "4xx": components["responses"]["PublicError"];
506
+ "5xx": components["responses"]["InternalError"];
507
+ };
508
+ };
509
+ createAuthResumeCode: {
510
+ parameters: {
511
+ query?: never;
512
+ header?: never;
513
+ path?: never;
514
+ cookie?: never;
515
+ };
516
+ requestBody?: never;
517
+ responses: {
518
+ /** @description Compatibility endpoint for restoring an authenticated work session. */
519
+ 200: {
520
+ headers: {
521
+ [name: string]: unknown;
522
+ };
523
+ content: {
524
+ "application/json": components["schemas"]["AuthResumeCodeResponse"];
525
+ };
526
+ };
527
+ "4xx": components["responses"]["PublicError"];
528
+ };
529
+ };
530
+ resumeAuthenticatedSession: {
531
+ parameters: {
532
+ query?: never;
533
+ header?: never;
534
+ path?: never;
535
+ cookie?: never;
536
+ };
537
+ requestBody: {
538
+ content: {
539
+ "application/json": components["schemas"]["AuthResumeRequest"];
540
+ };
541
+ };
542
+ responses: {
543
+ /** @description Restored authenticated work session. */
544
+ 200: {
545
+ headers: {
546
+ [name: string]: unknown;
547
+ };
548
+ content: {
549
+ "application/json": components["schemas"]["AuthExchangeResponse"];
550
+ };
551
+ };
552
+ "4xx": components["responses"]["PublicError"];
553
+ };
554
+ };
555
+ getFollowState: {
556
+ parameters: {
557
+ query?: never;
558
+ header?: never;
559
+ path?: never;
560
+ cookie?: never;
561
+ };
562
+ requestBody?: never;
563
+ responses: {
564
+ /** @description Current follow state. */
565
+ 200: {
566
+ headers: {
567
+ [name: string]: unknown;
568
+ };
569
+ content: {
570
+ "application/json": components["schemas"]["FollowState"];
571
+ };
572
+ };
573
+ "4xx": components["responses"]["PublicError"];
574
+ };
575
+ };
576
+ followWorkOwner: {
577
+ parameters: {
578
+ query?: never;
579
+ header?: never;
580
+ path?: never;
581
+ cookie?: never;
582
+ };
583
+ requestBody?: never;
584
+ responses: {
585
+ /** @description Followed. */
586
+ 200: {
587
+ headers: {
588
+ [name: string]: unknown;
589
+ };
590
+ content: {
591
+ "application/json": components["schemas"]["FollowState"];
592
+ };
593
+ };
594
+ "4xx": components["responses"]["PublicError"];
595
+ };
596
+ };
597
+ unfollowWorkOwner: {
598
+ parameters: {
599
+ query?: never;
600
+ header?: never;
601
+ path?: never;
602
+ cookie?: never;
603
+ };
604
+ requestBody?: never;
605
+ responses: {
606
+ /** @description Unfollowed. */
607
+ 200: {
608
+ headers: {
609
+ [name: string]: unknown;
610
+ };
611
+ content: {
612
+ "application/json": components["schemas"]["FollowState"];
613
+ };
614
+ };
615
+ "4xx": components["responses"]["PublicError"];
616
+ };
617
+ };
618
+ checkFeatureAccess: {
619
+ parameters: {
620
+ query?: never;
621
+ header?: never;
622
+ path?: never;
623
+ cookie?: never;
624
+ };
625
+ requestBody: {
626
+ content: {
627
+ "application/json": components["schemas"]["AccessCheckRequest"];
628
+ };
629
+ };
630
+ responses: {
631
+ /** @description Access decisions. */
632
+ 200: {
633
+ headers: {
634
+ [name: string]: unknown;
635
+ };
636
+ content: {
637
+ "application/json": components["schemas"]["AccessCheckResponse"];
638
+ };
639
+ };
640
+ "4xx": components["responses"]["PublicError"];
641
+ };
642
+ };
643
+ listAccessFeatures: {
644
+ parameters: {
645
+ query?: never;
646
+ header?: never;
647
+ path?: never;
648
+ cookie?: never;
649
+ };
650
+ requestBody?: never;
651
+ responses: {
652
+ /** @description Active feature presentation. */
653
+ 200: {
654
+ headers: {
655
+ [name: string]: unknown;
656
+ };
657
+ content: {
658
+ "application/json": components["schemas"]["AccessFeaturesResponse"];
659
+ };
660
+ };
661
+ "4xx": components["responses"]["PublicError"];
662
+ };
663
+ };
664
+ createCheckoutSession: {
665
+ parameters: {
666
+ query?: never;
667
+ header?: never;
668
+ path?: never;
669
+ cookie?: never;
670
+ };
671
+ requestBody: {
672
+ content: {
673
+ "application/json": components["schemas"]["CheckoutRequest"];
674
+ };
675
+ };
676
+ responses: {
677
+ /** @description Embedded checkout URL resolved from the bound product. */
678
+ 200: {
679
+ headers: {
680
+ [name: string]: unknown;
681
+ };
682
+ content: {
683
+ "application/json": components["schemas"]["CheckoutResponse"];
684
+ };
685
+ };
686
+ "4xx": components["responses"]["PublicError"];
687
+ "5xx": components["responses"]["InternalError"];
688
+ };
689
+ };
690
+ bootstrapEmbeddedCheckout: {
691
+ parameters: {
692
+ query?: never;
693
+ header?: never;
694
+ path?: never;
695
+ cookie?: never;
696
+ };
697
+ requestBody: {
698
+ content: {
699
+ "application/json": components["schemas"]["CheckoutBootstrapRequest"];
700
+ };
701
+ };
702
+ responses: {
703
+ /** @description Memory-only bearer session for the embedded checkout. */
704
+ 200: {
705
+ headers: {
706
+ [name: string]: unknown;
707
+ };
708
+ content: {
709
+ "application/json": components["schemas"]["CheckoutBootstrapResponse"];
710
+ };
711
+ };
712
+ "4xx": components["responses"]["PublicError"];
713
+ };
714
+ };
111
715
  listDanmakuMessages: {
112
716
  parameters: {
113
717
  query: {