@djvlc/openapi-user-client 1.7.9 → 1.7.10

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.
@@ -46,338 +46,84 @@ tags:
46
46
  - name: Health
47
47
  description: 健康检查
48
48
  paths:
49
- /pages/{pageId}:
49
+ /page/resolve:
50
50
  get:
51
51
  tags:
52
52
  - Pages
53
- operationId: getPage
54
- summary: 获取页面
55
- description: 获取指定页面的基本信息和元数据
53
+ operationId: resolvePage
54
+ summary: 解析页面(Runtime 核心接口)
55
+ description: |
56
+ Runtime 的核心接口,返回渲染所需的完整数据。
57
+
58
+ 支持两种模式:
59
+ 1. 稳定入口(推荐):支持灰度/回滚/ops,返回 resolvedVersionId 和 CDN 地址
60
+ 2. 保底模式:当 includeSnapshot=1 时,返回完整 snapshot(CDN 失败时使用)
61
+
62
+ 响应包含:
63
+ - resolvedVersionId: 解析后的页面版本 ID(考虑灰度/回滚)
64
+ - cdnBase: CDN 基础地址
65
+ - snapshotUrl: snapshot.json 的完整 URL
66
+ - manifestUrl: manifest.json 的完整 URL
67
+ - ops: 运维配置(killSwitch、blockedComponents、flags)
68
+ - etag: 内容哈希(用于缓存)
69
+ - cacheTtlSeconds: 缓存 TTL(建议 10~30 秒)
70
+ - snapshot: 完整快照(仅当 includeSnapshot=1 时返回)
56
71
  parameters:
57
72
  - name: pageId
58
- in: path
73
+ in: query
59
74
  required: true
60
75
  schema:
61
76
  type: string
62
77
  description: 页面 ID
63
- - name: version
78
+ - name: env
64
79
  in: query
80
+ required: false
65
81
  schema:
66
82
  type: string
67
- description: 指定版本号(可选,默认最新版本)
68
- responses:
69
- '200':
70
- description: 成功
71
- content:
72
- application/json:
73
- schema:
74
- type: object
75
- required: &ref_16
76
- - data
77
- properties: &ref_17
78
- data:
79
- type: object
80
- required:
81
- - pageId
82
- - version
83
- - meta
84
- properties:
85
- pageId:
86
- type: string
87
- description: 页面 ID
88
- version:
89
- type: string
90
- description: 页面版本
91
- meta:
92
- type: object
93
- properties:
94
- title:
95
- type: string
96
- description: 页面标题
97
- description:
98
- type: string
99
- description: 页面描述
100
- integrity:
101
- type: string
102
- description: 完整性哈希
103
- '404':
104
- description: 资源不存在
105
- content: &ref_2
106
- application/json:
107
- schema:
108
- type: object
109
- required: &ref_0
110
- - code
111
- - message
112
- properties: &ref_1
113
- code:
114
- type: string
115
- description: 错误码
116
- message:
117
- type: string
118
- description: 错误消息
119
- details:
120
- type: array
121
- items:
122
- type: object
123
- properties:
124
- field:
125
- type: string
126
- message:
127
- type: string
128
- description: 错误详情
129
- traceId:
130
- type: string
131
- description: 追踪 ID
132
- example:
133
- code: NOT_FOUND
134
- message: 资源不存在
135
- '503':
136
- description: 服务不可用
137
- content: &ref_3
138
- application/json:
139
- schema:
140
- type: object
141
- required: *ref_0
142
- properties: *ref_1
143
- example:
144
- code: SERVICE_UNAVAILABLE
145
- message: 页面暂时不可用
146
- /pages/{pageId}/resolve:
147
- post:
148
- tags:
149
- - Pages
150
- operationId: resolvePage
151
- summary: 解析页面
152
- description: |
153
- 解析页面 Schema,返回完整的渲染数据。
154
-
155
- 包括:
156
- - 解析后的页面 Schema
157
- - 组件资源清单
158
- - 预取的数据查询结果
159
- - 动作资源清单
160
- parameters:
161
- - name: pageId
162
- in: path
163
- required: true
83
+ enum:
84
+ - prod
85
+ - preview
86
+ - staging
87
+ default: prod
88
+ description: 环境(prod/preview/staging)
89
+ - name: uid
90
+ in: query
91
+ required: false
164
92
  schema:
165
93
  type: string
166
- description: 页面 ID
167
- requestBody:
168
- required: true
169
- content:
170
- application/json:
171
- schema:
172
- type: object
173
- properties: &ref_19
174
- context:
175
- type: object
176
- description: 页面解析上下文
177
- properties: &ref_18
178
- userId:
179
- type: string
180
- description: 用户 ID
181
- sessionId:
182
- type: string
183
- description: 会话 ID
184
- deviceId:
185
- type: string
186
- description: 设备 ID
187
- deviceType:
188
- type: string
189
- enum:
190
- - mobile
191
- - tablet
192
- - desktop
193
- description: 设备类型
194
- channel:
195
- type: string
196
- description: 渠道标识
197
- urlParams:
198
- type: object
199
- additionalProperties:
200
- type: string
201
- description: URL 参数
202
- routeParams:
203
- type: object
204
- additionalProperties:
205
- type: string
206
- description: 路由参数
207
- customData:
208
- type: object
209
- additionalProperties: true
210
- description: 自定义上下文数据
211
- options:
212
- type: object
213
- properties:
214
- prefetchData:
215
- type: boolean
216
- default: true
217
- description: 是否预取数据
218
- includeManifests:
219
- type: boolean
220
- default: true
221
- description: 是否包含资源清单
222
- locale:
223
- type: string
224
- description: 语言环境
94
+ description: 用户 ID(用于灰度路由)
95
+ - name: deviceId
96
+ in: query
97
+ required: false
98
+ schema:
99
+ type: string
100
+ description: 设备 ID
101
+ - name: channel
102
+ in: query
103
+ required: false
104
+ schema:
105
+ type: string
106
+ description: 渠道标识
107
+ - name: includeSnapshot
108
+ in: query
109
+ required: false
110
+ schema:
111
+ type: boolean
112
+ default: false
113
+ description: 是否包含完整 snapshot(CDN 失败保底时使用)
225
114
  responses:
226
115
  '200':
227
- description: 成功
116
+ description: 解析成功
228
117
  content:
229
118
  application/json:
230
119
  schema:
231
- type: object
232
- required: &ref_28
233
- - data
234
- properties: &ref_29
235
- data:
236
- type: object
237
- required:
238
- - pageId
239
- - pageVersionId
240
- - schema
241
- properties:
242
- pageId:
243
- type: string
244
- description: 页面 ID
245
- pageVersionId:
246
- type: string
247
- description: 页面版本 ID(不可变)
248
- schemaVersion:
249
- type: string
250
- description: Schema 版本
251
- schema:
252
- type: object
253
- description: 解析后的页面 Schema
254
- manifests:
255
- type: object
256
- properties: &ref_26
257
- components:
258
- type: array
259
- items:
260
- type: object
261
- required: &ref_20
262
- - componentType
263
- - version
264
- - entryUrl
265
- properties: &ref_21
266
- componentType:
267
- type: string
268
- description: 组件类型
269
- version:
270
- type: string
271
- description: 组件版本
272
- entryUrl:
273
- type: string
274
- format: uri
275
- description: 组件入口 URL
276
- styleUrl:
277
- type: string
278
- format: uri
279
- description: 样式文件 URL
280
- integrity:
281
- type: string
282
- description: SRI 完整性哈希
283
- blocked:
284
- type: boolean
285
- description: 是否被阻断
286
- fallback:
287
- type: string
288
- description: 降级组件类型
289
- description: 组件资源清单
290
- actions:
291
- type: array
292
- items:
293
- type: object
294
- required: &ref_22
295
- - actionId
296
- - actionDefinitionVersionId
297
- properties: &ref_23
298
- actionId:
299
- type: string
300
- description: 动作 ID
301
- actionDefinitionVersionId:
302
- type: string
303
- description: 动作定义版本 ID
304
- actionType:
305
- type: string
306
- enum:
307
- - claim
308
- - signin
309
- - lottery
310
- - reserve
311
- - bind
312
- - task_complete
313
- - vote
314
- - share
315
- - form_submit
316
- - navigate
317
- - setState
318
- - showToast
319
- - refreshData
320
- - custom
321
- description: 动作类型
322
- builtin:
323
- type: boolean
324
- description: 是否内置动作
325
- description: 动作资源清单
326
- queries:
327
- type: array
328
- items:
329
- type: object
330
- required: &ref_24
331
- - queryId
332
- - queryVersionId
333
- properties: &ref_25
334
- queryId:
335
- type: string
336
- description: 查询 ID
337
- queryVersionId:
338
- type: string
339
- description: 查询定义版本 ID
340
- cacheTtl:
341
- type: integer
342
- description: 缓存 TTL(秒)
343
- description: 查询资源清单
344
- prefetchedData:
345
- type: object
346
- additionalProperties: true
347
- description: 预取的数据
348
- opsConfig:
349
- type: object
350
- description: 运维配置
351
- properties: &ref_27
352
- killSwitch:
353
- type: boolean
354
- description: Kill Switch 是否启用
355
- fallbackUrl:
356
- type: string
357
- format: uri
358
- description: 降级跳转 URL
359
- blockedComponents:
360
- type: array
361
- items:
362
- type: string
363
- description: 被阻断的组件列表
120
+ $ref: '#/components/schemas/ResolvePageResponse'
364
121
  '400':
365
- description: 请求参数错误
366
- content: &ref_4
367
- application/json:
368
- schema:
369
- type: object
370
- required: *ref_0
371
- properties: *ref_1
372
- example:
373
- code: BAD_REQUEST
374
- message: 请求参数无效
122
+ $ref: '#/components/responses/BadRequest'
375
123
  '404':
376
- description: 资源不存在
377
- content: *ref_2
124
+ $ref: '#/components/responses/NotFound'
378
125
  '503':
379
- description: 服务不可用
380
- content: *ref_3
126
+ $ref: '#/components/responses/ServiceUnavailable'
381
127
  /actions/execute:
382
128
  post:
383
129
  tags:
@@ -414,238 +160,32 @@ paths:
414
160
  content:
415
161
  application/json:
416
162
  schema:
417
- type: object
418
- required: &ref_32
419
- - actionType
420
- - params
421
- properties: &ref_33
422
- actionType:
423
- type: string
424
- enum:
425
- - claim
426
- - signin
427
- - lottery
428
- - reserve
429
- - bind
430
- - task_complete
431
- - vote
432
- - share
433
- - form_submit
434
- - navigate
435
- - setState
436
- - showToast
437
- - refreshData
438
- - custom
439
- description: 动作类型
440
- actionDefinitionVersionId:
441
- type: string
442
- description: 动作定义版本 ID(custom 类型必填)
443
- params:
444
- type: object
445
- additionalProperties: true
446
- description: 动作参数
447
- context:
448
- type: object
449
- description: 动作执行上下文(问题追溯必须字段)
450
- required: &ref_30
451
- - pageVersionId
452
- properties: &ref_31
453
- pageVersionId:
454
- type: string
455
- description: 页面版本 ID(不可变)
456
- componentVersionId:
457
- type: string
458
- description: 触发组件版本 ID
459
- actionId:
460
- type: string
461
- description: 动作实例 ID
462
- traceId:
463
- type: string
464
- description: 分布式追踪 ID(OTel)
465
- uid:
466
- type: string
467
- description: 用户 ID
468
- deviceId:
469
- type: string
470
- description: 设备 ID
471
- channel:
472
- type: string
473
- description: 渠道标识
474
- sessionId:
475
- type: string
476
- description: 会话 ID
477
- eventName:
478
- type: string
479
- description: 触发事件名
480
- timestamp:
481
- type: string
482
- format: date-time
483
- description: 触发时间
484
- state:
485
- type: object
486
- additionalProperties: true
487
- description: 当前页面状态
488
- idempotencyKey:
489
- type: string
490
- minLength: 16
491
- maxLength: 128
492
- description: 幂等键(防重复提交)
493
- options:
494
- type: object
495
- properties:
496
- timeout:
497
- type: integer
498
- minimum: 1000
499
- maximum: 30000
500
- default: 10000
501
- description: 执行超时(毫秒)
502
- skipRisk:
503
- type: boolean
504
- default: false
505
- description: 是否跳过风控(需特殊权限)
163
+ $ref: '#/components/schemas/ExecuteActionRequest'
506
164
  responses:
507
165
  '200':
508
166
  description: 执行成功
509
167
  content:
510
168
  application/json:
511
169
  schema:
512
- type: object
513
- required: &ref_36
514
- - success
515
- - data
516
- properties: &ref_37
517
- success:
518
- type: boolean
519
- description: 是否成功
520
- data:
521
- type: object
522
- properties:
523
- actionId:
524
- type: string
525
- description: 动作执行 ID
526
- result:
527
- description: 执行结果
528
- effects:
529
- type: array
530
- items:
531
- type: object
532
- required: &ref_34
533
- - type
534
- properties: &ref_35
535
- type:
536
- type: string
537
- enum:
538
- - setState
539
- - navigate
540
- - showToast
541
- - refreshData
542
- - openDialog
543
- - closeDialog
544
- - custom
545
- description: 副作用类型
546
- payload:
547
- type: object
548
- additionalProperties: true
549
- description: 副作用参数
550
- description: 副作用列表
551
- meta:
552
- type: object
553
- properties:
554
- executionTime:
555
- type: integer
556
- description: 执行时间(毫秒)
557
- traceId:
558
- type: string
559
- description: 追踪 ID
560
- idempotent:
561
- type: boolean
562
- description: 是否幂等命中
170
+ $ref: '#/components/schemas/ExecuteActionResponse'
563
171
  '400':
564
- description: 请求参数错误
565
- content: *ref_4
172
+ $ref: '#/components/responses/BadRequest'
566
173
  '401':
567
- description: 未认证
568
- content: &ref_5
569
- application/json:
570
- schema:
571
- type: object
572
- required: *ref_0
573
- properties: *ref_1
574
- example:
575
- code: UNAUTHORIZED
576
- message: 请先登录
174
+ $ref: '#/components/responses/Unauthorized'
577
175
  '403':
578
- description: 无权限
579
- content: &ref_6
580
- application/json:
581
- schema:
582
- type: object
583
- required: *ref_0
584
- properties: *ref_1
585
- example:
586
- code: FORBIDDEN
587
- message: 无访问权限
176
+ $ref: '#/components/responses/Forbidden'
588
177
  '409':
589
178
  description: 幂等冲突(重复请求)
590
179
  content:
591
180
  application/json:
592
181
  schema:
593
- type: object
594
- required: &ref_38
595
- - success
596
- - data
597
- properties: &ref_39
598
- success:
599
- type: boolean
600
- example: true
601
- data:
602
- type: object
603
- properties:
604
- idempotent:
605
- type: boolean
606
- example: true
607
- originalActionId:
608
- type: string
609
- description: 原始动作执行 ID
610
- originalResult:
611
- description: 原始执行结果
612
- originalExecutedAt:
613
- type: string
614
- format: date-time
615
- description: 原始执行时间
182
+ $ref: '#/components/schemas/IdempotencyConflictResponse'
616
183
  '422':
617
- description: 请求无法处理
618
- content: &ref_7
619
- application/json:
620
- schema:
621
- type: object
622
- required: *ref_0
623
- properties: *ref_1
624
- example:
625
- code: UNPROCESSABLE_ENTITY
626
- message: 参数验证失败
184
+ $ref: '#/components/responses/UnprocessableEntity'
627
185
  '429':
628
- description: 请求过于频繁
629
- content: &ref_71
630
- application/json:
631
- schema:
632
- type: object
633
- required: *ref_0
634
- properties: *ref_1
635
- example:
636
- code: TOO_MANY_REQUESTS
637
- message: 请求过于频繁,请稍后再试
186
+ $ref: '#/components/responses/TooManyRequests'
638
187
  '500':
639
- description: 服务器内部错误
640
- content: &ref_8
641
- application/json:
642
- schema:
643
- type: object
644
- required: *ref_0
645
- properties: *ref_1
646
- example:
647
- code: INTERNAL_ERROR
648
- message: 服务器内部错误
188
+ $ref: '#/components/responses/InternalError'
649
189
  /actions/validate:
650
190
  post:
651
191
  tags:
@@ -660,57 +200,16 @@ paths:
660
200
  content:
661
201
  application/json:
662
202
  schema:
663
- type: object
664
- required: &ref_40
665
- - actionType
666
- - params
667
- properties: &ref_41
668
- actionType:
669
- type: string
670
- description: 动作类型
671
- actionDefinitionVersionId:
672
- type: string
673
- description: 动作定义版本 ID
674
- params:
675
- type: object
676
- additionalProperties: true
677
- description: 待验证的参数
203
+ $ref: '#/components/schemas/ValidateActionRequest'
678
204
  responses:
679
205
  '200':
680
206
  description: 验证结果
681
207
  content:
682
208
  application/json:
683
209
  schema:
684
- type: object
685
- required: &ref_42
686
- - data
687
- properties: &ref_43
688
- data:
689
- type: object
690
- required:
691
- - valid
692
- properties:
693
- valid:
694
- type: boolean
695
- description: 是否有效
696
- errors:
697
- type: array
698
- items:
699
- type: object
700
- properties:
701
- path:
702
- type: string
703
- description: 参数路径
704
- message:
705
- type: string
706
- description: 错误消息
707
- code:
708
- type: string
709
- description: 错误码
710
- description: 验证错误
210
+ $ref: '#/components/schemas/ValidateActionResponse'
711
211
  '400':
712
- description: 请求参数错误
713
- content: *ref_4
212
+ $ref: '#/components/responses/BadRequest'
714
213
  /actions/definitions:
715
214
  get:
716
215
  tags:
@@ -731,28 +230,9 @@ paths:
731
230
  content:
732
231
  application/json:
733
232
  schema:
734
- type: object
735
- required: &ref_44
736
- - data
737
- properties: &ref_45
738
- data:
739
- type: object
740
- properties:
741
- actionDefinitionVersionId:
742
- type: string
743
- actionType:
744
- type: string
745
- name:
746
- type: string
747
- paramsSchema:
748
- type: object
749
- description: 参数 JSON Schema
750
- resultSchema:
751
- type: object
752
- description: 结果 JSON Schema
233
+ $ref: '#/components/schemas/ActionDefinitionResponse'
753
234
  '404':
754
- description: 资源不存在
755
- content: *ref_2
235
+ $ref: '#/components/responses/NotFound'
756
236
  /data/query:
757
237
  post:
758
238
  tags:
@@ -780,119 +260,28 @@ paths:
780
260
  content:
781
261
  application/json:
782
262
  schema:
783
- type: object
784
- required: &ref_46
785
- - queryVersionId
786
- properties: &ref_47
787
- queryVersionId:
788
- type: string
789
- description: 查询定义版本 ID
790
- params:
791
- type: object
792
- additionalProperties: true
793
- description: 查询参数
794
- context:
795
- type: object
796
- properties: &ref_9
797
- pageVersionId:
798
- type: string
799
- description: 页面版本 ID
800
- uid:
801
- type: string
802
- description: 用户 ID
803
- sessionId:
804
- type: string
805
- description: 会话 ID
806
- traceId:
807
- type: string
808
- description: 分布式追踪 ID
809
- options:
810
- type: object
811
- properties:
812
- timeout:
813
- type: integer
814
- minimum: 1000
815
- maximum: 60000
816
- default: 30000
817
- description: 查询超时(毫秒)
818
- cache:
819
- type: boolean
820
- default: true
821
- description: 是否使用缓存
822
- cacheKey:
823
- type: string
824
- description: 自定义缓存键
263
+ $ref: '#/components/schemas/QueryDataRequest'
825
264
  responses:
826
265
  '200':
827
266
  description: 查询成功
828
267
  content:
829
268
  application/json:
830
269
  schema:
831
- type: object
832
- required: &ref_48
833
- - success
834
- - data
835
- properties: &ref_49
836
- success:
837
- type: boolean
838
- data:
839
- description: 查询结果数据
840
- meta:
841
- type: object
842
- properties:
843
- cached:
844
- type: boolean
845
- description: 是否来自缓存
846
- cachedAt:
847
- type: string
848
- format: date-time
849
- description: 缓存时间
850
- executionTime:
851
- type: integer
852
- description: 执行时间(毫秒)
853
- traceId:
854
- type: string
855
- description: 追踪 ID
856
- pagination:
857
- type: object
858
- properties:
859
- page:
860
- type: integer
861
- limit:
862
- type: integer
863
- total:
864
- type: integer
865
- hasMore:
866
- type: boolean
270
+ $ref: '#/components/schemas/QueryDataResponse'
867
271
  '400':
868
- description: 请求参数错误
869
- content: *ref_4
272
+ $ref: '#/components/responses/BadRequest'
870
273
  '401':
871
- description: 未认证
872
- content: *ref_5
274
+ $ref: '#/components/responses/Unauthorized'
873
275
  '403':
874
- description: 无权限
875
- content: *ref_6
276
+ $ref: '#/components/responses/Forbidden'
876
277
  '404':
877
- description: 资源不存在
878
- content: *ref_2
278
+ $ref: '#/components/responses/NotFound'
879
279
  '422':
880
- description: 请求无法处理
881
- content: *ref_7
280
+ $ref: '#/components/responses/UnprocessableEntity'
882
281
  '500':
883
- description: 服务器内部错误
884
- content: *ref_8
282
+ $ref: '#/components/responses/InternalError'
885
283
  '504':
886
- description: 网关超时
887
- content: &ref_72
888
- application/json:
889
- schema:
890
- type: object
891
- required: *ref_0
892
- properties: *ref_1
893
- example:
894
- code: GATEWAY_TIMEOUT
895
- message: 查询超时
284
+ $ref: '#/components/responses/GatewayTimeout'
896
285
  /data/query/batch:
897
286
  post:
898
287
  tags:
@@ -907,62 +296,16 @@ paths:
907
296
  content:
908
297
  application/json:
909
298
  schema:
910
- type: object
911
- required: &ref_50
912
- - queries
913
- properties: &ref_51
914
- queries:
915
- type: array
916
- items:
917
- type: object
918
- required:
919
- - queryVersionId
920
- properties:
921
- queryVersionId:
922
- type: string
923
- params:
924
- type: object
925
- alias:
926
- type: string
927
- description: 查询别名(用于结果映射)
928
- maxItems: 20
929
- description: 查询列表(最多 20 个)
930
- context:
931
- type: object
932
- properties: *ref_9
299
+ $ref: '#/components/schemas/BatchQueryRequest'
933
300
  responses:
934
301
  '200':
935
302
  description: 批量查询结果
936
303
  content:
937
304
  application/json:
938
305
  schema:
939
- type: object
940
- required: &ref_52
941
- - success
942
- - data
943
- properties: &ref_53
944
- success:
945
- type: boolean
946
- data:
947
- type: object
948
- additionalProperties:
949
- type: object
950
- properties:
951
- success:
952
- type: boolean
953
- data:
954
- description: 查询结果
955
- error:
956
- type: object
957
- properties:
958
- code:
959
- type: string
960
- message:
961
- type: string
962
- description: 按 alias 或 queryVersionId 索引的结果
306
+ $ref: '#/components/schemas/BatchQueryResponse'
963
307
  '400':
964
- description: 请求参数错误
965
- content: *ref_4
308
+ $ref: '#/components/responses/BadRequest'
966
309
  /data/definitions:
967
310
  get:
968
311
  tags:
@@ -983,29 +326,9 @@ paths:
983
326
  content:
984
327
  application/json:
985
328
  schema:
986
- type: object
987
- required: &ref_54
988
- - data
989
- properties: &ref_55
990
- data:
991
- type: object
992
- properties:
993
- queryVersionId:
994
- type: string
995
- name:
996
- type: string
997
- paramsSchema:
998
- type: object
999
- description: 参数 JSON Schema
1000
- resultSchema:
1001
- type: object
1002
- description: 结果 JSON Schema
1003
- cacheTtl:
1004
- type: integer
1005
- description: 缓存 TTL(秒)
329
+ $ref: '#/components/schemas/QueryDefinitionResponse'
1006
330
  '404':
1007
- description: 资源不存在
1008
- content: *ref_2
331
+ $ref: '#/components/responses/NotFound'
1009
332
  /activities/{activityId}:
1010
333
  get:
1011
334
  tags:
@@ -1036,68 +359,9 @@ paths:
1036
359
  success:
1037
360
  type: boolean
1038
361
  data:
1039
- type: object
1040
- required: &ref_56
1041
- - id
1042
- - name
1043
- - type
1044
- - status
1045
- properties: &ref_57
1046
- id:
1047
- type: string
1048
- description: 活动 ID
1049
- name:
1050
- type: string
1051
- description: 活动名称
1052
- type:
1053
- type: string
1054
- enum:
1055
- - claim
1056
- - signin
1057
- - lottery
1058
- - reserve
1059
- - task
1060
- - vote
1061
- - share
1062
- - bind
1063
- - custom
1064
- description: 活动类型
1065
- status:
1066
- type: string
1067
- enum:
1068
- - active
1069
- - ended
1070
- description: 活动状态
1071
- description:
1072
- type: string
1073
- description: 活动描述
1074
- startTime:
1075
- type: string
1076
- format: date-time
1077
- description: 开始时间
1078
- endTime:
1079
- type: string
1080
- format: date-time
1081
- description: 结束时间
1082
- rules:
1083
- type: object
1084
- additionalProperties: true
1085
- description: 活动规则(公开部分)
1086
- rewards:
1087
- type: array
1088
- items:
1089
- type: object
1090
- properties:
1091
- name:
1092
- type: string
1093
- description:
1094
- type: string
1095
- icon:
1096
- type: string
1097
- description: 奖励列表
362
+ $ref: '#/components/schemas/PublicActivityInfo'
1098
363
  '404':
1099
- description: 资源不存在
1100
- content: *ref_2
364
+ $ref: '#/components/responses/NotFound'
1101
365
  security: []
1102
366
  /activities/{activityId}/state:
1103
367
  get:
@@ -1129,41 +393,9 @@ paths:
1129
393
  success:
1130
394
  type: boolean
1131
395
  data:
1132
- type: object
1133
- required: &ref_58
1134
- - activityId
1135
- - userId
1136
- properties: &ref_59
1137
- activityId:
1138
- type: string
1139
- description: 活动 ID
1140
- userId:
1141
- type: string
1142
- description: 用户 ID
1143
- participated:
1144
- type: boolean
1145
- description: 是否已参与
1146
- participatedAt:
1147
- type: string
1148
- format: date-time
1149
- description: 参与时间
1150
- remainingChances:
1151
- type: integer
1152
- description: 剩余抽奖次数
1153
- totalRewards:
1154
- type: integer
1155
- description: 已获得奖励数
1156
- progress:
1157
- type: object
1158
- additionalProperties: true
1159
- description: 活动进度
1160
- customData:
1161
- type: object
1162
- additionalProperties: true
1163
- description: 自定义数据
396
+ $ref: '#/components/schemas/UserActivityState'
1164
397
  '404':
1165
- description: 资源不存在
1166
- content: *ref_2
398
+ $ref: '#/components/responses/NotFound'
1167
399
  security:
1168
400
  - BearerAuth: []
1169
401
  /activities/{activityId}/signin/calendar:
@@ -1203,45 +435,7 @@ paths:
1203
435
  success:
1204
436
  type: boolean
1205
437
  data:
1206
- type: object
1207
- required: &ref_60
1208
- - year
1209
- - month
1210
- - records
1211
- properties: &ref_61
1212
- year:
1213
- type: integer
1214
- description: 年份
1215
- month:
1216
- type: integer
1217
- minimum: 1
1218
- maximum: 12
1219
- description: 月份
1220
- records:
1221
- type: array
1222
- items:
1223
- type: object
1224
- properties:
1225
- day:
1226
- type: integer
1227
- minimum: 1
1228
- maximum: 31
1229
- signedIn:
1230
- type: boolean
1231
- reward:
1232
- type: object
1233
- properties:
1234
- name:
1235
- type: string
1236
- amount:
1237
- type: number
1238
- description: 签到记录
1239
- consecutiveDays:
1240
- type: integer
1241
- description: 连续签到天数
1242
- totalDays:
1243
- type: integer
1244
- description: 本月签到总天数
438
+ $ref: '#/components/schemas/SigninCalendar'
1245
439
  security:
1246
440
  - BearerAuth: []
1247
441
  /activities/{activityId}/claims:
@@ -1277,74 +471,11 @@ paths:
1277
471
  success:
1278
472
  type: boolean
1279
473
  data:
1280
- type: array
1281
- items:
1282
- type: object
1283
- required: &ref_62
1284
- - id
1285
- - rewardType
1286
- - status
1287
- - createdAt
1288
- properties: &ref_63
1289
- id:
1290
- type: string
1291
- description: 记录 ID
1292
- activityId:
1293
- type: string
1294
- description: 活动 ID
1295
- rewardType:
1296
- type: string
1297
- description: 奖励类型
1298
- rewardName:
1299
- type: string
1300
- description: 奖励名称
1301
- rewardValue:
1302
- type: number
1303
- description: 奖励值
1304
- status:
1305
- type: string
1306
- enum:
1307
- - pending
1308
- - claimed
1309
- - expired
1310
- description: 领取状态
1311
- createdAt:
1312
- type: string
1313
- format: date-time
1314
- description: 创建时间
1315
- claimedAt:
1316
- type: string
1317
- format: date-time
1318
- description: 领取时间
1319
- expiresAt:
1320
- type: string
1321
- format: date-time
1322
- description: 过期时间
1323
- meta:
1324
- type: object
1325
- required: &ref_10
1326
- - page
1327
- - limit
1328
- - total
1329
- - totalPages
1330
- properties: &ref_11
1331
- page:
1332
- type: integer
1333
- minimum: 1
1334
- description: 当前页码
1335
- limit:
1336
- type: integer
1337
- minimum: 1
1338
- maximum: 100
1339
- description: 每页数量
1340
- total:
1341
- type: integer
1342
- minimum: 0
1343
- description: 总记录数
1344
- totalPages:
1345
- type: integer
1346
- minimum: 0
1347
- description: 总页数
474
+ type: array
475
+ items:
476
+ $ref: '#/components/schemas/ClaimRecordInfo'
477
+ meta:
478
+ $ref: '#/components/schemas/PaginationMeta'
1348
479
  security:
1349
480
  - BearerAuth: []
1350
481
  /activities/{activityId}/lottery:
@@ -1382,54 +513,9 @@ paths:
1382
513
  data:
1383
514
  type: array
1384
515
  items:
1385
- type: object
1386
- required: &ref_64
1387
- - id
1388
- - prizeId
1389
- - status
1390
- - createdAt
1391
- properties: &ref_65
1392
- id:
1393
- type: string
1394
- description: 记录 ID
1395
- activityId:
1396
- type: string
1397
- description: 活动 ID
1398
- prizeId:
1399
- type: string
1400
- description: 奖品 ID
1401
- prizeName:
1402
- type: string
1403
- description: 奖品名称
1404
- prizeType:
1405
- type: string
1406
- enum:
1407
- - physical
1408
- - virtual
1409
- - coupon
1410
- - points
1411
- - none
1412
- description: 奖品类型
1413
- status:
1414
- type: string
1415
- enum:
1416
- - won
1417
- - notWon
1418
- - claimed
1419
- - shipped
1420
- description: 状态
1421
- createdAt:
1422
- type: string
1423
- format: date-time
1424
- description: 抽奖时间
1425
- claimedAt:
1426
- type: string
1427
- format: date-time
1428
- description: 领取时间
516
+ $ref: '#/components/schemas/LotteryRecordInfo'
1429
517
  meta:
1430
- type: object
1431
- required: *ref_10
1432
- properties: *ref_11
518
+ $ref: '#/components/schemas/PaginationMeta'
1433
519
  security:
1434
520
  - BearerAuth: []
1435
521
  /track:
@@ -1450,46 +536,7 @@ paths:
1450
536
  content:
1451
537
  application/json:
1452
538
  schema:
1453
- type: object
1454
- required: &ref_12
1455
- - eventName
1456
- properties: &ref_13
1457
- eventName:
1458
- type: string
1459
- minLength: 1
1460
- maxLength: 255
1461
- description: 事件名称
1462
- eventType:
1463
- type: string
1464
- enum:
1465
- - page_view
1466
- - click
1467
- - exposure
1468
- - custom
1469
- default: custom
1470
- description: 事件类型
1471
- properties:
1472
- type: object
1473
- additionalProperties: true
1474
- description: 事件属性
1475
- timestamp:
1476
- type: string
1477
- format: date-time
1478
- description: 事件时间(默认为服务器接收时间)
1479
- context:
1480
- type: object
1481
- properties:
1482
- pageVersionId:
1483
- type: string
1484
- componentVersionId:
1485
- type: string
1486
- sessionId:
1487
- type: string
1488
- deviceType:
1489
- type: string
1490
- traceId:
1491
- type: string
1492
- description: 上下文信息
539
+ $ref: '#/components/schemas/TrackRequest'
1493
540
  responses:
1494
541
  '202':
1495
542
  description: 接收成功(异步处理)
@@ -1508,8 +555,7 @@ paths:
1508
555
  type: string
1509
556
  description: 事件 ID
1510
557
  '400':
1511
- description: 请求参数错误
1512
- content: *ref_4
558
+ $ref: '#/components/responses/BadRequest'
1513
559
  /track/batch:
1514
560
  post:
1515
561
  tags:
@@ -1527,18 +573,7 @@ paths:
1527
573
  content:
1528
574
  application/json:
1529
575
  schema:
1530
- type: object
1531
- required: &ref_66
1532
- - events
1533
- properties: &ref_67
1534
- events:
1535
- type: array
1536
- items:
1537
- type: object
1538
- required: *ref_12
1539
- properties: *ref_13
1540
- maxItems: 100
1541
- description: 事件列表(最多 100 个)
576
+ $ref: '#/components/schemas/TrackBatchRequest'
1542
577
  responses:
1543
578
  '202':
1544
579
  description: 接收成功
@@ -1568,8 +603,7 @@ paths:
1568
603
  reason:
1569
604
  type: string
1570
605
  '400':
1571
- description: 请求参数错误
1572
- content: *ref_4
606
+ $ref: '#/components/responses/BadRequest'
1573
607
  /tenant/resolve:
1574
608
  post:
1575
609
  tags:
@@ -1614,47 +648,15 @@ paths:
1614
648
  success:
1615
649
  type: boolean
1616
650
  data:
1617
- type: object
1618
- required: &ref_68
1619
- - appId
1620
- - appName
1621
- - status
1622
- properties: &ref_69
1623
- appId:
1624
- type: string
1625
- description: 应用 ID
1626
- appName:
1627
- type: string
1628
- description: 应用名称
1629
- status:
1630
- type: string
1631
- enum:
1632
- - active
1633
- - suspended
1634
- - disabled
1635
- description: 应用状态
1636
- workspaceId:
1637
- type: string
1638
- description: 工作空间 ID
1639
- cdnDomain:
1640
- type: string
1641
- format: uri
1642
- description: CDN 域名
1643
- apiDomain:
1644
- type: string
1645
- format: uri
1646
- description: API 域名
651
+ $ref: '#/components/schemas/TenantInfo'
1647
652
  '400':
1648
- description: 请求参数错误
1649
- content: *ref_4
653
+ $ref: '#/components/responses/BadRequest'
1650
654
  '404':
1651
655
  description: 租户不存在
1652
656
  content:
1653
657
  application/json:
1654
658
  schema:
1655
- type: object
1656
- required: *ref_0
1657
- properties: *ref_1
659
+ $ref: '#/components/schemas/ErrorResponse'
1658
660
  security: []
1659
661
  /tenant/config:
1660
662
  get:
@@ -1689,56 +691,11 @@ paths:
1689
691
  success:
1690
692
  type: boolean
1691
693
  data:
1692
- type: object
1693
- properties: &ref_70
1694
- features:
1695
- type: object
1696
- additionalProperties:
1697
- type: boolean
1698
- description: 功能开关
1699
- theme:
1700
- type: object
1701
- additionalProperties: true
1702
- description: 主题配置
1703
- cdnDomain:
1704
- type: string
1705
- format: uri
1706
- description: CDN 域名
1707
- runtimeVersion:
1708
- type: string
1709
- description: 推荐的 Runtime 版本
1710
- blockedComponents:
1711
- type: array
1712
- items:
1713
- type: object
1714
- properties:
1715
- componentType:
1716
- type: string
1717
- version:
1718
- type: string
1719
- reason:
1720
- type: string
1721
- description: 阻断的组件列表
1722
- killSwitch:
1723
- type: object
1724
- properties:
1725
- enabled:
1726
- type: boolean
1727
- pageIds:
1728
- type: array
1729
- items:
1730
- type: string
1731
- description: 被 Kill 的页面 ID 列表
1732
- fallbackUrl:
1733
- type: string
1734
- format: uri
1735
- description: Kill Switch 配置
694
+ $ref: '#/components/schemas/TenantConfig'
1736
695
  '401':
1737
- description: 未认证
1738
- content: *ref_5
696
+ $ref: '#/components/responses/Unauthorized'
1739
697
  '404':
1740
- description: 资源不存在
1741
- content: *ref_2
698
+ $ref: '#/components/responses/NotFound'
1742
699
  /health:
1743
700
  get:
1744
701
  tags:
@@ -1759,53 +716,13 @@ paths:
1759
716
  content:
1760
717
  application/json:
1761
718
  schema:
1762
- type: object
1763
- required: &ref_14
1764
- - status
1765
- - version
1766
- properties: &ref_15
1767
- status:
1768
- type: string
1769
- enum:
1770
- - healthy
1771
- - degraded
1772
- - unhealthy
1773
- description: 服务状态
1774
- version:
1775
- type: string
1776
- description: 服务版本
1777
- uptime:
1778
- type: integer
1779
- description: 运行时间(秒)
1780
- timestamp:
1781
- type: string
1782
- format: date-time
1783
- description: 检查时间
1784
- dependencies:
1785
- type: object
1786
- additionalProperties:
1787
- type: object
1788
- properties:
1789
- status:
1790
- type: string
1791
- enum:
1792
- - healthy
1793
- - degraded
1794
- - unhealthy
1795
- latency:
1796
- type: integer
1797
- description: 延迟(毫秒)
1798
- message:
1799
- type: string
1800
- description: 依赖服务状态
719
+ $ref: '#/components/schemas/HealthResponse'
1801
720
  '503':
1802
721
  description: 服务不健康
1803
722
  content:
1804
723
  application/json:
1805
724
  schema:
1806
- type: object
1807
- required: *ref_14
1808
- properties: *ref_15
725
+ $ref: '#/components/schemas/HealthResponse'
1809
726
  security: []
1810
727
  /health/ready:
1811
728
  get:
@@ -1865,171 +782,1479 @@ paths:
1865
782
  security: []
1866
783
  components:
1867
784
  schemas:
1868
- PageResponse:
1869
- type: object
1870
- required: *ref_16
1871
- properties: *ref_17
1872
- ErrorResponse:
1873
- type: object
1874
- required: *ref_0
1875
- properties: *ref_1
1876
- ResolveContext:
1877
- type: object
1878
- description: 页面解析上下文
1879
- properties: *ref_18
1880
- ResolvePageRequest:
1881
- type: object
1882
- properties: *ref_19
1883
- ComponentManifest:
1884
- type: object
1885
- required: *ref_20
1886
- properties: *ref_21
1887
- ActionManifest:
1888
- type: object
1889
- required: *ref_22
1890
- properties: *ref_23
1891
- QueryManifest:
1892
- type: object
1893
- required: *ref_24
1894
- properties: *ref_25
1895
- ResourceManifests:
785
+ SuccessResponse:
1896
786
  type: object
1897
- properties: *ref_26
787
+ required:
788
+ - success
789
+ - code
790
+ - message
791
+ - data
792
+ - timestamp
793
+ - path
794
+ description: 成功响应(ApiSuccessResponse,与 types/src/common/api.ts 保持一致)
795
+ properties:
796
+ success:
797
+ type: boolean
798
+ enum:
799
+ - true
800
+ example: true
801
+ description: 是否成功(固定为 true)
802
+ code:
803
+ type: string
804
+ example: OK
805
+ description: 业务状态码
806
+ message:
807
+ type: string
808
+ example: 操作成功
809
+ description: 响应消息
810
+ data:
811
+ description: 响应数据(泛型 T)
812
+ timestamp:
813
+ type: integer
814
+ format: int64
815
+ example: 1702300000000
816
+ description: 响应时间戳(Unix 毫秒时间戳,number)
817
+ path:
818
+ type: string
819
+ example: /api/user/pages/resolve
820
+ description: 请求路径
821
+ requestId:
822
+ type: string
823
+ example: uuid-string
824
+ description: 请求 ID(可选)
1898
825
  OpsConfig:
1899
826
  type: object
1900
- description: 运维配置
1901
- properties: *ref_27
827
+ description: 运维配置(运行时下发)
828
+ required:
829
+ - killSwitch
830
+ - blockedComponents
831
+ - flags
832
+ properties:
833
+ killSwitch:
834
+ type: array
835
+ items:
836
+ type: string
837
+ description: Kill Switch 列表(被阻断的 actionType/componentType)
838
+ blockedComponents:
839
+ type: array
840
+ items:
841
+ type: object
842
+ properties:
843
+ componentName:
844
+ type: string
845
+ componentVersion:
846
+ type: string
847
+ reason:
848
+ type: string
849
+ description: 被阻断的组件列表
850
+ flags:
851
+ type: object
852
+ additionalProperties:
853
+ type: boolean
854
+ description: 功能开关(Feature Flags)
1902
855
  ResolvePageResponse:
856
+ allOf:
857
+ - $ref: '#/components/schemas/SuccessResponse'
858
+ - type: object
859
+ properties:
860
+ data:
861
+ type: object
862
+ required:
863
+ - pageId
864
+ - resolvedVersionId
865
+ - cdnBase
866
+ - snapshotUrl
867
+ - manifestUrl
868
+ - ops
869
+ - etag
870
+ - cacheTtlSeconds
871
+ properties:
872
+ pageId:
873
+ type: string
874
+ description: 页面 ID(UniqueId)
875
+ resolvedVersionId:
876
+ type: string
877
+ description: 解析后的页面版本 ID(考虑灰度/回滚后的实际版本,UniqueId)
878
+ cdnBase:
879
+ type: string
880
+ format: uri
881
+ description: CDN 基础地址
882
+ snapshotUrl:
883
+ type: string
884
+ format: uri
885
+ description: snapshot.json 的完整 URL
886
+ manifestUrl:
887
+ type: string
888
+ format: uri
889
+ description: manifest.json 的完整 URL
890
+ ops:
891
+ $ref: '#/components/schemas/OpsConfig'
892
+ description: 运维配置(killSwitch、blockedComponents、flags)
893
+ etag:
894
+ type: string
895
+ description: 内容哈希(用于缓存验证)
896
+ cacheTtlSeconds:
897
+ type: integer
898
+ minimum: 0
899
+ maximum: 300
900
+ default: 30
901
+ description: 缓存 TTL(秒),建议 10~30 秒
902
+ rolloutMatch:
903
+ type: object
904
+ description: 灰度匹配信息(可选,用于调试)
905
+ properties:
906
+ strategyId:
907
+ type: string
908
+ description: 匹配的策略 ID
909
+ strategyName:
910
+ type: string
911
+ description: 匹配的策略名称
912
+ isDefault:
913
+ type: boolean
914
+ description: 是否使用默认版本
915
+ snapshot:
916
+ type: object
917
+ description: 完整快照(仅当 includeSnapshot=1 时返回,CDN 失败保底使用)
918
+ properties:
919
+ page:
920
+ type: object
921
+ description: 页面 Schema(PageSnapshotPage)
922
+ properties:
923
+ schemaVersion:
924
+ type: string
925
+ pageId:
926
+ type: string
927
+ pageVersion:
928
+ type: string
929
+ pattern: ^\d+\.\d+\.\d+$
930
+ title:
931
+ type: string
932
+ initialState:
933
+ type: object
934
+ additionalProperties: true
935
+ bindings:
936
+ type: array
937
+ items:
938
+ type: object
939
+ root:
940
+ type: object
941
+ config:
942
+ type: object
943
+ manifest:
944
+ type: object
945
+ description: 组件锁定清单(PageSnapshotManifest)
946
+ properties:
947
+ components:
948
+ type: array
949
+ items:
950
+ type: object
951
+ properties:
952
+ name:
953
+ type: string
954
+ version:
955
+ type: string
956
+ pattern: ^\d+\.\d+\.\d+$
957
+ integrity:
958
+ type: string
959
+ pattern: ^sha(256|384|512)-
960
+ assetsUrl:
961
+ type: string
962
+ format: uri
963
+ entrypoints:
964
+ type: object
965
+ properties:
966
+ js:
967
+ type: string
968
+ css:
969
+ type: string
970
+ chunks:
971
+ type: array
972
+ items:
973
+ type: string
974
+ runtime:
975
+ type: object
976
+ properties:
977
+ version:
978
+ type: string
979
+ pattern: ^\d+\.\d+\.\d+$
980
+ minVersion:
981
+ type: string
982
+ pattern: ^\d+\.\d+\.\d+$
983
+ definitionsDigest:
984
+ type: object
985
+ description: 绑定的 Definition 版本摘要(DefinitionsDigest)
986
+ properties:
987
+ actions:
988
+ type: array
989
+ items:
990
+ type: object
991
+ properties:
992
+ id:
993
+ type: string
994
+ name:
995
+ type: string
996
+ versionId:
997
+ type: string
998
+ hash:
999
+ type: string
1000
+ queries:
1001
+ type: array
1002
+ items:
1003
+ type: object
1004
+ properties:
1005
+ id:
1006
+ type: string
1007
+ name:
1008
+ type: string
1009
+ versionId:
1010
+ type: string
1011
+ hash:
1012
+ type: string
1013
+ meta:
1014
+ type: object
1015
+ description: 元数据(PageSnapshotMeta)
1016
+ properties:
1017
+ pageId:
1018
+ type: string
1019
+ pageVersionId:
1020
+ type: string
1021
+ publishId:
1022
+ type: string
1023
+ schemaVersion:
1024
+ type: string
1025
+ createdAt:
1026
+ type: string
1027
+ format: date-time
1028
+ createdBy:
1029
+ type: string
1030
+ contentHash:
1031
+ type: string
1032
+ bindings:
1033
+ type: object
1034
+ properties:
1035
+ componentVersions:
1036
+ type: array
1037
+ items:
1038
+ type: string
1039
+ definitionVersions:
1040
+ type: array
1041
+ items:
1042
+ type: string
1043
+ runtimeVersion:
1044
+ type: string
1045
+ pattern: ^\d+\.\d+\.\d+$
1046
+ env:
1047
+ type: string
1048
+ enum:
1049
+ - preview
1050
+ - staging
1051
+ - prod
1052
+ ErrorResponse:
1903
1053
  type: object
1904
- required: *ref_28
1905
- properties: *ref_29
1054
+ required:
1055
+ - success
1056
+ - code
1057
+ - message
1058
+ - timestamp
1059
+ - path
1060
+ description: 错误响应(ApiErrorResponse,与 types/src/common/api.ts 保持一致)
1061
+ properties:
1062
+ success:
1063
+ type: boolean
1064
+ enum:
1065
+ - false
1066
+ example: false
1067
+ description: 是否成功(固定为 false)
1068
+ code:
1069
+ type: string
1070
+ example: VALIDATION_INVALID_PARAMS
1071
+ description: 错误码(ErrorCode | string)
1072
+ message:
1073
+ type: string
1074
+ example: 请求参数无效
1075
+ description: 错误消息(用户可读)
1076
+ data:
1077
+ type: object
1078
+ additionalProperties: true
1079
+ description: 错误详情(验证错误时使用 ApiErrorDetail[],其他情况使用 unknown,放在 data 字段中)
1080
+ timestamp:
1081
+ type: integer
1082
+ format: int64
1083
+ example: 1702300000000
1084
+ description: 响应时间戳(Unix 毫秒时间戳,number)
1085
+ path:
1086
+ type: string
1087
+ example: /api/user/pages/resolve
1088
+ description: 请求路径
1089
+ requestId:
1090
+ type: string
1091
+ example: uuid-string
1092
+ description: 请求 ID(可选)
1093
+ traceId:
1094
+ type: string
1095
+ example: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
1096
+ description: 链路追踪 ID(可选,用于分布式追踪)
1906
1097
  ActionContext:
1907
1098
  type: object
1908
- description: 动作执行上下文(问题追溯必须字段)
1909
- required: *ref_30
1910
- properties: *ref_31
1099
+ description: 动作执行上下文(ActionClientContext,问题追溯必须字段)
1100
+ required:
1101
+ - pageVersionId
1102
+ properties:
1103
+ pageVersionId:
1104
+ type: string
1105
+ description: 页面版本 ID(不可变,UniqueId)
1106
+ componentVersionId:
1107
+ type: string
1108
+ description: 组件版本 ID(UniqueId)
1109
+ componentInstanceId:
1110
+ type: string
1111
+ description: 组件实例 ID(UniqueId)
1112
+ triggerEvent:
1113
+ type: string
1114
+ description: 触发事件名
1115
+ deviceId:
1116
+ type: string
1117
+ description: 设备 ID
1118
+ channel:
1119
+ type: string
1120
+ description: 渠道标识
1121
+ clientTimestamp:
1122
+ type: string
1123
+ format: date-time
1124
+ description: 客户端时间戳(ISODateTime)
1125
+ extra:
1126
+ type: object
1127
+ additionalProperties: true
1128
+ description: 扩展数据(Record<string, JsonValue>)
1911
1129
  ExecuteActionRequest:
1912
1130
  type: object
1913
- required: *ref_32
1914
- properties: *ref_33
1131
+ required:
1132
+ - actionType
1133
+ - params
1134
+ - context
1135
+ description: 动作执行请求(ActionExecuteRequest)
1136
+ properties:
1137
+ actionType:
1138
+ type: string
1139
+ enum:
1140
+ - claim
1141
+ - signin
1142
+ - lottery
1143
+ - reserve
1144
+ - bind
1145
+ - task_complete
1146
+ - vote
1147
+ - share
1148
+ - form_submit
1149
+ - navigate
1150
+ - setState
1151
+ - showToast
1152
+ - refreshData
1153
+ - custom
1154
+ description: 动作类型(ActionType | string)
1155
+ actionDefinitionVersionId:
1156
+ type: string
1157
+ description: 动作定义版本 ID(可选,不提供则使用最新稳定版,UniqueId)
1158
+ params:
1159
+ type: object
1160
+ additionalProperties: true
1161
+ description: 动作参数(Record<string, JsonValue>)
1162
+ context:
1163
+ $ref: '#/components/schemas/ActionContext'
1164
+ description: 客户端上下文(ActionClientContext,必填)
1165
+ idempotencyKey:
1166
+ type: string
1167
+ minLength: 16
1168
+ maxLength: 128
1169
+ description: 幂等键(部分策略需要客户端提供,防重复提交)
1915
1170
  ActionEffect:
1916
1171
  type: object
1917
- required: *ref_34
1918
- properties: *ref_35
1172
+ required:
1173
+ - type
1174
+ properties:
1175
+ type:
1176
+ type: string
1177
+ enum:
1178
+ - setState
1179
+ - navigate
1180
+ - showToast
1181
+ - refreshData
1182
+ - openDialog
1183
+ - closeDialog
1184
+ - custom
1185
+ description: 副作用类型
1186
+ payload:
1187
+ type: object
1188
+ additionalProperties: true
1189
+ description: 副作用参数
1919
1190
  ExecuteActionResponse:
1920
- type: object
1921
- required: *ref_36
1922
- properties: *ref_37
1191
+ allOf:
1192
+ - $ref: '#/components/schemas/SuccessResponse'
1193
+ - type: object
1194
+ properties:
1195
+ data:
1196
+ type: object
1197
+ properties:
1198
+ actionId:
1199
+ type: string
1200
+ description: 动作执行 ID(UniqueId,用于审计追溯)
1201
+ result:
1202
+ description: 执行结果(泛型 T)
1203
+ effects:
1204
+ type: array
1205
+ items:
1206
+ $ref: '#/components/schemas/ActionEffect'
1207
+ description: 副作用列表
1208
+ errorCode:
1209
+ type: string
1210
+ description: 错误码(失败时)
1211
+ errorMessage:
1212
+ type: string
1213
+ description: 错误消息(失败时,用户可见)
1214
+ errorDetails:
1215
+ type: object
1216
+ additionalProperties: true
1217
+ description: 错误详情(失败时,调试用)
1218
+ requestId:
1219
+ type: string
1220
+ description: 请求 ID
1221
+ traceId:
1222
+ type: string
1223
+ description: 链路追踪 ID
1224
+ duration:
1225
+ type: integer
1226
+ description: 执行耗时(毫秒)
1227
+ retryable:
1228
+ type: boolean
1229
+ description: 是否可重试
1230
+ retryAfter:
1231
+ type: integer
1232
+ description: 建议重试延迟(毫秒)
1923
1233
  IdempotencyConflictResponse:
1924
1234
  type: object
1925
- required: *ref_38
1926
- properties: *ref_39
1235
+ required:
1236
+ - success
1237
+ - data
1238
+ properties:
1239
+ success:
1240
+ type: boolean
1241
+ example: true
1242
+ data:
1243
+ type: object
1244
+ properties:
1245
+ idempotent:
1246
+ type: boolean
1247
+ example: true
1248
+ originalActionId:
1249
+ type: string
1250
+ description: 原始动作执行 ID
1251
+ originalResult:
1252
+ description: 原始执行结果
1253
+ originalExecutedAt:
1254
+ type: string
1255
+ format: date-time
1256
+ description: 原始执行时间
1927
1257
  ValidateActionRequest:
1928
1258
  type: object
1929
- required: *ref_40
1930
- properties: *ref_41
1259
+ required:
1260
+ - actionType
1261
+ - params
1262
+ properties:
1263
+ actionType:
1264
+ type: string
1265
+ description: 动作类型
1266
+ actionDefinitionVersionId:
1267
+ type: string
1268
+ description: 动作定义版本 ID
1269
+ params:
1270
+ type: object
1271
+ additionalProperties: true
1272
+ description: 待验证的参数
1931
1273
  ValidateActionResponse:
1932
1274
  type: object
1933
- required: *ref_42
1934
- properties: *ref_43
1275
+ required:
1276
+ - data
1277
+ properties:
1278
+ data:
1279
+ type: object
1280
+ required:
1281
+ - valid
1282
+ properties:
1283
+ valid:
1284
+ type: boolean
1285
+ description: 是否有效
1286
+ errors:
1287
+ type: array
1288
+ items:
1289
+ type: object
1290
+ properties:
1291
+ path:
1292
+ type: string
1293
+ description: 参数路径
1294
+ message:
1295
+ type: string
1296
+ description: 错误消息
1297
+ code:
1298
+ type: string
1299
+ description: 错误码
1300
+ description: 验证错误
1935
1301
  ActionDefinitionResponse:
1936
1302
  type: object
1937
- required: *ref_44
1938
- properties: *ref_45
1303
+ required:
1304
+ - data
1305
+ properties:
1306
+ data:
1307
+ type: object
1308
+ properties:
1309
+ actionDefinitionVersionId:
1310
+ type: string
1311
+ actionType:
1312
+ type: string
1313
+ name:
1314
+ type: string
1315
+ paramsSchema:
1316
+ type: object
1317
+ description: 参数 JSON Schema
1318
+ resultSchema:
1319
+ type: object
1320
+ description: 结果 JSON Schema
1939
1321
  QueryContext:
1940
1322
  type: object
1941
- properties: *ref_9
1323
+ description: 数据查询上下文(DataQueryRequest.context)
1324
+ properties:
1325
+ pageVersionId:
1326
+ type: string
1327
+ description: 页面版本 ID(UniqueId)
1328
+ componentVersionId:
1329
+ type: string
1330
+ description: 组件版本 ID(UniqueId,可选)
1942
1331
  QueryDataRequest:
1943
1332
  type: object
1944
- required: *ref_46
1945
- properties: *ref_47
1333
+ required:
1334
+ - queryVersionId
1335
+ description: 数据查询请求(DataQueryRequest)
1336
+ properties:
1337
+ queryVersionId:
1338
+ type: string
1339
+ description: 查询定义版本 ID(UniqueId)
1340
+ params:
1341
+ type: object
1342
+ additionalProperties: true
1343
+ description: 查询参数(Record<string, JsonValue>)
1344
+ cacheControl:
1345
+ type: object
1346
+ description: 缓存策略覆盖
1347
+ properties:
1348
+ noCache:
1349
+ type: boolean
1350
+ description: 是否跳过缓存
1351
+ forceRefresh:
1352
+ type: boolean
1353
+ description: 强制刷新缓存
1354
+ context:
1355
+ $ref: '#/components/schemas/QueryContext'
1356
+ description: 客户端上下文(可选)
1946
1357
  QueryDataResponse:
1947
- type: object
1948
- required: *ref_48
1949
- properties: *ref_49
1358
+ allOf:
1359
+ - $ref: '#/components/schemas/SuccessResponse'
1360
+ - type: object
1361
+ properties:
1362
+ data:
1363
+ description: 查询结果数据(泛型 T)
1364
+ errorCode:
1365
+ type: string
1366
+ description: 错误码(失败时)
1367
+ errorMessage:
1368
+ type: string
1369
+ description: 错误消息(失败时)
1370
+ fromCache:
1371
+ type: boolean
1372
+ description: 是否来自缓存
1373
+ cachedAt:
1374
+ type: string
1375
+ format: date-time
1376
+ description: 缓存时间戳(ISODateTime)
1377
+ age:
1378
+ type: integer
1379
+ description: 数据新鲜度(秒)
1380
+ requestId:
1381
+ type: string
1382
+ description: 请求 ID
1383
+ traceId:
1384
+ type: string
1385
+ description: 链路追踪 ID
1386
+ duration:
1387
+ type: integer
1388
+ description: 查询耗时(毫秒)
1389
+ degraded:
1390
+ type: boolean
1391
+ description: 是否为降级数据
1392
+ degradedReason:
1393
+ type: string
1394
+ description: 降级原因
1950
1395
  BatchQueryRequest:
1951
1396
  type: object
1952
- required: *ref_50
1953
- properties: *ref_51
1397
+ required:
1398
+ - queries
1399
+ properties:
1400
+ queries:
1401
+ type: array
1402
+ items:
1403
+ type: object
1404
+ required:
1405
+ - queryVersionId
1406
+ properties:
1407
+ queryVersionId:
1408
+ type: string
1409
+ params:
1410
+ type: object
1411
+ alias:
1412
+ type: string
1413
+ description: 查询别名(用于结果映射)
1414
+ maxItems: 20
1415
+ description: 查询列表(最多 20 个)
1416
+ context:
1417
+ $ref: '#/components/schemas/QueryContext'
1954
1418
  BatchQueryResponse:
1955
1419
  type: object
1956
- required: *ref_52
1957
- properties: *ref_53
1420
+ required:
1421
+ - success
1422
+ - data
1423
+ properties:
1424
+ success:
1425
+ type: boolean
1426
+ data:
1427
+ type: object
1428
+ additionalProperties:
1429
+ type: object
1430
+ properties:
1431
+ success:
1432
+ type: boolean
1433
+ data:
1434
+ description: 查询结果
1435
+ error:
1436
+ type: object
1437
+ properties:
1438
+ code:
1439
+ type: string
1440
+ message:
1441
+ type: string
1442
+ description: 按 alias 或 queryVersionId 索引的结果
1958
1443
  QueryDefinitionResponse:
1959
1444
  type: object
1960
- required: *ref_54
1961
- properties: *ref_55
1445
+ required:
1446
+ - data
1447
+ properties:
1448
+ data:
1449
+ type: object
1450
+ properties:
1451
+ queryVersionId:
1452
+ type: string
1453
+ name:
1454
+ type: string
1455
+ paramsSchema:
1456
+ type: object
1457
+ description: 参数 JSON Schema
1458
+ resultSchema:
1459
+ type: object
1460
+ description: 结果 JSON Schema
1461
+ cacheTtl:
1462
+ type: integer
1463
+ description: 缓存 TTL(秒)
1962
1464
  PublicActivityInfo:
1963
1465
  type: object
1964
- required: *ref_56
1965
- properties: *ref_57
1466
+ required:
1467
+ - id
1468
+ - name
1469
+ - type
1470
+ - status
1471
+ properties:
1472
+ id:
1473
+ type: string
1474
+ description: 活动 ID
1475
+ name:
1476
+ type: string
1477
+ description: 活动名称
1478
+ type:
1479
+ type: string
1480
+ enum:
1481
+ - claim
1482
+ - signin
1483
+ - lottery
1484
+ - reserve
1485
+ - task
1486
+ - vote
1487
+ - share
1488
+ - bind
1489
+ - custom
1490
+ description: 活动类型
1491
+ status:
1492
+ type: string
1493
+ enum:
1494
+ - active
1495
+ - ended
1496
+ description: 活动状态
1497
+ description:
1498
+ type: string
1499
+ description: 活动描述
1500
+ startTime:
1501
+ type: string
1502
+ format: date-time
1503
+ description: 开始时间
1504
+ endTime:
1505
+ type: string
1506
+ format: date-time
1507
+ description: 结束时间
1508
+ rules:
1509
+ type: object
1510
+ additionalProperties: true
1511
+ description: 活动规则(公开部分)
1512
+ rewards:
1513
+ type: array
1514
+ items:
1515
+ type: object
1516
+ properties:
1517
+ name:
1518
+ type: string
1519
+ description:
1520
+ type: string
1521
+ icon:
1522
+ type: string
1523
+ description: 奖励列表
1966
1524
  UserActivityState:
1967
1525
  type: object
1968
- required: *ref_58
1969
- properties: *ref_59
1526
+ required:
1527
+ - activityId
1528
+ - userId
1529
+ - activityType
1530
+ - canParticipate
1531
+ - typeState
1532
+ description: 用户活动状态(UserActivityState,根据 types/src/activity/index.ts)
1533
+ properties:
1534
+ activityId:
1535
+ type: string
1536
+ description: 活动 ID(UniqueId)
1537
+ userId:
1538
+ type: string
1539
+ description: 用户 ID
1540
+ activityType:
1541
+ type: string
1542
+ enum:
1543
+ - claim
1544
+ - signin
1545
+ - lottery
1546
+ - reserve
1547
+ - task
1548
+ - vote
1549
+ - share
1550
+ - bind
1551
+ - custom
1552
+ description: 活动类型(ActivityType)
1553
+ canParticipate:
1554
+ type: boolean
1555
+ description: 是否可参与
1556
+ notParticipateReason:
1557
+ type: string
1558
+ description: 不可参与原因
1559
+ remainingCount:
1560
+ type: integer
1561
+ description: 剩余参与次数
1562
+ typeState:
1563
+ type: object
1564
+ description: 类型特定状态(ClaimState | SigninState | LotteryState)
1565
+ oneOf:
1566
+ - type: object
1567
+ required:
1568
+ - type
1569
+ - claimed
1570
+ properties:
1571
+ type:
1572
+ type: string
1573
+ enum:
1574
+ - claim
1575
+ claimed:
1576
+ type: boolean
1577
+ claimedAt:
1578
+ type: string
1579
+ format: date-time
1580
+ claimedPrizeId:
1581
+ type: string
1582
+ availablePrizes:
1583
+ type: array
1584
+ items:
1585
+ type: object
1586
+ properties:
1587
+ prizeId:
1588
+ type: string
1589
+ name:
1590
+ type: string
1591
+ stock:
1592
+ type: integer
1593
+ - type: object
1594
+ required:
1595
+ - type
1596
+ - signedToday
1597
+ - consecutiveDays
1598
+ - totalDays
1599
+ - cycleRecords
1600
+ - makeupAvailable
1601
+ properties:
1602
+ type:
1603
+ type: string
1604
+ enum:
1605
+ - signin
1606
+ signedToday:
1607
+ type: boolean
1608
+ todaySignedAt:
1609
+ type: string
1610
+ format: date-time
1611
+ consecutiveDays:
1612
+ type: integer
1613
+ totalDays:
1614
+ type: integer
1615
+ cycleRecords:
1616
+ type: array
1617
+ items:
1618
+ type: object
1619
+ properties:
1620
+ dayKey:
1621
+ type: string
1622
+ signed:
1623
+ type: boolean
1624
+ isMakeup:
1625
+ type: boolean
1626
+ makeupAvailable:
1627
+ type: integer
1628
+ nextReward:
1629
+ type: object
1630
+ properties:
1631
+ type:
1632
+ type: string
1633
+ enum:
1634
+ - consecutive
1635
+ - cumulative
1636
+ daysNeeded:
1637
+ type: integer
1638
+ reward:
1639
+ type: object
1640
+ additionalProperties: true
1641
+ - type: object
1642
+ required:
1643
+ - type
1644
+ - freeDrawsRemaining
1645
+ - todayDrawCount
1646
+ - totalDrawCount
1647
+ properties:
1648
+ type:
1649
+ type: string
1650
+ enum:
1651
+ - lottery
1652
+ freeDrawsRemaining:
1653
+ type: integer
1654
+ todayDrawCount:
1655
+ type: integer
1656
+ totalDrawCount:
1657
+ type: integer
1658
+ pityProgress:
1659
+ type: object
1660
+ properties:
1661
+ current:
1662
+ type: integer
1663
+ target:
1664
+ type: integer
1665
+ resources:
1666
+ type: array
1667
+ items:
1668
+ type: object
1669
+ properties:
1670
+ type:
1671
+ type: string
1672
+ amount:
1673
+ type: integer
1970
1674
  SigninCalendar:
1971
1675
  type: object
1972
- required: *ref_60
1973
- properties: *ref_61
1676
+ required:
1677
+ - year
1678
+ - month
1679
+ - records
1680
+ properties:
1681
+ year:
1682
+ type: integer
1683
+ description: 年份
1684
+ month:
1685
+ type: integer
1686
+ minimum: 1
1687
+ maximum: 12
1688
+ description: 月份
1689
+ records:
1690
+ type: array
1691
+ items:
1692
+ type: object
1693
+ properties:
1694
+ day:
1695
+ type: integer
1696
+ minimum: 1
1697
+ maximum: 31
1698
+ signedIn:
1699
+ type: boolean
1700
+ reward:
1701
+ type: object
1702
+ properties:
1703
+ name:
1704
+ type: string
1705
+ amount:
1706
+ type: number
1707
+ description: 签到记录
1708
+ consecutiveDays:
1709
+ type: integer
1710
+ description: 连续签到天数
1711
+ totalDays:
1712
+ type: integer
1713
+ description: 本月签到总天数
1974
1714
  ClaimRecordInfo:
1975
1715
  type: object
1976
- required: *ref_62
1977
- properties: *ref_63
1716
+ required:
1717
+ - id
1718
+ - rewardType
1719
+ - status
1720
+ - createdAt
1721
+ properties:
1722
+ id:
1723
+ type: string
1724
+ description: 记录 ID
1725
+ activityId:
1726
+ type: string
1727
+ description: 活动 ID
1728
+ rewardType:
1729
+ type: string
1730
+ description: 奖励类型
1731
+ rewardName:
1732
+ type: string
1733
+ description: 奖励名称
1734
+ rewardValue:
1735
+ type: number
1736
+ description: 奖励值
1737
+ status:
1738
+ type: string
1739
+ enum:
1740
+ - pending
1741
+ - claimed
1742
+ - expired
1743
+ description: 领取状态
1744
+ createdAt:
1745
+ type: string
1746
+ format: date-time
1747
+ description: 创建时间
1748
+ claimedAt:
1749
+ type: string
1750
+ format: date-time
1751
+ description: 领取时间
1752
+ expiresAt:
1753
+ type: string
1754
+ format: date-time
1755
+ description: 过期时间
1978
1756
  PaginationMeta:
1979
1757
  type: object
1980
- required: *ref_10
1981
- properties: *ref_11
1758
+ required:
1759
+ - page
1760
+ - limit
1761
+ - total
1762
+ - totalPages
1763
+ properties:
1764
+ page:
1765
+ type: integer
1766
+ minimum: 1
1767
+ description: 当前页码
1768
+ limit:
1769
+ type: integer
1770
+ minimum: 1
1771
+ maximum: 100
1772
+ description: 每页数量
1773
+ total:
1774
+ type: integer
1775
+ minimum: 0
1776
+ description: 总记录数
1777
+ totalPages:
1778
+ type: integer
1779
+ minimum: 0
1780
+ description: 总页数
1982
1781
  LotteryRecordInfo:
1983
1782
  type: object
1984
- required: *ref_64
1985
- properties: *ref_65
1783
+ required:
1784
+ - id
1785
+ - prizeId
1786
+ - status
1787
+ - createdAt
1788
+ properties:
1789
+ id:
1790
+ type: string
1791
+ description: 记录 ID
1792
+ activityId:
1793
+ type: string
1794
+ description: 活动 ID
1795
+ prizeId:
1796
+ type: string
1797
+ description: 奖品 ID
1798
+ prizeName:
1799
+ type: string
1800
+ description: 奖品名称
1801
+ prizeType:
1802
+ type: string
1803
+ enum:
1804
+ - physical
1805
+ - virtual
1806
+ - coupon
1807
+ - points
1808
+ - none
1809
+ description: 奖品类型
1810
+ status:
1811
+ type: string
1812
+ enum:
1813
+ - won
1814
+ - notWon
1815
+ - claimed
1816
+ - shipped
1817
+ description: 状态
1818
+ createdAt:
1819
+ type: string
1820
+ format: date-time
1821
+ description: 抽奖时间
1822
+ claimedAt:
1823
+ type: string
1824
+ format: date-time
1825
+ description: 领取时间
1986
1826
  TrackRequest:
1987
1827
  type: object
1988
- required: *ref_12
1989
- properties: *ref_13
1828
+ required:
1829
+ - eventName
1830
+ properties:
1831
+ eventName:
1832
+ type: string
1833
+ minLength: 1
1834
+ maxLength: 255
1835
+ description: 事件名称
1836
+ eventType:
1837
+ type: string
1838
+ enum:
1839
+ - page_view
1840
+ - click
1841
+ - exposure
1842
+ - custom
1843
+ default: custom
1844
+ description: 事件类型
1845
+ properties:
1846
+ type: object
1847
+ additionalProperties: true
1848
+ description: 事件属性
1849
+ timestamp:
1850
+ type: string
1851
+ format: date-time
1852
+ description: 事件时间(默认为服务器接收时间)
1853
+ context:
1854
+ type: object
1855
+ properties:
1856
+ pageVersionId:
1857
+ type: string
1858
+ componentVersionId:
1859
+ type: string
1860
+ sessionId:
1861
+ type: string
1862
+ deviceType:
1863
+ type: string
1864
+ traceId:
1865
+ type: string
1866
+ description: 上下文信息
1990
1867
  TrackBatchRequest:
1991
1868
  type: object
1992
- required: *ref_66
1993
- properties: *ref_67
1869
+ required:
1870
+ - events
1871
+ properties:
1872
+ events:
1873
+ type: array
1874
+ items:
1875
+ $ref: '#/components/schemas/TrackRequest'
1876
+ maxItems: 100
1877
+ description: 事件列表(最多 100 个)
1994
1878
  TenantInfo:
1995
1879
  type: object
1996
- required: *ref_68
1997
- properties: *ref_69
1880
+ required:
1881
+ - appId
1882
+ - appName
1883
+ - status
1884
+ properties:
1885
+ appId:
1886
+ type: string
1887
+ description: 应用 ID
1888
+ appName:
1889
+ type: string
1890
+ description: 应用名称
1891
+ status:
1892
+ type: string
1893
+ enum:
1894
+ - active
1895
+ - suspended
1896
+ - disabled
1897
+ description: 应用状态
1898
+ workspaceId:
1899
+ type: string
1900
+ description: 工作空间 ID
1901
+ cdnDomain:
1902
+ type: string
1903
+ format: uri
1904
+ description: CDN 域名
1905
+ apiDomain:
1906
+ type: string
1907
+ format: uri
1908
+ description: API 域名
1998
1909
  TenantConfig:
1999
1910
  type: object
2000
- properties: *ref_70
1911
+ properties:
1912
+ features:
1913
+ type: object
1914
+ additionalProperties:
1915
+ type: boolean
1916
+ description: 功能开关
1917
+ theme:
1918
+ type: object
1919
+ additionalProperties: true
1920
+ description: 主题配置
1921
+ cdnDomain:
1922
+ type: string
1923
+ format: uri
1924
+ description: CDN 域名
1925
+ runtimeVersion:
1926
+ type: string
1927
+ description: 推荐的 Runtime 版本
1928
+ blockedComponents:
1929
+ type: array
1930
+ items:
1931
+ type: object
1932
+ properties:
1933
+ componentType:
1934
+ type: string
1935
+ version:
1936
+ type: string
1937
+ reason:
1938
+ type: string
1939
+ description: 阻断的组件列表
1940
+ killSwitch:
1941
+ type: object
1942
+ properties:
1943
+ enabled:
1944
+ type: boolean
1945
+ pageIds:
1946
+ type: array
1947
+ items:
1948
+ type: string
1949
+ description: 被 Kill 的页面 ID 列表
1950
+ fallbackUrl:
1951
+ type: string
1952
+ format: uri
1953
+ description: Kill Switch 配置
2001
1954
  HealthResponse:
2002
1955
  type: object
2003
- required: *ref_14
2004
- properties: *ref_15
1956
+ required:
1957
+ - status
1958
+ - version
1959
+ properties:
1960
+ status:
1961
+ type: string
1962
+ enum:
1963
+ - healthy
1964
+ - degraded
1965
+ - unhealthy
1966
+ description: 服务状态
1967
+ version:
1968
+ type: string
1969
+ description: 服务版本
1970
+ uptime:
1971
+ type: integer
1972
+ description: 运行时间(秒)
1973
+ timestamp:
1974
+ type: string
1975
+ format: date-time
1976
+ description: 检查时间
1977
+ dependencies:
1978
+ type: object
1979
+ additionalProperties:
1980
+ type: object
1981
+ properties:
1982
+ status:
1983
+ type: string
1984
+ enum:
1985
+ - healthy
1986
+ - degraded
1987
+ - unhealthy
1988
+ latency:
1989
+ type: integer
1990
+ description: 延迟(毫秒)
1991
+ message:
1992
+ type: string
1993
+ description: 依赖服务状态
1994
+ ComponentManifest:
1995
+ type: object
1996
+ required:
1997
+ - componentType
1998
+ - version
1999
+ - entryUrl
2000
+ properties:
2001
+ componentType:
2002
+ type: string
2003
+ description: 组件类型
2004
+ version:
2005
+ type: string
2006
+ description: 组件版本
2007
+ entryUrl:
2008
+ type: string
2009
+ format: uri
2010
+ description: 组件入口 URL
2011
+ styleUrl:
2012
+ type: string
2013
+ format: uri
2014
+ description: 样式文件 URL
2015
+ integrity:
2016
+ type: string
2017
+ description: SRI 完整性哈希
2018
+ blocked:
2019
+ type: boolean
2020
+ description: 是否被阻断
2021
+ fallback:
2022
+ type: string
2023
+ description: 降级组件类型
2024
+ ActionManifest:
2025
+ type: object
2026
+ required:
2027
+ - actionId
2028
+ - actionDefinitionVersionId
2029
+ properties:
2030
+ actionId:
2031
+ type: string
2032
+ description: 动作 ID
2033
+ actionDefinitionVersionId:
2034
+ type: string
2035
+ description: 动作定义版本 ID
2036
+ actionType:
2037
+ type: string
2038
+ enum:
2039
+ - claim
2040
+ - signin
2041
+ - lottery
2042
+ - reserve
2043
+ - bind
2044
+ - task_complete
2045
+ - vote
2046
+ - share
2047
+ - form_submit
2048
+ - navigate
2049
+ - setState
2050
+ - showToast
2051
+ - refreshData
2052
+ - custom
2053
+ description: 动作类型
2054
+ builtin:
2055
+ type: boolean
2056
+ description: 是否内置动作
2057
+ QueryManifest:
2058
+ type: object
2059
+ required:
2060
+ - queryId
2061
+ - queryVersionId
2062
+ properties:
2063
+ queryId:
2064
+ type: string
2065
+ description: 查询 ID
2066
+ queryVersionId:
2067
+ type: string
2068
+ description: 查询定义版本 ID
2069
+ cacheTtl:
2070
+ type: integer
2071
+ description: 缓存 TTL(秒)
2072
+ ErrorDetail:
2073
+ type: object
2074
+ required:
2075
+ - message
2076
+ description: 错误详情(ApiErrorDetail,与 types/src/common/api.ts 保持一致)
2077
+ properties:
2078
+ field:
2079
+ type: string
2080
+ description: 字段路径(可选)
2081
+ message:
2082
+ type: string
2083
+ description: 错误消息(必填)
2084
+ code:
2085
+ type: string
2086
+ description: 错误码(可选)
2087
+ PageResponse:
2088
+ allOf:
2089
+ - $ref: '#/components/schemas/SuccessResponse'
2090
+ - type: object
2091
+ properties:
2092
+ data:
2093
+ type: object
2094
+ required:
2095
+ - pageId
2096
+ - version
2097
+ - meta
2098
+ properties:
2099
+ pageId:
2100
+ type: string
2101
+ description: 页面 ID
2102
+ version:
2103
+ type: string
2104
+ description: 页面版本
2105
+ meta:
2106
+ type: object
2107
+ properties:
2108
+ title:
2109
+ type: string
2110
+ description: 页面标题
2111
+ description:
2112
+ type: string
2113
+ description: 页面描述
2114
+ integrity:
2115
+ type: string
2116
+ description: 完整性哈希
2117
+ ResourceManifests:
2118
+ type: object
2119
+ properties:
2120
+ components:
2121
+ type: array
2122
+ items:
2123
+ $ref: '#/components/schemas/ComponentManifest'
2124
+ description: 组件资源清单
2125
+ actions:
2126
+ type: array
2127
+ items:
2128
+ $ref: '#/components/schemas/ActionManifest'
2129
+ description: 动作资源清单
2130
+ queries:
2131
+ type: array
2132
+ items:
2133
+ $ref: '#/components/schemas/QueryManifest'
2134
+ description: 查询资源清单
2005
2135
  responses:
2136
+ BadRequest:
2137
+ description: 请求参数错误
2138
+ content:
2139
+ application/json:
2140
+ schema:
2141
+ $ref: '#/components/schemas/ErrorResponse'
2142
+ example:
2143
+ success: false
2144
+ code: VALIDATION_INVALID_PARAMS
2145
+ message: 请求参数无效
2146
+ data:
2147
+ - field: pageId
2148
+ message: 页面 ID 不能为空
2149
+ code: REQUIRED
2150
+ timestamp: 1702300000000
2151
+ path: /api/user/pages/resolve
2152
+ requestId: uuid-string
2006
2153
  NotFound:
2007
2154
  description: 资源不存在
2008
- content: *ref_2
2155
+ content:
2156
+ application/json:
2157
+ schema:
2158
+ $ref: '#/components/schemas/ErrorResponse'
2159
+ example:
2160
+ success: false
2161
+ code: RESOURCE_PAGE_NOT_FOUND
2162
+ message: 资源不存在
2163
+ timestamp: 1702300000000
2164
+ path: /api/user/pages/resolve
2165
+ requestId: uuid-string
2009
2166
  ServiceUnavailable:
2010
2167
  description: 服务不可用
2011
- content: *ref_3
2012
- BadRequest:
2013
- description: 请求参数错误
2014
- content: *ref_4
2168
+ content:
2169
+ application/json:
2170
+ schema:
2171
+ $ref: '#/components/schemas/ErrorResponse'
2172
+ example:
2173
+ success: false
2174
+ code: SYSTEM_SERVICE_UNAVAILABLE
2175
+ message: 页面暂时不可用
2176
+ timestamp: 1702300000000
2177
+ path: /api/user/pages/resolve
2178
+ requestId: uuid-string
2015
2179
  Unauthorized:
2016
2180
  description: 未认证
2017
- content: *ref_5
2181
+ content:
2182
+ application/json:
2183
+ schema:
2184
+ $ref: '#/components/schemas/ErrorResponse'
2185
+ example:
2186
+ success: false
2187
+ code: AUTH_TOKEN_MISSING
2188
+ message: 请先登录
2189
+ timestamp: 1702300000000
2190
+ path: /api/user/pages/resolve
2191
+ requestId: uuid-string
2018
2192
  Forbidden:
2019
2193
  description: 无权限
2020
- content: *ref_6
2194
+ content:
2195
+ application/json:
2196
+ schema:
2197
+ $ref: '#/components/schemas/ErrorResponse'
2198
+ example:
2199
+ success: false
2200
+ code: PERMISSION_DENIED
2201
+ message: 无访问权限
2202
+ timestamp: 1702300000000
2203
+ path: /api/user/pages/resolve
2204
+ requestId: uuid-string
2021
2205
  UnprocessableEntity:
2022
2206
  description: 请求无法处理
2023
- content: *ref_7
2207
+ content:
2208
+ application/json:
2209
+ schema:
2210
+ $ref: '#/components/schemas/ErrorResponse'
2211
+ example:
2212
+ success: false
2213
+ code: BUSINESS_ACTIVITY_NOT_STARTED
2214
+ message: 参数验证失败
2215
+ timestamp: 1702300000000
2216
+ path: /api/user/actions/execute
2217
+ requestId: uuid-string
2024
2218
  TooManyRequests:
2025
2219
  description: 请求过于频繁
2026
- content: *ref_71
2220
+ content:
2221
+ application/json:
2222
+ schema:
2223
+ $ref: '#/components/schemas/ErrorResponse'
2224
+ example:
2225
+ success: false
2226
+ code: RISK_RATE_LIMITED
2227
+ message: 请求过于频繁,请稍后再试
2228
+ timestamp: 1702300000000
2229
+ path: /api/user/actions/execute
2230
+ requestId: uuid-string
2027
2231
  InternalError:
2028
2232
  description: 服务器内部错误
2029
- content: *ref_8
2233
+ content:
2234
+ application/json:
2235
+ schema:
2236
+ $ref: '#/components/schemas/ErrorResponse'
2237
+ example:
2238
+ success: false
2239
+ code: SYSTEM_INTERNAL_ERROR
2240
+ message: 服务器内部错误
2241
+ timestamp: 1702300000000
2242
+ path: /api/user/pages/resolve
2243
+ requestId: uuid-string
2244
+ traceId: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
2030
2245
  GatewayTimeout:
2031
2246
  description: 网关超时
2032
- content: *ref_72
2247
+ content:
2248
+ application/json:
2249
+ schema:
2250
+ $ref: '#/components/schemas/ErrorResponse'
2251
+ example:
2252
+ success: false
2253
+ code: SYSTEM_TIMEOUT
2254
+ message: 查询超时
2255
+ timestamp: 1702300000000
2256
+ path: /api/user/data/query
2257
+ requestId: uuid-string
2033
2258
  securitySchemes:
2034
2259
  BearerAuth:
2035
2260
  type: http