@djvlc/openapi-admin-client 1.5.0 → 1.6.1

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.
@@ -0,0 +1,3168 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: DJVLC Admin API
4
+ version: 1.0.0
5
+ description: |
6
+ DJVLC 低代码平台管理端 API
7
+
8
+ 提供以下功能:
9
+ - 页面管理(创建、更新、删除)
10
+ - 草稿管理(保存、获取)
11
+ - 版本管理(发布、回滚)
12
+ - 组件管理(状态控制)
13
+ - 运维操作(Kill Switch)
14
+ contact:
15
+ name: DJVLC Team
16
+ email: dev@djvlc.com
17
+ license:
18
+ name: MIT
19
+ url: https://opensource.org/licenses/MIT
20
+ servers:
21
+ - url: /api/admin
22
+ description: 管理端 API
23
+ security:
24
+ - BearerAuth: []
25
+ tags:
26
+ - name: Pages
27
+ description: 页面管理
28
+ - name: Drafts
29
+ description: 草稿管理
30
+ - name: Versions
31
+ description: 版本管理
32
+ - name: Rollout
33
+ description: 灰度发布
34
+ - name: Components
35
+ description: 组件管理
36
+ - name: Definitions
37
+ description: Definition 管理(Action/DataQuery)
38
+ - name: Activities
39
+ description: 活动管理
40
+ - name: Audit
41
+ description: 审计日志
42
+ - name: Operations
43
+ description: 运维操作
44
+ paths:
45
+ /pages:
46
+ get:
47
+ tags:
48
+ - Pages
49
+ operationId: listPages
50
+ summary: 获取页面列表
51
+ description: 分页获取所有页面的基本信息
52
+ parameters:
53
+ - name: page
54
+ in: query
55
+ schema: &ref_13
56
+ type: integer
57
+ minimum: 1
58
+ default: 1
59
+ description: 页码
60
+ - name: limit
61
+ in: query
62
+ schema: &ref_14
63
+ type: integer
64
+ minimum: 1
65
+ maximum: 100
66
+ default: 20
67
+ description: 每页数量
68
+ - name: status
69
+ in: query
70
+ schema:
71
+ type: string
72
+ enum:
73
+ - draft
74
+ - published
75
+ - archived
76
+ description: 按状态筛选
77
+ - name: search
78
+ in: query
79
+ schema:
80
+ type: string
81
+ description: 搜索关键词
82
+ responses:
83
+ '200':
84
+ description: 成功
85
+ content:
86
+ application/json:
87
+ schema:
88
+ type: object
89
+ required: &ref_45
90
+ - data
91
+ - meta
92
+ properties: &ref_46
93
+ data:
94
+ type: array
95
+ items:
96
+ type: object
97
+ required: &ref_2
98
+ - id
99
+ - title
100
+ - status
101
+ - createdAt
102
+ - updatedAt
103
+ properties: &ref_3
104
+ id:
105
+ type: string
106
+ description: 页面 ID
107
+ title:
108
+ type: string
109
+ description: 页面标题
110
+ description:
111
+ type: string
112
+ description: 页面描述
113
+ status:
114
+ type: string
115
+ enum:
116
+ - draft
117
+ - published
118
+ - archived
119
+ description: 页面状态
120
+ tags:
121
+ type: array
122
+ items:
123
+ type: string
124
+ description: 标签
125
+ currentVersion:
126
+ type: string
127
+ description: 当前发布版本
128
+ createdAt:
129
+ type: string
130
+ format: date-time
131
+ description: 创建时间
132
+ updatedAt:
133
+ type: string
134
+ format: date-time
135
+ description: 更新时间
136
+ createdBy:
137
+ type: string
138
+ description: 创建者 ID
139
+ updatedBy:
140
+ type: string
141
+ description: 更新者 ID
142
+ meta:
143
+ type: object
144
+ required: &ref_15
145
+ - page
146
+ - limit
147
+ - total
148
+ - totalPages
149
+ properties: &ref_16
150
+ page:
151
+ type: integer
152
+ minimum: 1
153
+ description: 当前页码
154
+ limit:
155
+ type: integer
156
+ minimum: 1
157
+ maximum: 100
158
+ description: 每页数量
159
+ total:
160
+ type: integer
161
+ minimum: 0
162
+ description: 总记录数
163
+ totalPages:
164
+ type: integer
165
+ minimum: 0
166
+ description: 总页数
167
+ '401':
168
+ description: 未授权
169
+ content: &ref_4
170
+ application/json:
171
+ schema:
172
+ type: object
173
+ required: &ref_0
174
+ - code
175
+ - message
176
+ properties: &ref_1
177
+ code:
178
+ type: string
179
+ description: 错误码
180
+ message:
181
+ type: string
182
+ description: 错误消息
183
+ details:
184
+ type: array
185
+ items:
186
+ type: object
187
+ properties: &ref_47
188
+ field:
189
+ type: string
190
+ description: 字段名
191
+ message:
192
+ type: string
193
+ description: 字段错误信息
194
+ code:
195
+ type: string
196
+ description: 字段错误码
197
+ description: 错误详情
198
+ example:
199
+ code: UNAUTHORIZED
200
+ message: 请先登录
201
+ '500':
202
+ description: 服务器内部错误
203
+ content: &ref_5
204
+ application/json:
205
+ schema:
206
+ type: object
207
+ required: *ref_0
208
+ properties: *ref_1
209
+ example:
210
+ code: INTERNAL_ERROR
211
+ message: 服务器内部错误,请稍后重试
212
+ post:
213
+ tags:
214
+ - Pages
215
+ operationId: createPage
216
+ summary: 创建新页面
217
+ description: 创建一个新的页面,返回页面 ID
218
+ requestBody:
219
+ required: true
220
+ content:
221
+ application/json:
222
+ schema:
223
+ type: object
224
+ required: &ref_48
225
+ - title
226
+ properties: &ref_49
227
+ title:
228
+ type: string
229
+ minLength: 1
230
+ maxLength: 255
231
+ description: 页面标题
232
+ description:
233
+ type: string
234
+ maxLength: 1024
235
+ description: 页面描述
236
+ tags:
237
+ type: array
238
+ items:
239
+ type: string
240
+ description: 标签
241
+ templateId:
242
+ type: string
243
+ description: 模板 ID(可选,从模板创建)
244
+ responses:
245
+ '201':
246
+ description: 创建成功
247
+ content:
248
+ application/json:
249
+ schema:
250
+ type: object
251
+ required: &ref_6
252
+ - data
253
+ properties: &ref_7
254
+ data:
255
+ type: object
256
+ required: *ref_2
257
+ properties: *ref_3
258
+ '400':
259
+ description: 请求参数错误
260
+ content: &ref_9
261
+ application/json:
262
+ schema:
263
+ type: object
264
+ required: *ref_0
265
+ properties: *ref_1
266
+ example:
267
+ code: BAD_REQUEST
268
+ message: 请求参数无效
269
+ details:
270
+ - field: title
271
+ message: 标题不能为空
272
+ code: REQUIRED
273
+ '401':
274
+ description: 未授权
275
+ content: *ref_4
276
+ '500':
277
+ description: 服务器内部错误
278
+ content: *ref_5
279
+ /pages/{pageId}:
280
+ get:
281
+ tags:
282
+ - Pages
283
+ operationId: getPage
284
+ summary: 获取页面详情
285
+ description: 获取指定页面的完整信息
286
+ parameters:
287
+ - name: pageId
288
+ in: path
289
+ required: true
290
+ schema: &ref_8
291
+ type: string
292
+ minLength: 1
293
+ maxLength: 128
294
+ description: 页面 ID
295
+ responses:
296
+ '200':
297
+ description: 成功
298
+ content:
299
+ application/json:
300
+ schema:
301
+ type: object
302
+ required: *ref_6
303
+ properties: *ref_7
304
+ '401':
305
+ description: 未授权
306
+ content: *ref_4
307
+ '404':
308
+ description: 资源不存在
309
+ content: &ref_10
310
+ application/json:
311
+ schema:
312
+ type: object
313
+ required: *ref_0
314
+ properties: *ref_1
315
+ example:
316
+ code: NOT_FOUND
317
+ message: 资源不存在
318
+ '500':
319
+ description: 服务器内部错误
320
+ content: *ref_5
321
+ put:
322
+ tags:
323
+ - Pages
324
+ operationId: updatePage
325
+ summary: 更新页面信息
326
+ description: 更新页面的元数据(不包括页面内容)
327
+ parameters:
328
+ - name: pageId
329
+ in: path
330
+ required: true
331
+ schema: *ref_8
332
+ description: 页面 ID
333
+ requestBody:
334
+ required: true
335
+ content:
336
+ application/json:
337
+ schema:
338
+ type: object
339
+ properties: &ref_50
340
+ title:
341
+ type: string
342
+ minLength: 1
343
+ maxLength: 255
344
+ description: 页面标题
345
+ description:
346
+ type: string
347
+ maxLength: 1024
348
+ description: 页面描述
349
+ tags:
350
+ type: array
351
+ items:
352
+ type: string
353
+ description: 标签
354
+ responses:
355
+ '200':
356
+ description: 更新成功
357
+ content:
358
+ application/json:
359
+ schema:
360
+ type: object
361
+ required: *ref_6
362
+ properties: *ref_7
363
+ '400':
364
+ description: 请求参数错误
365
+ content: *ref_9
366
+ '401':
367
+ description: 未授权
368
+ content: *ref_4
369
+ '404':
370
+ description: 资源不存在
371
+ content: *ref_10
372
+ '500':
373
+ description: 服务器内部错误
374
+ content: *ref_5
375
+ delete:
376
+ tags:
377
+ - Pages
378
+ operationId: deletePage
379
+ summary: 删除页面
380
+ description: 软删除页面(可恢复)
381
+ parameters:
382
+ - name: pageId
383
+ in: path
384
+ required: true
385
+ schema: *ref_8
386
+ description: 页面 ID
387
+ responses:
388
+ '204':
389
+ description: 删除成功
390
+ '401':
391
+ description: 未授权
392
+ content: *ref_4
393
+ '404':
394
+ description: 资源不存在
395
+ content: *ref_10
396
+ '500':
397
+ description: 服务器内部错误
398
+ content: *ref_5
399
+ /pages/{pageId}/draft:
400
+ get:
401
+ tags:
402
+ - Drafts
403
+ operationId: getDraft
404
+ summary: 获取页面草稿
405
+ description: 获取指定页面的当前草稿内容
406
+ parameters:
407
+ - name: pageId
408
+ in: path
409
+ required: true
410
+ schema: *ref_8
411
+ description: 页面 ID
412
+ responses:
413
+ '200':
414
+ description: 成功
415
+ content:
416
+ application/json:
417
+ schema:
418
+ type: object
419
+ required: &ref_11
420
+ - data
421
+ properties: &ref_12
422
+ data:
423
+ type: object
424
+ required: &ref_52
425
+ - pageId
426
+ - content
427
+ - updatedAt
428
+ properties: &ref_53
429
+ pageId:
430
+ type: string
431
+ description: 页面 ID
432
+ content:
433
+ type: object
434
+ description: 页面 Schema 内容
435
+ baseVersion:
436
+ type: string
437
+ description: 基于的版本号
438
+ updatedAt:
439
+ type: string
440
+ format: date-time
441
+ description: 最后更新时间
442
+ updatedBy:
443
+ type: string
444
+ description: 最后更新者 ID
445
+ lockInfo:
446
+ type: object
447
+ properties: &ref_51
448
+ lockedBy:
449
+ type: string
450
+ description: 锁定者 ID
451
+ lockedAt:
452
+ type: string
453
+ format: date-time
454
+ description: 锁定时间
455
+ expiresAt:
456
+ type: string
457
+ format: date-time
458
+ description: 锁定过期时间
459
+ '401':
460
+ description: 未授权
461
+ content: *ref_4
462
+ '404':
463
+ description: 资源不存在
464
+ content: *ref_10
465
+ '500':
466
+ description: 服务器内部错误
467
+ content: *ref_5
468
+ put:
469
+ tags:
470
+ - Drafts
471
+ operationId: saveDraft
472
+ summary: 保存草稿
473
+ description: 保存页面草稿,支持增量保存
474
+ parameters:
475
+ - name: pageId
476
+ in: path
477
+ required: true
478
+ schema: *ref_8
479
+ description: 页面 ID
480
+ requestBody:
481
+ required: true
482
+ content:
483
+ application/json:
484
+ schema:
485
+ type: object
486
+ required: &ref_54
487
+ - content
488
+ properties: &ref_55
489
+ content:
490
+ type: object
491
+ description: 页面 Schema 内容
492
+ baseVersion:
493
+ type: string
494
+ description: 基于的版本号(用于冲突检测)
495
+ force:
496
+ type: boolean
497
+ default: false
498
+ description: 是否强制保存(忽略冲突)
499
+ responses:
500
+ '200':
501
+ description: 保存成功
502
+ content:
503
+ application/json:
504
+ schema:
505
+ type: object
506
+ required: *ref_11
507
+ properties: *ref_12
508
+ '400':
509
+ description: 请求参数错误
510
+ content: *ref_9
511
+ '401':
512
+ description: 未授权
513
+ content: *ref_4
514
+ '404':
515
+ description: 资源不存在
516
+ content: *ref_10
517
+ '409':
518
+ description: 资源冲突
519
+ content: &ref_19
520
+ application/json:
521
+ schema:
522
+ type: object
523
+ required: *ref_0
524
+ properties: *ref_1
525
+ example:
526
+ code: CONFLICT
527
+ message: 资源已被其他用户修改,请刷新后重试
528
+ '500':
529
+ description: 服务器内部错误
530
+ content: *ref_5
531
+ delete:
532
+ tags:
533
+ - Drafts
534
+ operationId: discardDraft
535
+ summary: 丢弃草稿
536
+ description: 丢弃当前草稿,恢复到最后发布的版本
537
+ parameters:
538
+ - name: pageId
539
+ in: path
540
+ required: true
541
+ schema: *ref_8
542
+ description: 页面 ID
543
+ responses:
544
+ '204':
545
+ description: 丢弃成功
546
+ '401':
547
+ description: 未授权
548
+ content: *ref_4
549
+ '404':
550
+ description: 资源不存在
551
+ content: *ref_10
552
+ '500':
553
+ description: 服务器内部错误
554
+ content: *ref_5
555
+ /pages/{pageId}/versions:
556
+ get:
557
+ tags:
558
+ - Versions
559
+ operationId: listVersions
560
+ summary: 获取版本列表
561
+ description: 获取指定页面的所有版本
562
+ parameters:
563
+ - name: pageId
564
+ in: path
565
+ required: true
566
+ schema: *ref_8
567
+ description: 页面 ID
568
+ - name: page
569
+ in: query
570
+ schema: *ref_13
571
+ description: 页码
572
+ - name: limit
573
+ in: query
574
+ schema: *ref_14
575
+ description: 每页数量
576
+ responses:
577
+ '200':
578
+ description: 成功
579
+ content:
580
+ application/json:
581
+ schema:
582
+ type: object
583
+ required: &ref_56
584
+ - data
585
+ - meta
586
+ properties: &ref_57
587
+ data:
588
+ type: array
589
+ items:
590
+ type: object
591
+ required: &ref_17
592
+ - id
593
+ - version
594
+ - status
595
+ - createdAt
596
+ properties: &ref_18
597
+ id:
598
+ type: string
599
+ description: 版本 ID
600
+ version:
601
+ type: string
602
+ pattern: ^\d+\.\d+\.\d+$
603
+ description: 语义化版本号
604
+ status:
605
+ type: string
606
+ enum:
607
+ - active
608
+ - inactive
609
+ - deprecated
610
+ description: 版本状态
611
+ changelog:
612
+ type: string
613
+ description: 变更日志
614
+ integrity:
615
+ type: string
616
+ description: 完整性哈希
617
+ createdAt:
618
+ type: string
619
+ format: date-time
620
+ description: 创建时间
621
+ createdBy:
622
+ type: string
623
+ description: 创建者 ID
624
+ rolloutPercentage:
625
+ type: integer
626
+ minimum: 0
627
+ maximum: 100
628
+ description: 灰度发布百分比
629
+ meta:
630
+ type: object
631
+ required: *ref_15
632
+ properties: *ref_16
633
+ '401':
634
+ description: 未授权
635
+ content: *ref_4
636
+ '404':
637
+ description: 资源不存在
638
+ content: *ref_10
639
+ '500':
640
+ description: 服务器内部错误
641
+ content: *ref_5
642
+ /pages/{pageId}/versions/{versionId}:
643
+ get:
644
+ tags:
645
+ - Versions
646
+ operationId: getVersion
647
+ summary: 获取版本详情
648
+ description: 获取指定版本的完整内容
649
+ parameters:
650
+ - name: pageId
651
+ in: path
652
+ required: true
653
+ schema: *ref_8
654
+ description: 页面 ID
655
+ - name: versionId
656
+ in: path
657
+ required: true
658
+ schema: &ref_23
659
+ type: string
660
+ description: 版本 ID
661
+ responses:
662
+ '200':
663
+ description: 成功
664
+ content:
665
+ application/json:
666
+ schema:
667
+ type: object
668
+ required: &ref_58
669
+ - data
670
+ properties: &ref_59
671
+ data:
672
+ allOf:
673
+ - type: object
674
+ required: *ref_17
675
+ properties: *ref_18
676
+ - type: object
677
+ properties:
678
+ content:
679
+ type: object
680
+ description: 页面 Schema 内容
681
+ '401':
682
+ description: 未授权
683
+ content: *ref_4
684
+ '404':
685
+ description: 资源不存在
686
+ content: *ref_10
687
+ '500':
688
+ description: 服务器内部错误
689
+ content: *ref_5
690
+ /pages/{pageId}/publish:
691
+ post:
692
+ tags:
693
+ - Versions
694
+ operationId: publishVersion
695
+ summary: 发布版本
696
+ description: 将当前草稿发布为新版本
697
+ parameters:
698
+ - name: pageId
699
+ in: path
700
+ required: true
701
+ schema: *ref_8
702
+ description: 页面 ID
703
+ requestBody:
704
+ required: true
705
+ content:
706
+ application/json:
707
+ schema:
708
+ type: object
709
+ properties: &ref_60
710
+ changelog:
711
+ type: string
712
+ maxLength: 2048
713
+ description: 变更日志
714
+ versionBump:
715
+ type: string
716
+ enum:
717
+ - major
718
+ - minor
719
+ - patch
720
+ default: patch
721
+ description: 版本号升级类型
722
+ rollout:
723
+ type: object
724
+ properties: &ref_26
725
+ percentage:
726
+ type: integer
727
+ minimum: 0
728
+ maximum: 100
729
+ default: 100
730
+ description: 灰度发布百分比
731
+ targetGroups:
732
+ type: array
733
+ items:
734
+ type: string
735
+ description: 目标用户组
736
+ responses:
737
+ '201':
738
+ description: 发布成功
739
+ content:
740
+ application/json:
741
+ schema:
742
+ type: object
743
+ required: &ref_20
744
+ - data
745
+ properties: &ref_21
746
+ data:
747
+ type: object
748
+ required: *ref_17
749
+ properties: *ref_18
750
+ '400':
751
+ description: 请求参数错误
752
+ content: *ref_9
753
+ '401':
754
+ description: 未授权
755
+ content: *ref_4
756
+ '404':
757
+ description: 资源不存在
758
+ content: *ref_10
759
+ '409':
760
+ description: 资源冲突
761
+ content: *ref_19
762
+ '500':
763
+ description: 服务器内部错误
764
+ content: *ref_5
765
+ /pages/{pageId}/rollback:
766
+ post:
767
+ tags:
768
+ - Versions
769
+ operationId: rollbackVersion
770
+ summary: 回滚版本
771
+ description: 回滚到指定的历史版本
772
+ parameters:
773
+ - name: pageId
774
+ in: path
775
+ required: true
776
+ schema: *ref_8
777
+ description: 页面 ID
778
+ requestBody:
779
+ required: true
780
+ content:
781
+ application/json:
782
+ schema:
783
+ type: object
784
+ required: &ref_61
785
+ - targetVersion
786
+ properties: &ref_62
787
+ targetVersion:
788
+ type: string
789
+ description: 目标版本 ID 或版本号
790
+ reason:
791
+ type: string
792
+ maxLength: 1024
793
+ description: 回滚原因
794
+ responses:
795
+ '200':
796
+ description: 回滚成功
797
+ content:
798
+ application/json:
799
+ schema:
800
+ type: object
801
+ required: *ref_20
802
+ properties: *ref_21
803
+ '400':
804
+ description: 请求参数错误
805
+ content: *ref_9
806
+ '401':
807
+ description: 未授权
808
+ content: *ref_4
809
+ '404':
810
+ description: 资源不存在
811
+ content: *ref_10
812
+ '500':
813
+ description: 服务器内部错误
814
+ content: *ref_5
815
+ /components:
816
+ get:
817
+ tags:
818
+ - Components
819
+ operationId: listComponents
820
+ summary: 获取组件列表
821
+ description: 获取平台中所有可用的组件
822
+ parameters:
823
+ - name: page
824
+ in: query
825
+ schema: *ref_13
826
+ description: 页码
827
+ - name: limit
828
+ in: query
829
+ schema: *ref_14
830
+ description: 每页数量
831
+ - name: category
832
+ in: query
833
+ schema:
834
+ type: string
835
+ description: 按分类筛选
836
+ - name: status
837
+ in: query
838
+ schema:
839
+ type: string
840
+ enum:
841
+ - active
842
+ - deprecated
843
+ - disabled
844
+ description: 按状态筛选
845
+ responses:
846
+ '200':
847
+ description: 成功
848
+ content:
849
+ application/json:
850
+ schema:
851
+ type: object
852
+ required: &ref_65
853
+ - data
854
+ - meta
855
+ properties: &ref_66
856
+ data:
857
+ type: array
858
+ items:
859
+ type: object
860
+ required: &ref_63
861
+ - id
862
+ - name
863
+ - category
864
+ - status
865
+ properties: &ref_64
866
+ id:
867
+ type: string
868
+ description: 组件 ID
869
+ name:
870
+ type: string
871
+ description: 组件名称
872
+ displayName:
873
+ type: string
874
+ description: 显示名称
875
+ description:
876
+ type: string
877
+ description: 组件描述
878
+ category:
879
+ type: string
880
+ description: 组件分类
881
+ status:
882
+ type: string
883
+ enum:
884
+ - active
885
+ - deprecated
886
+ - disabled
887
+ description: 组件状态
888
+ latestVersion:
889
+ type: string
890
+ description: 最新版本号
891
+ icon:
892
+ type: string
893
+ description: 图标 URL
894
+ meta:
895
+ type: object
896
+ required: *ref_15
897
+ properties: *ref_16
898
+ '401':
899
+ description: 未授权
900
+ content: *ref_4
901
+ '500':
902
+ description: 服务器内部错误
903
+ content: *ref_5
904
+ /components/{componentId}/versions:
905
+ get:
906
+ tags:
907
+ - Components
908
+ operationId: listComponentVersions
909
+ summary: 获取组件版本列表
910
+ description: 获取指定组件的所有版本
911
+ parameters:
912
+ - name: componentId
913
+ in: path
914
+ required: true
915
+ schema: &ref_22
916
+ type: string
917
+ description: 组件 ID
918
+ - name: page
919
+ in: query
920
+ schema: *ref_13
921
+ description: 页码
922
+ - name: limit
923
+ in: query
924
+ schema: *ref_14
925
+ description: 每页数量
926
+ responses:
927
+ '200':
928
+ description: 成功
929
+ content:
930
+ application/json:
931
+ schema:
932
+ type: object
933
+ required: &ref_67
934
+ - data
935
+ - meta
936
+ properties: &ref_68
937
+ data:
938
+ type: array
939
+ items:
940
+ type: object
941
+ required: &ref_24
942
+ - id
943
+ - version
944
+ - status
945
+ - createdAt
946
+ properties: &ref_25
947
+ id:
948
+ type: string
949
+ description: 版本 ID
950
+ version:
951
+ type: string
952
+ pattern: ^\d+\.\d+\.\d+$
953
+ description: 语义化版本号
954
+ status:
955
+ type: string
956
+ enum:
957
+ - active
958
+ - deprecated
959
+ - disabled
960
+ description: 版本状态
961
+ changelog:
962
+ type: string
963
+ description: 变更日志
964
+ integrity:
965
+ type: string
966
+ description: 完整性哈希
967
+ createdAt:
968
+ type: string
969
+ format: date-time
970
+ description: 创建时间
971
+ meta:
972
+ type: object
973
+ required: *ref_15
974
+ properties: *ref_16
975
+ '401':
976
+ description: 未授权
977
+ content: *ref_4
978
+ '404':
979
+ description: 资源不存在
980
+ content: *ref_10
981
+ '500':
982
+ description: 服务器内部错误
983
+ content: *ref_5
984
+ /components/{componentId}/versions/{versionId}/status:
985
+ put:
986
+ tags:
987
+ - Components
988
+ operationId: updateComponentVersionStatus
989
+ summary: 更新组件版本状态
990
+ description: 更新指定组件版本的状态(启用/禁用/废弃)
991
+ parameters:
992
+ - name: componentId
993
+ in: path
994
+ required: true
995
+ schema: *ref_22
996
+ description: 组件 ID
997
+ - name: versionId
998
+ in: path
999
+ required: true
1000
+ schema: *ref_23
1001
+ description: 版本 ID
1002
+ requestBody:
1003
+ required: true
1004
+ content:
1005
+ application/json:
1006
+ schema:
1007
+ type: object
1008
+ required: &ref_69
1009
+ - status
1010
+ properties: &ref_70
1011
+ status:
1012
+ type: string
1013
+ enum:
1014
+ - active
1015
+ - deprecated
1016
+ - disabled
1017
+ description: 新状态
1018
+ reason:
1019
+ type: string
1020
+ maxLength: 1024
1021
+ description: 状态变更原因
1022
+ responses:
1023
+ '200':
1024
+ description: 更新成功
1025
+ content:
1026
+ application/json:
1027
+ schema:
1028
+ type: object
1029
+ required: &ref_71
1030
+ - data
1031
+ properties: &ref_72
1032
+ data:
1033
+ type: object
1034
+ required: *ref_24
1035
+ properties: *ref_25
1036
+ '400':
1037
+ description: 请求参数错误
1038
+ content: *ref_9
1039
+ '401':
1040
+ description: 未授权
1041
+ content: *ref_4
1042
+ '404':
1043
+ description: 资源不存在
1044
+ content: *ref_10
1045
+ '500':
1046
+ description: 服务器内部错误
1047
+ content: *ref_5
1048
+ /pages/{pageId}/rollout:
1049
+ get:
1050
+ tags:
1051
+ - Rollout
1052
+ summary: 获取页面灰度配置
1053
+ operationId: getRolloutConfig
1054
+ parameters:
1055
+ - name: pageId
1056
+ in: path
1057
+ required: true
1058
+ schema:
1059
+ type: string
1060
+ responses:
1061
+ '200':
1062
+ description: 成功
1063
+ content:
1064
+ application/json:
1065
+ schema:
1066
+ type: object
1067
+ properties:
1068
+ success:
1069
+ type: boolean
1070
+ data:
1071
+ type: object
1072
+ properties: *ref_26
1073
+ '404':
1074
+ description: 资源不存在
1075
+ content: *ref_10
1076
+ put:
1077
+ tags:
1078
+ - Rollout
1079
+ summary: 更新页面灰度配置
1080
+ operationId: updateRolloutConfig
1081
+ parameters:
1082
+ - name: pageId
1083
+ in: path
1084
+ required: true
1085
+ schema:
1086
+ type: string
1087
+ requestBody:
1088
+ required: true
1089
+ content:
1090
+ application/json:
1091
+ schema:
1092
+ type: object
1093
+ properties: &ref_73
1094
+ percentage:
1095
+ type: integer
1096
+ minimum: 0
1097
+ maximum: 100
1098
+ description: 灰度发布百分比
1099
+ targetGroups:
1100
+ type: array
1101
+ items:
1102
+ type: string
1103
+ description: 目标用户组
1104
+ enabled:
1105
+ type: boolean
1106
+ description: 是否启用
1107
+ responses:
1108
+ '200':
1109
+ description: 更新成功
1110
+ content:
1111
+ application/json:
1112
+ schema:
1113
+ type: object
1114
+ properties:
1115
+ success:
1116
+ type: boolean
1117
+ data:
1118
+ type: object
1119
+ properties: *ref_26
1120
+ '400':
1121
+ description: 请求参数错误
1122
+ content: *ref_9
1123
+ '404':
1124
+ description: 资源不存在
1125
+ content: *ref_10
1126
+ delete:
1127
+ tags:
1128
+ - Rollout
1129
+ summary: 删除页面灰度配置(使用默认版本)
1130
+ operationId: deleteRolloutConfig
1131
+ parameters:
1132
+ - name: pageId
1133
+ in: path
1134
+ required: true
1135
+ schema:
1136
+ type: string
1137
+ responses:
1138
+ '204':
1139
+ description: 删除成功
1140
+ '404':
1141
+ description: 资源不存在
1142
+ content: *ref_10
1143
+ /pages/{pageId}/rollout/strategies:
1144
+ post:
1145
+ tags:
1146
+ - Rollout
1147
+ summary: 添加灰度策略
1148
+ operationId: addRolloutStrategy
1149
+ parameters:
1150
+ - name: pageId
1151
+ in: path
1152
+ required: true
1153
+ schema:
1154
+ type: string
1155
+ requestBody:
1156
+ required: true
1157
+ content:
1158
+ application/json:
1159
+ schema:
1160
+ type: object
1161
+ required: &ref_74
1162
+ - name
1163
+ - type
1164
+ - config
1165
+ properties: &ref_75
1166
+ name:
1167
+ type: string
1168
+ minLength: 1
1169
+ maxLength: 255
1170
+ description: 策略名称
1171
+ type:
1172
+ type: string
1173
+ enum:
1174
+ - percentage
1175
+ - userGroup
1176
+ - feature
1177
+ - gradual
1178
+ description: 策略类型
1179
+ config:
1180
+ type: object
1181
+ additionalProperties: true
1182
+ description: 策略配置
1183
+ priority:
1184
+ type: integer
1185
+ minimum: 0
1186
+ description: 优先级
1187
+ enabled:
1188
+ type: boolean
1189
+ default: true
1190
+ description: 是否启用
1191
+ responses:
1192
+ '201':
1193
+ description: 添加成功
1194
+ content:
1195
+ application/json:
1196
+ schema:
1197
+ type: object
1198
+ properties:
1199
+ success:
1200
+ type: boolean
1201
+ data:
1202
+ type: object
1203
+ required: &ref_27
1204
+ - id
1205
+ - name
1206
+ - type
1207
+ - config
1208
+ properties: &ref_28
1209
+ id:
1210
+ type: string
1211
+ description: 策略 ID
1212
+ name:
1213
+ type: string
1214
+ description: 策略名称
1215
+ type:
1216
+ type: string
1217
+ enum:
1218
+ - percentage
1219
+ - userGroup
1220
+ - feature
1221
+ - gradual
1222
+ description: 策略类型
1223
+ config:
1224
+ type: object
1225
+ additionalProperties: true
1226
+ description: 策略配置
1227
+ priority:
1228
+ type: integer
1229
+ minimum: 0
1230
+ description: 优先级
1231
+ enabled:
1232
+ type: boolean
1233
+ description: 是否启用
1234
+ createdAt:
1235
+ type: string
1236
+ format: date-time
1237
+ description: 创建时间
1238
+ updatedAt:
1239
+ type: string
1240
+ format: date-time
1241
+ description: 更新时间
1242
+ /pages/{pageId}/rollout/strategies/{strategyId}:
1243
+ put:
1244
+ tags:
1245
+ - Rollout
1246
+ summary: 更新灰度策略
1247
+ operationId: updateRolloutStrategy
1248
+ parameters:
1249
+ - name: pageId
1250
+ in: path
1251
+ required: true
1252
+ schema:
1253
+ type: string
1254
+ - name: strategyId
1255
+ in: path
1256
+ required: true
1257
+ schema:
1258
+ type: string
1259
+ requestBody:
1260
+ required: true
1261
+ content:
1262
+ application/json:
1263
+ schema:
1264
+ type: object
1265
+ properties: &ref_76
1266
+ name:
1267
+ type: string
1268
+ minLength: 1
1269
+ maxLength: 255
1270
+ description: 策略名称
1271
+ config:
1272
+ type: object
1273
+ additionalProperties: true
1274
+ description: 策略配置
1275
+ priority:
1276
+ type: integer
1277
+ minimum: 0
1278
+ description: 优先级
1279
+ enabled:
1280
+ type: boolean
1281
+ description: 是否启用
1282
+ responses:
1283
+ '200':
1284
+ description: 更新成功
1285
+ content:
1286
+ application/json:
1287
+ schema:
1288
+ type: object
1289
+ properties:
1290
+ success:
1291
+ type: boolean
1292
+ data:
1293
+ type: object
1294
+ required: *ref_27
1295
+ properties: *ref_28
1296
+ delete:
1297
+ tags:
1298
+ - Rollout
1299
+ summary: 删除灰度策略
1300
+ operationId: deleteRolloutStrategy
1301
+ parameters:
1302
+ - name: pageId
1303
+ in: path
1304
+ required: true
1305
+ schema:
1306
+ type: string
1307
+ - name: strategyId
1308
+ in: path
1309
+ required: true
1310
+ schema:
1311
+ type: string
1312
+ responses:
1313
+ '204':
1314
+ description: 删除成功
1315
+ /definitions/actions:
1316
+ get:
1317
+ tags:
1318
+ - Definitions
1319
+ summary: 获取 ActionDefinition 列表
1320
+ operationId: listActionDefinitions
1321
+ parameters:
1322
+ - name: pageSize
1323
+ in: query
1324
+ schema:
1325
+ type: integer
1326
+ default: 20
1327
+ - name: pageToken
1328
+ in: query
1329
+ schema:
1330
+ type: string
1331
+ - name: actionType
1332
+ in: query
1333
+ schema:
1334
+ type: string
1335
+ enum:
1336
+ - claim
1337
+ - signin
1338
+ - lottery
1339
+ - reserve
1340
+ - bind
1341
+ - task_complete
1342
+ - vote
1343
+ - share
1344
+ - form_submit
1345
+ - custom
1346
+ - name: status
1347
+ in: query
1348
+ schema:
1349
+ type: string
1350
+ enum:
1351
+ - draft
1352
+ - stable
1353
+ - deprecated
1354
+ - blocked
1355
+ responses:
1356
+ '200':
1357
+ description: 成功
1358
+ content:
1359
+ application/json:
1360
+ schema:
1361
+ type: object
1362
+ properties:
1363
+ success:
1364
+ type: boolean
1365
+ data:
1366
+ type: array
1367
+ items:
1368
+ type: object
1369
+ required: &ref_29
1370
+ - id
1371
+ - name
1372
+ - type
1373
+ - status
1374
+ - createdAt
1375
+ properties: &ref_30
1376
+ id:
1377
+ type: string
1378
+ description: 定义 ID
1379
+ name:
1380
+ type: string
1381
+ description: 动作名称
1382
+ displayName:
1383
+ type: string
1384
+ description: 显示名称
1385
+ type:
1386
+ type: string
1387
+ enum:
1388
+ - builtin
1389
+ - custom
1390
+ - http
1391
+ - script
1392
+ description: 动作类型
1393
+ description:
1394
+ type: string
1395
+ description: 描述
1396
+ status:
1397
+ type: string
1398
+ enum:
1399
+ - active
1400
+ - deprecated
1401
+ - disabled
1402
+ description: 状态
1403
+ latestVersion:
1404
+ type: string
1405
+ description: 最新版本
1406
+ createdAt:
1407
+ type: string
1408
+ format: date-time
1409
+ description: 创建时间
1410
+ updatedAt:
1411
+ type: string
1412
+ format: date-time
1413
+ description: 更新时间
1414
+ meta:
1415
+ type: object
1416
+ required: *ref_15
1417
+ properties: *ref_16
1418
+ '401':
1419
+ description: 未授权
1420
+ content: *ref_4
1421
+ post:
1422
+ tags:
1423
+ - Definitions
1424
+ summary: 创建 ActionDefinition
1425
+ operationId: createActionDefinition
1426
+ requestBody:
1427
+ required: true
1428
+ content:
1429
+ application/json:
1430
+ schema:
1431
+ type: object
1432
+ required: &ref_77
1433
+ - name
1434
+ - type
1435
+ properties: &ref_78
1436
+ name:
1437
+ type: string
1438
+ minLength: 1
1439
+ maxLength: 255
1440
+ description: 动作名称
1441
+ displayName:
1442
+ type: string
1443
+ maxLength: 255
1444
+ description: 显示名称
1445
+ type:
1446
+ type: string
1447
+ enum:
1448
+ - builtin
1449
+ - custom
1450
+ - http
1451
+ - script
1452
+ description: 动作类型
1453
+ description:
1454
+ type: string
1455
+ maxLength: 1024
1456
+ description: 描述
1457
+ spec:
1458
+ type: object
1459
+ description: 动作规范定义
1460
+ responses:
1461
+ '201':
1462
+ description: 创建成功
1463
+ content:
1464
+ application/json:
1465
+ schema:
1466
+ type: object
1467
+ properties:
1468
+ success:
1469
+ type: boolean
1470
+ data:
1471
+ type: object
1472
+ required: *ref_29
1473
+ properties: *ref_30
1474
+ '400':
1475
+ description: 请求参数错误
1476
+ content: *ref_9
1477
+ '401':
1478
+ description: 未授权
1479
+ content: *ref_4
1480
+ /definitions/actions/{definitionId}:
1481
+ get:
1482
+ tags:
1483
+ - Definitions
1484
+ summary: 获取 ActionDefinition 详情
1485
+ operationId: getActionDefinition
1486
+ parameters:
1487
+ - name: definitionId
1488
+ in: path
1489
+ required: true
1490
+ schema:
1491
+ type: string
1492
+ responses:
1493
+ '200':
1494
+ description: 成功
1495
+ content:
1496
+ application/json:
1497
+ schema:
1498
+ type: object
1499
+ properties:
1500
+ success:
1501
+ type: boolean
1502
+ data:
1503
+ type: object
1504
+ required: &ref_79
1505
+ - id
1506
+ - name
1507
+ - type
1508
+ - status
1509
+ - spec
1510
+ - createdAt
1511
+ properties: &ref_80
1512
+ id:
1513
+ type: string
1514
+ description: 定义 ID
1515
+ name:
1516
+ type: string
1517
+ description: 动作名称
1518
+ displayName:
1519
+ type: string
1520
+ description: 显示名称
1521
+ type:
1522
+ type: string
1523
+ enum:
1524
+ - builtin
1525
+ - custom
1526
+ - http
1527
+ - script
1528
+ description: 动作类型
1529
+ description:
1530
+ type: string
1531
+ description: 描述
1532
+ status:
1533
+ type: string
1534
+ enum:
1535
+ - active
1536
+ - deprecated
1537
+ - disabled
1538
+ description: 状态
1539
+ spec:
1540
+ type: object
1541
+ description: 动作规范定义
1542
+ versions:
1543
+ type: array
1544
+ items:
1545
+ type: object
1546
+ required: &ref_31
1547
+ - id
1548
+ - version
1549
+ - status
1550
+ - createdAt
1551
+ properties: &ref_32
1552
+ id:
1553
+ type: string
1554
+ description: 版本 ID
1555
+ version:
1556
+ type: string
1557
+ pattern: ^\d+\.\d+\.\d+$
1558
+ description: 语义化版本号
1559
+ status:
1560
+ type: string
1561
+ enum:
1562
+ - active
1563
+ - deprecated
1564
+ - disabled
1565
+ description: 版本状态
1566
+ changelog:
1567
+ type: string
1568
+ description: 变更日志
1569
+ integrity:
1570
+ type: string
1571
+ description: 完整性哈希
1572
+ createdAt:
1573
+ type: string
1574
+ format: date-time
1575
+ description: 创建时间
1576
+ createdBy:
1577
+ type: string
1578
+ description: 创建者 ID
1579
+ description: 版本列表
1580
+ createdAt:
1581
+ type: string
1582
+ format: date-time
1583
+ description: 创建时间
1584
+ updatedAt:
1585
+ type: string
1586
+ format: date-time
1587
+ description: 更新时间
1588
+ '404':
1589
+ description: 资源不存在
1590
+ content: *ref_10
1591
+ put:
1592
+ tags:
1593
+ - Definitions
1594
+ summary: 更新 ActionDefinition
1595
+ operationId: updateActionDefinition
1596
+ parameters:
1597
+ - name: definitionId
1598
+ in: path
1599
+ required: true
1600
+ schema:
1601
+ type: string
1602
+ requestBody:
1603
+ required: true
1604
+ content:
1605
+ application/json:
1606
+ schema:
1607
+ type: object
1608
+ properties: &ref_81
1609
+ displayName:
1610
+ type: string
1611
+ maxLength: 255
1612
+ description: 显示名称
1613
+ description:
1614
+ type: string
1615
+ maxLength: 1024
1616
+ description: 描述
1617
+ spec:
1618
+ type: object
1619
+ description: 动作规范定义
1620
+ status:
1621
+ type: string
1622
+ enum:
1623
+ - active
1624
+ - deprecated
1625
+ - disabled
1626
+ description: 状态
1627
+ responses:
1628
+ '200':
1629
+ description: 更新成功
1630
+ content:
1631
+ application/json:
1632
+ schema:
1633
+ type: object
1634
+ properties:
1635
+ success:
1636
+ type: boolean
1637
+ data:
1638
+ type: object
1639
+ required: *ref_29
1640
+ properties: *ref_30
1641
+ '400':
1642
+ description: 请求参数错误
1643
+ content: *ref_9
1644
+ '404':
1645
+ description: 资源不存在
1646
+ content: *ref_10
1647
+ /definitions/actions/{definitionId}/versions:
1648
+ get:
1649
+ tags:
1650
+ - Definitions
1651
+ summary: 获取 ActionDefinition 版本列表
1652
+ operationId: listActionDefinitionVersions
1653
+ parameters:
1654
+ - name: definitionId
1655
+ in: path
1656
+ required: true
1657
+ schema:
1658
+ type: string
1659
+ - name: pageSize
1660
+ in: query
1661
+ schema:
1662
+ type: integer
1663
+ default: 20
1664
+ - name: pageToken
1665
+ in: query
1666
+ schema:
1667
+ type: string
1668
+ responses:
1669
+ '200':
1670
+ description: 成功
1671
+ content:
1672
+ application/json:
1673
+ schema:
1674
+ type: object
1675
+ properties:
1676
+ success:
1677
+ type: boolean
1678
+ data:
1679
+ type: array
1680
+ items:
1681
+ type: object
1682
+ required: *ref_31
1683
+ properties: *ref_32
1684
+ meta:
1685
+ type: object
1686
+ required: *ref_15
1687
+ properties: *ref_16
1688
+ post:
1689
+ tags:
1690
+ - Definitions
1691
+ summary: 发布 ActionDefinition 新版本
1692
+ operationId: publishActionDefinitionVersion
1693
+ parameters:
1694
+ - name: definitionId
1695
+ in: path
1696
+ required: true
1697
+ schema:
1698
+ type: string
1699
+ requestBody:
1700
+ required: true
1701
+ content:
1702
+ application/json:
1703
+ schema:
1704
+ type: object
1705
+ properties: &ref_35
1706
+ changelog:
1707
+ type: string
1708
+ maxLength: 2048
1709
+ description: 变更日志
1710
+ versionBump:
1711
+ type: string
1712
+ enum:
1713
+ - major
1714
+ - minor
1715
+ - patch
1716
+ default: patch
1717
+ description: 版本号升级类型
1718
+ responses:
1719
+ '201':
1720
+ description: 发布成功
1721
+ content:
1722
+ application/json:
1723
+ schema:
1724
+ type: object
1725
+ properties:
1726
+ success:
1727
+ type: boolean
1728
+ data:
1729
+ type: object
1730
+ required: *ref_31
1731
+ properties: *ref_32
1732
+ /definitions/queries:
1733
+ get:
1734
+ tags:
1735
+ - Definitions
1736
+ summary: 获取 DataQueryDefinition 列表
1737
+ operationId: listDataQueryDefinitions
1738
+ parameters:
1739
+ - name: pageSize
1740
+ in: query
1741
+ schema:
1742
+ type: integer
1743
+ default: 20
1744
+ - name: pageToken
1745
+ in: query
1746
+ schema:
1747
+ type: string
1748
+ - name: sourceType
1749
+ in: query
1750
+ schema:
1751
+ type: string
1752
+ enum:
1753
+ - http
1754
+ - graphql
1755
+ - database
1756
+ - internal
1757
+ - aggregation
1758
+ - name: status
1759
+ in: query
1760
+ schema:
1761
+ type: string
1762
+ enum:
1763
+ - draft
1764
+ - stable
1765
+ - deprecated
1766
+ - blocked
1767
+ responses:
1768
+ '200':
1769
+ description: 成功
1770
+ content:
1771
+ application/json:
1772
+ schema:
1773
+ type: object
1774
+ properties:
1775
+ success:
1776
+ type: boolean
1777
+ data:
1778
+ type: array
1779
+ items:
1780
+ type: object
1781
+ required: &ref_33
1782
+ - id
1783
+ - name
1784
+ - type
1785
+ - status
1786
+ - createdAt
1787
+ properties: &ref_34
1788
+ id:
1789
+ type: string
1790
+ description: 定义 ID
1791
+ name:
1792
+ type: string
1793
+ description: 查询名称
1794
+ displayName:
1795
+ type: string
1796
+ description: 显示名称
1797
+ type:
1798
+ type: string
1799
+ enum:
1800
+ - http
1801
+ - graphql
1802
+ - sql
1803
+ - custom
1804
+ description: 查询类型
1805
+ description:
1806
+ type: string
1807
+ description: 描述
1808
+ status:
1809
+ type: string
1810
+ enum:
1811
+ - active
1812
+ - deprecated
1813
+ - disabled
1814
+ description: 状态
1815
+ latestVersion:
1816
+ type: string
1817
+ description: 最新版本
1818
+ createdAt:
1819
+ type: string
1820
+ format: date-time
1821
+ description: 创建时间
1822
+ updatedAt:
1823
+ type: string
1824
+ format: date-time
1825
+ description: 更新时间
1826
+ meta:
1827
+ type: object
1828
+ required: *ref_15
1829
+ properties: *ref_16
1830
+ post:
1831
+ tags:
1832
+ - Definitions
1833
+ summary: 创建 DataQueryDefinition
1834
+ operationId: createDataQueryDefinition
1835
+ requestBody:
1836
+ required: true
1837
+ content:
1838
+ application/json:
1839
+ schema:
1840
+ type: object
1841
+ required: &ref_82
1842
+ - name
1843
+ - type
1844
+ properties: &ref_83
1845
+ name:
1846
+ type: string
1847
+ minLength: 1
1848
+ maxLength: 255
1849
+ description: 查询名称
1850
+ displayName:
1851
+ type: string
1852
+ maxLength: 255
1853
+ description: 显示名称
1854
+ type:
1855
+ type: string
1856
+ enum:
1857
+ - http
1858
+ - graphql
1859
+ - sql
1860
+ - custom
1861
+ description: 查询类型
1862
+ description:
1863
+ type: string
1864
+ maxLength: 1024
1865
+ description: 描述
1866
+ spec:
1867
+ type: object
1868
+ description: 查询规范定义
1869
+ responses:
1870
+ '201':
1871
+ description: 创建成功
1872
+ content:
1873
+ application/json:
1874
+ schema:
1875
+ type: object
1876
+ properties:
1877
+ success:
1878
+ type: boolean
1879
+ data:
1880
+ type: object
1881
+ required: *ref_33
1882
+ properties: *ref_34
1883
+ /definitions/queries/{definitionId}:
1884
+ get:
1885
+ tags:
1886
+ - Definitions
1887
+ summary: 获取 DataQueryDefinition 详情
1888
+ operationId: getDataQueryDefinition
1889
+ parameters:
1890
+ - name: definitionId
1891
+ in: path
1892
+ required: true
1893
+ schema:
1894
+ type: string
1895
+ responses:
1896
+ '200':
1897
+ description: 成功
1898
+ content:
1899
+ application/json:
1900
+ schema:
1901
+ type: object
1902
+ properties:
1903
+ success:
1904
+ type: boolean
1905
+ data:
1906
+ type: object
1907
+ required: &ref_84
1908
+ - id
1909
+ - name
1910
+ - type
1911
+ - status
1912
+ - spec
1913
+ - createdAt
1914
+ properties: &ref_85
1915
+ id:
1916
+ type: string
1917
+ description: 定义 ID
1918
+ name:
1919
+ type: string
1920
+ description: 查询名称
1921
+ displayName:
1922
+ type: string
1923
+ description: 显示名称
1924
+ type:
1925
+ type: string
1926
+ enum:
1927
+ - http
1928
+ - graphql
1929
+ - sql
1930
+ - custom
1931
+ description: 查询类型
1932
+ description:
1933
+ type: string
1934
+ description: 描述
1935
+ status:
1936
+ type: string
1937
+ enum:
1938
+ - active
1939
+ - deprecated
1940
+ - disabled
1941
+ description: 状态
1942
+ spec:
1943
+ type: object
1944
+ description: 查询规范定义
1945
+ versions:
1946
+ type: array
1947
+ items:
1948
+ type: object
1949
+ required: *ref_31
1950
+ properties: *ref_32
1951
+ description: 版本列表
1952
+ createdAt:
1953
+ type: string
1954
+ format: date-time
1955
+ description: 创建时间
1956
+ updatedAt:
1957
+ type: string
1958
+ format: date-time
1959
+ description: 更新时间
1960
+ '404':
1961
+ description: 资源不存在
1962
+ content: *ref_10
1963
+ /definitions/queries/{definitionId}/versions:
1964
+ get:
1965
+ tags:
1966
+ - Definitions
1967
+ summary: 获取 DataQueryDefinition 版本列表
1968
+ operationId: listDataQueryDefinitionVersions
1969
+ parameters:
1970
+ - name: definitionId
1971
+ in: path
1972
+ required: true
1973
+ schema:
1974
+ type: string
1975
+ responses:
1976
+ '200':
1977
+ description: 成功
1978
+ content:
1979
+ application/json:
1980
+ schema:
1981
+ type: object
1982
+ properties:
1983
+ success:
1984
+ type: boolean
1985
+ data:
1986
+ type: array
1987
+ items:
1988
+ type: object
1989
+ required: *ref_31
1990
+ properties: *ref_32
1991
+ post:
1992
+ tags:
1993
+ - Definitions
1994
+ summary: 发布 DataQueryDefinition 新版本
1995
+ operationId: publishDataQueryDefinitionVersion
1996
+ parameters:
1997
+ - name: definitionId
1998
+ in: path
1999
+ required: true
2000
+ schema:
2001
+ type: string
2002
+ requestBody:
2003
+ required: true
2004
+ content:
2005
+ application/json:
2006
+ schema:
2007
+ type: object
2008
+ properties: *ref_35
2009
+ responses:
2010
+ '201':
2011
+ description: 发布成功
2012
+ content:
2013
+ application/json:
2014
+ schema:
2015
+ type: object
2016
+ properties:
2017
+ success:
2018
+ type: boolean
2019
+ data:
2020
+ type: object
2021
+ required: *ref_31
2022
+ properties: *ref_32
2023
+ /activities:
2024
+ get:
2025
+ tags:
2026
+ - Activities
2027
+ summary: 获取活动列表
2028
+ operationId: listActivities
2029
+ parameters:
2030
+ - name: pageSize
2031
+ in: query
2032
+ schema:
2033
+ type: integer
2034
+ default: 20
2035
+ - name: pageToken
2036
+ in: query
2037
+ schema:
2038
+ type: string
2039
+ - name: type
2040
+ in: query
2041
+ schema:
2042
+ type: string
2043
+ enum:
2044
+ - claim
2045
+ - signin
2046
+ - lottery
2047
+ - reserve
2048
+ - task
2049
+ - vote
2050
+ - share
2051
+ - bind
2052
+ - custom
2053
+ - name: status
2054
+ in: query
2055
+ schema:
2056
+ type: string
2057
+ enum:
2058
+ - draft
2059
+ - scheduled
2060
+ - active
2061
+ - paused
2062
+ - ended
2063
+ - archived
2064
+ responses:
2065
+ '200':
2066
+ description: 成功
2067
+ content:
2068
+ application/json:
2069
+ schema:
2070
+ type: object
2071
+ properties:
2072
+ success:
2073
+ type: boolean
2074
+ data:
2075
+ type: array
2076
+ items:
2077
+ type: object
2078
+ required: &ref_36
2079
+ - id
2080
+ - name
2081
+ - type
2082
+ - status
2083
+ - createdAt
2084
+ properties: &ref_37
2085
+ id:
2086
+ type: string
2087
+ description: 活动 ID
2088
+ name:
2089
+ type: string
2090
+ description: 活动名称
2091
+ type:
2092
+ type: string
2093
+ enum:
2094
+ - signin
2095
+ - lottery
2096
+ - redpack
2097
+ - coupon
2098
+ - custom
2099
+ description: 活动类型
2100
+ status:
2101
+ type: string
2102
+ enum:
2103
+ - draft
2104
+ - scheduled
2105
+ - active
2106
+ - paused
2107
+ - ended
2108
+ description: 活动状态
2109
+ startTime:
2110
+ type: string
2111
+ format: date-time
2112
+ description: 开始时间
2113
+ endTime:
2114
+ type: string
2115
+ format: date-time
2116
+ description: 结束时间
2117
+ createdAt:
2118
+ type: string
2119
+ format: date-time
2120
+ description: 创建时间
2121
+ updatedAt:
2122
+ type: string
2123
+ format: date-time
2124
+ description: 更新时间
2125
+ meta:
2126
+ type: object
2127
+ required: *ref_15
2128
+ properties: *ref_16
2129
+ post:
2130
+ tags:
2131
+ - Activities
2132
+ summary: 创建活动
2133
+ operationId: createActivity
2134
+ requestBody:
2135
+ required: true
2136
+ content:
2137
+ application/json:
2138
+ schema:
2139
+ type: object
2140
+ required: &ref_86
2141
+ - name
2142
+ - type
2143
+ properties: &ref_87
2144
+ name:
2145
+ type: string
2146
+ minLength: 1
2147
+ maxLength: 255
2148
+ description: 活动名称
2149
+ type:
2150
+ type: string
2151
+ enum:
2152
+ - signin
2153
+ - lottery
2154
+ - redpack
2155
+ - coupon
2156
+ - custom
2157
+ description: 活动类型
2158
+ description:
2159
+ type: string
2160
+ maxLength: 1024
2161
+ description: 活动描述
2162
+ config:
2163
+ type: object
2164
+ additionalProperties: true
2165
+ description: 活动配置
2166
+ rules:
2167
+ type: object
2168
+ additionalProperties: true
2169
+ description: 活动规则
2170
+ startTime:
2171
+ type: string
2172
+ format: date-time
2173
+ description: 开始时间
2174
+ endTime:
2175
+ type: string
2176
+ format: date-time
2177
+ description: 结束时间
2178
+ responses:
2179
+ '201':
2180
+ description: 创建成功
2181
+ content:
2182
+ application/json:
2183
+ schema:
2184
+ type: object
2185
+ properties:
2186
+ success:
2187
+ type: boolean
2188
+ data:
2189
+ type: object
2190
+ required: *ref_36
2191
+ properties: *ref_37
2192
+ /activities/{activityId}:
2193
+ get:
2194
+ tags:
2195
+ - Activities
2196
+ summary: 获取活动详情
2197
+ operationId: getActivity
2198
+ parameters:
2199
+ - name: activityId
2200
+ in: path
2201
+ required: true
2202
+ schema:
2203
+ type: string
2204
+ responses:
2205
+ '200':
2206
+ description: 成功
2207
+ content:
2208
+ application/json:
2209
+ schema:
2210
+ type: object
2211
+ properties:
2212
+ success:
2213
+ type: boolean
2214
+ data:
2215
+ type: object
2216
+ required: &ref_88
2217
+ - id
2218
+ - name
2219
+ - type
2220
+ - status
2221
+ - config
2222
+ - createdAt
2223
+ properties: &ref_89
2224
+ id:
2225
+ type: string
2226
+ description: 活动 ID
2227
+ name:
2228
+ type: string
2229
+ description: 活动名称
2230
+ type:
2231
+ type: string
2232
+ enum:
2233
+ - signin
2234
+ - lottery
2235
+ - redpack
2236
+ - coupon
2237
+ - custom
2238
+ description: 活动类型
2239
+ status:
2240
+ type: string
2241
+ enum:
2242
+ - draft
2243
+ - scheduled
2244
+ - active
2245
+ - paused
2246
+ - ended
2247
+ description: 活动状态
2248
+ description:
2249
+ type: string
2250
+ description: 活动描述
2251
+ config:
2252
+ type: object
2253
+ additionalProperties: true
2254
+ description: 活动配置
2255
+ rules:
2256
+ type: object
2257
+ additionalProperties: true
2258
+ description: 活动规则
2259
+ startTime:
2260
+ type: string
2261
+ format: date-time
2262
+ description: 开始时间
2263
+ endTime:
2264
+ type: string
2265
+ format: date-time
2266
+ description: 结束时间
2267
+ createdAt:
2268
+ type: string
2269
+ format: date-time
2270
+ description: 创建时间
2271
+ updatedAt:
2272
+ type: string
2273
+ format: date-time
2274
+ description: 更新时间
2275
+ createdBy:
2276
+ type: string
2277
+ description: 创建者 ID
2278
+ '404':
2279
+ description: 资源不存在
2280
+ content: *ref_10
2281
+ put:
2282
+ tags:
2283
+ - Activities
2284
+ summary: 更新活动
2285
+ operationId: updateActivity
2286
+ parameters:
2287
+ - name: activityId
2288
+ in: path
2289
+ required: true
2290
+ schema:
2291
+ type: string
2292
+ requestBody:
2293
+ required: true
2294
+ content:
2295
+ application/json:
2296
+ schema:
2297
+ type: object
2298
+ properties: &ref_90
2299
+ name:
2300
+ type: string
2301
+ minLength: 1
2302
+ maxLength: 255
2303
+ description: 活动名称
2304
+ description:
2305
+ type: string
2306
+ maxLength: 1024
2307
+ description: 活动描述
2308
+ config:
2309
+ type: object
2310
+ additionalProperties: true
2311
+ description: 活动配置
2312
+ rules:
2313
+ type: object
2314
+ additionalProperties: true
2315
+ description: 活动规则
2316
+ startTime:
2317
+ type: string
2318
+ format: date-time
2319
+ description: 开始时间
2320
+ endTime:
2321
+ type: string
2322
+ format: date-time
2323
+ description: 结束时间
2324
+ responses:
2325
+ '200':
2326
+ description: 更新成功
2327
+ content:
2328
+ application/json:
2329
+ schema:
2330
+ type: object
2331
+ properties:
2332
+ success:
2333
+ type: boolean
2334
+ data:
2335
+ type: object
2336
+ required: *ref_36
2337
+ properties: *ref_37
2338
+ delete:
2339
+ tags:
2340
+ - Activities
2341
+ summary: 删除活动
2342
+ operationId: deleteActivity
2343
+ parameters:
2344
+ - name: activityId
2345
+ in: path
2346
+ required: true
2347
+ schema:
2348
+ type: string
2349
+ responses:
2350
+ '204':
2351
+ description: 删除成功
2352
+ /activities/{activityId}/status:
2353
+ put:
2354
+ tags:
2355
+ - Activities
2356
+ summary: 更新活动状态
2357
+ operationId: updateActivityStatus
2358
+ parameters:
2359
+ - name: activityId
2360
+ in: path
2361
+ required: true
2362
+ schema:
2363
+ type: string
2364
+ requestBody:
2365
+ required: true
2366
+ content:
2367
+ application/json:
2368
+ schema:
2369
+ type: object
2370
+ required:
2371
+ - status
2372
+ properties:
2373
+ status:
2374
+ type: string
2375
+ enum:
2376
+ - scheduled
2377
+ - active
2378
+ - paused
2379
+ - ended
2380
+ - archived
2381
+ reason:
2382
+ type: string
2383
+ responses:
2384
+ '200':
2385
+ description: 更新成功
2386
+ content:
2387
+ application/json:
2388
+ schema:
2389
+ type: object
2390
+ properties:
2391
+ success:
2392
+ type: boolean
2393
+ data:
2394
+ type: object
2395
+ required: *ref_36
2396
+ properties: *ref_37
2397
+ /activities/{activityId}/stats:
2398
+ get:
2399
+ tags:
2400
+ - Activities
2401
+ summary: 获取活动统计
2402
+ operationId: getActivityStats
2403
+ parameters:
2404
+ - name: activityId
2405
+ in: path
2406
+ required: true
2407
+ schema:
2408
+ type: string
2409
+ - name: startDate
2410
+ in: query
2411
+ schema:
2412
+ type: string
2413
+ format: date
2414
+ - name: endDate
2415
+ in: query
2416
+ schema:
2417
+ type: string
2418
+ format: date
2419
+ responses:
2420
+ '200':
2421
+ description: 成功
2422
+ content:
2423
+ application/json:
2424
+ schema:
2425
+ type: object
2426
+ properties:
2427
+ success:
2428
+ type: boolean
2429
+ data:
2430
+ type: object
2431
+ properties: &ref_91
2432
+ totalParticipants:
2433
+ type: integer
2434
+ description: 总参与人数
2435
+ todayParticipants:
2436
+ type: integer
2437
+ description: 今日参与人数
2438
+ totalRewards:
2439
+ type: integer
2440
+ description: 总发放奖励数
2441
+ todayRewards:
2442
+ type: integer
2443
+ description: 今日发放奖励数
2444
+ conversionRate:
2445
+ type: number
2446
+ format: float
2447
+ description: 转化率
2448
+ /audit:
2449
+ get:
2450
+ tags:
2451
+ - Audit
2452
+ summary: 查询审计日志
2453
+ operationId: listAuditLogs
2454
+ parameters:
2455
+ - name: pageSize
2456
+ in: query
2457
+ schema:
2458
+ type: integer
2459
+ default: 50
2460
+ - name: pageToken
2461
+ in: query
2462
+ schema:
2463
+ type: string
2464
+ - name: actor
2465
+ in: query
2466
+ description: 操作者 ID
2467
+ schema:
2468
+ type: string
2469
+ - name: action
2470
+ in: query
2471
+ description: 操作类型
2472
+ schema:
2473
+ type: string
2474
+ enum:
2475
+ - page.publish
2476
+ - page.rollback
2477
+ - page.delete
2478
+ - component.block
2479
+ - component.deprecated
2480
+ - definition.publish
2481
+ - activity.create
2482
+ - activity.update
2483
+ - rollout.update
2484
+ - kill_switch.enable
2485
+ - kill_switch.disable
2486
+ - name: targetType
2487
+ in: query
2488
+ description: 目标类型
2489
+ schema:
2490
+ type: string
2491
+ enum:
2492
+ - page
2493
+ - component
2494
+ - activity
2495
+ - definition
2496
+ - rollout
2497
+ - kill_switch
2498
+ - name: targetId
2499
+ in: query
2500
+ description: 目标 ID
2501
+ schema:
2502
+ type: string
2503
+ - name: traceId
2504
+ in: query
2505
+ description: 链路追踪 ID
2506
+ schema:
2507
+ type: string
2508
+ - name: startTime
2509
+ in: query
2510
+ description: 开始时间
2511
+ schema:
2512
+ type: string
2513
+ format: date-time
2514
+ - name: endTime
2515
+ in: query
2516
+ description: 结束时间
2517
+ schema:
2518
+ type: string
2519
+ format: date-time
2520
+ - name: riskLevel
2521
+ in: query
2522
+ description: 风险级别
2523
+ schema:
2524
+ type: string
2525
+ enum:
2526
+ - low
2527
+ - medium
2528
+ - high
2529
+ - critical
2530
+ responses:
2531
+ '200':
2532
+ description: 成功
2533
+ content:
2534
+ application/json:
2535
+ schema:
2536
+ type: object
2537
+ properties:
2538
+ success:
2539
+ type: boolean
2540
+ data:
2541
+ type: array
2542
+ items:
2543
+ type: object
2544
+ required: &ref_92
2545
+ - id
2546
+ - action
2547
+ - resource
2548
+ - timestamp
2549
+ properties: &ref_93
2550
+ id:
2551
+ type: string
2552
+ description: 日志 ID
2553
+ action:
2554
+ type: string
2555
+ description: 操作类型
2556
+ resource:
2557
+ type: string
2558
+ description: 资源类型
2559
+ resourceId:
2560
+ type: string
2561
+ description: 资源 ID
2562
+ userId:
2563
+ type: string
2564
+ description: 操作用户 ID
2565
+ userName:
2566
+ type: string
2567
+ description: 操作用户名
2568
+ timestamp:
2569
+ type: string
2570
+ format: date-time
2571
+ description: 操作时间
2572
+ status:
2573
+ type: string
2574
+ enum:
2575
+ - success
2576
+ - failed
2577
+ description: 操作状态
2578
+ meta:
2579
+ type: object
2580
+ required: *ref_15
2581
+ properties: *ref_16
2582
+ '401':
2583
+ description: 未授权
2584
+ content: *ref_4
2585
+ '403':
2586
+ description: 权限不足
2587
+ content: &ref_40
2588
+ application/json:
2589
+ schema:
2590
+ type: object
2591
+ required: *ref_0
2592
+ properties: *ref_1
2593
+ example:
2594
+ code: FORBIDDEN
2595
+ message: 您没有权限执行此操作
2596
+ /audit/{auditId}:
2597
+ get:
2598
+ tags:
2599
+ - Audit
2600
+ summary: 获取审计日志详情
2601
+ operationId: getAuditLog
2602
+ parameters:
2603
+ - name: auditId
2604
+ in: path
2605
+ required: true
2606
+ schema:
2607
+ type: string
2608
+ responses:
2609
+ '200':
2610
+ description: 成功
2611
+ content:
2612
+ application/json:
2613
+ schema:
2614
+ type: object
2615
+ properties:
2616
+ success:
2617
+ type: boolean
2618
+ data:
2619
+ type: object
2620
+ required: &ref_94
2621
+ - id
2622
+ - action
2623
+ - resource
2624
+ - timestamp
2625
+ properties: &ref_95
2626
+ id:
2627
+ type: string
2628
+ description: 日志 ID
2629
+ action:
2630
+ type: string
2631
+ description: 操作类型
2632
+ resource:
2633
+ type: string
2634
+ description: 资源类型
2635
+ resourceId:
2636
+ type: string
2637
+ description: 资源 ID
2638
+ userId:
2639
+ type: string
2640
+ description: 操作用户 ID
2641
+ userName:
2642
+ type: string
2643
+ description: 操作用户名
2644
+ timestamp:
2645
+ type: string
2646
+ format: date-time
2647
+ description: 操作时间
2648
+ status:
2649
+ type: string
2650
+ enum:
2651
+ - success
2652
+ - failed
2653
+ description: 操作状态
2654
+ changes:
2655
+ type: object
2656
+ properties:
2657
+ before:
2658
+ type: object
2659
+ additionalProperties: true
2660
+ description: 变更前数据
2661
+ after:
2662
+ type: object
2663
+ additionalProperties: true
2664
+ description: 变更后数据
2665
+ metadata:
2666
+ type: object
2667
+ additionalProperties: true
2668
+ description: 元数据
2669
+ ipAddress:
2670
+ type: string
2671
+ description: IP 地址
2672
+ userAgent:
2673
+ type: string
2674
+ description: User Agent
2675
+ '404':
2676
+ description: 资源不存在
2677
+ content: *ref_10
2678
+ /audit/stats:
2679
+ get:
2680
+ tags:
2681
+ - Audit
2682
+ summary: 获取审计统计
2683
+ operationId: getAuditStats
2684
+ parameters:
2685
+ - name: startDate
2686
+ in: query
2687
+ required: true
2688
+ schema:
2689
+ type: string
2690
+ format: date
2691
+ - name: endDate
2692
+ in: query
2693
+ required: true
2694
+ schema:
2695
+ type: string
2696
+ format: date
2697
+ - name: groupBy
2698
+ in: query
2699
+ schema:
2700
+ type: string
2701
+ enum:
2702
+ - action
2703
+ - actor
2704
+ - targetType
2705
+ - riskLevel
2706
+ default: action
2707
+ responses:
2708
+ '200':
2709
+ description: 成功
2710
+ content:
2711
+ application/json:
2712
+ schema:
2713
+ type: object
2714
+ properties:
2715
+ success:
2716
+ type: boolean
2717
+ data:
2718
+ type: object
2719
+ properties: &ref_96
2720
+ totalLogs:
2721
+ type: integer
2722
+ description: 总日志数
2723
+ todayLogs:
2724
+ type: integer
2725
+ description: 今日日志数
2726
+ actionBreakdown:
2727
+ type: object
2728
+ additionalProperties:
2729
+ type: integer
2730
+ description: 按操作类型统计
2731
+ resourceBreakdown:
2732
+ type: object
2733
+ additionalProperties:
2734
+ type: integer
2735
+ description: 按资源类型统计
2736
+ /operations/kill-switch:
2737
+ get:
2738
+ tags:
2739
+ - Operations
2740
+ operationId: getKillSwitchStatus
2741
+ summary: 获取 Kill Switch 状态
2742
+ description: 获取全局 Kill Switch 状态
2743
+ responses:
2744
+ '200':
2745
+ description: 成功
2746
+ content:
2747
+ application/json:
2748
+ schema:
2749
+ type: object
2750
+ required: &ref_38
2751
+ - data
2752
+ properties: &ref_39
2753
+ data:
2754
+ type: object
2755
+ required:
2756
+ - enabled
2757
+ properties:
2758
+ enabled:
2759
+ type: boolean
2760
+ description: 是否启用全局 Kill Switch
2761
+ enabledAt:
2762
+ type: string
2763
+ format: date-time
2764
+ description: 启用时间
2765
+ enabledBy:
2766
+ type: string
2767
+ description: 启用者 ID
2768
+ reason:
2769
+ type: string
2770
+ description: 启用原因
2771
+ affectedPages:
2772
+ type: integer
2773
+ description: 受影响的页面数量
2774
+ '401':
2775
+ description: 未授权
2776
+ content: *ref_4
2777
+ '500':
2778
+ description: 服务器内部错误
2779
+ content: *ref_5
2780
+ put:
2781
+ tags:
2782
+ - Operations
2783
+ operationId: setGlobalKillSwitch
2784
+ summary: 设置全局 Kill Switch
2785
+ description: 启用或禁用全局 Kill Switch(紧急停用所有页面)
2786
+ requestBody:
2787
+ required: true
2788
+ content:
2789
+ application/json:
2790
+ schema:
2791
+ type: object
2792
+ required: &ref_41
2793
+ - enabled
2794
+ properties: &ref_42
2795
+ enabled:
2796
+ type: boolean
2797
+ description: 是否启用 Kill Switch
2798
+ reason:
2799
+ type: string
2800
+ maxLength: 1024
2801
+ description: 原因
2802
+ fallbackUrl:
2803
+ type: string
2804
+ format: uri
2805
+ description: 降级跳转 URL(仅页面级别)
2806
+ responses:
2807
+ '200':
2808
+ description: 设置成功
2809
+ content:
2810
+ application/json:
2811
+ schema:
2812
+ type: object
2813
+ required: *ref_38
2814
+ properties: *ref_39
2815
+ '400':
2816
+ description: 请求参数错误
2817
+ content: *ref_9
2818
+ '401':
2819
+ description: 未授权
2820
+ content: *ref_4
2821
+ '403':
2822
+ description: 权限不足
2823
+ content: *ref_40
2824
+ '500':
2825
+ description: 服务器内部错误
2826
+ content: *ref_5
2827
+ /operations/kill-switch/{pageId}:
2828
+ get:
2829
+ tags:
2830
+ - Operations
2831
+ operationId: getPageKillSwitchStatus
2832
+ summary: 获取页面 Kill Switch 状态
2833
+ description: 获取指定页面的 Kill Switch 状态
2834
+ parameters:
2835
+ - name: pageId
2836
+ in: path
2837
+ required: true
2838
+ schema: *ref_8
2839
+ description: 页面 ID
2840
+ responses:
2841
+ '200':
2842
+ description: 成功
2843
+ content:
2844
+ application/json:
2845
+ schema:
2846
+ type: object
2847
+ required: &ref_43
2848
+ - data
2849
+ properties: &ref_44
2850
+ data:
2851
+ type: object
2852
+ required:
2853
+ - pageId
2854
+ - enabled
2855
+ properties:
2856
+ pageId:
2857
+ type: string
2858
+ description: 页面 ID
2859
+ enabled:
2860
+ type: boolean
2861
+ description: 是否启用 Kill Switch
2862
+ enabledAt:
2863
+ type: string
2864
+ format: date-time
2865
+ description: 启用时间
2866
+ enabledBy:
2867
+ type: string
2868
+ description: 启用者 ID
2869
+ reason:
2870
+ type: string
2871
+ description: 启用原因
2872
+ fallbackUrl:
2873
+ type: string
2874
+ format: uri
2875
+ description: 降级跳转 URL
2876
+ '401':
2877
+ description: 未授权
2878
+ content: *ref_4
2879
+ '404':
2880
+ description: 资源不存在
2881
+ content: *ref_10
2882
+ '500':
2883
+ description: 服务器内部错误
2884
+ content: *ref_5
2885
+ put:
2886
+ tags:
2887
+ - Operations
2888
+ operationId: setPageKillSwitch
2889
+ summary: 设置页面 Kill Switch
2890
+ description: 启用或禁用指定页面的 Kill Switch
2891
+ parameters:
2892
+ - name: pageId
2893
+ in: path
2894
+ required: true
2895
+ schema: *ref_8
2896
+ description: 页面 ID
2897
+ requestBody:
2898
+ required: true
2899
+ content:
2900
+ application/json:
2901
+ schema:
2902
+ type: object
2903
+ required: *ref_41
2904
+ properties: *ref_42
2905
+ responses:
2906
+ '200':
2907
+ description: 设置成功
2908
+ content:
2909
+ application/json:
2910
+ schema:
2911
+ type: object
2912
+ required: *ref_43
2913
+ properties: *ref_44
2914
+ '400':
2915
+ description: 请求参数错误
2916
+ content: *ref_9
2917
+ '401':
2918
+ description: 未授权
2919
+ content: *ref_4
2920
+ '403':
2921
+ description: 权限不足
2922
+ content: *ref_40
2923
+ '404':
2924
+ description: 资源不存在
2925
+ content: *ref_10
2926
+ '500':
2927
+ description: 服务器内部错误
2928
+ content: *ref_5
2929
+ components:
2930
+ schemas:
2931
+ PageInfo:
2932
+ type: object
2933
+ required: *ref_2
2934
+ properties: *ref_3
2935
+ PaginationMeta:
2936
+ type: object
2937
+ required: *ref_15
2938
+ properties: *ref_16
2939
+ PageListResponse:
2940
+ type: object
2941
+ required: *ref_45
2942
+ properties: *ref_46
2943
+ ErrorDetail:
2944
+ type: object
2945
+ properties: *ref_47
2946
+ ErrorResponse:
2947
+ type: object
2948
+ required: *ref_0
2949
+ properties: *ref_1
2950
+ CreatePageRequest:
2951
+ type: object
2952
+ required: *ref_48
2953
+ properties: *ref_49
2954
+ PageResponse:
2955
+ type: object
2956
+ required: *ref_6
2957
+ properties: *ref_7
2958
+ UpdatePageRequest:
2959
+ type: object
2960
+ properties: *ref_50
2961
+ LockInfo:
2962
+ type: object
2963
+ properties: *ref_51
2964
+ DraftData:
2965
+ type: object
2966
+ required: *ref_52
2967
+ properties: *ref_53
2968
+ DraftResponse:
2969
+ type: object
2970
+ required: *ref_11
2971
+ properties: *ref_12
2972
+ SaveDraftRequest:
2973
+ type: object
2974
+ required: *ref_54
2975
+ properties: *ref_55
2976
+ VersionInfo:
2977
+ type: object
2978
+ required: *ref_17
2979
+ properties: *ref_18
2980
+ VersionListResponse:
2981
+ type: object
2982
+ required: *ref_56
2983
+ properties: *ref_57
2984
+ VersionResponse:
2985
+ type: object
2986
+ required: *ref_58
2987
+ properties: *ref_59
2988
+ RolloutConfig:
2989
+ type: object
2990
+ properties: *ref_26
2991
+ PublishRequest:
2992
+ type: object
2993
+ properties: *ref_60
2994
+ PublishResponse:
2995
+ type: object
2996
+ required: *ref_20
2997
+ properties: *ref_21
2998
+ RollbackRequest:
2999
+ type: object
3000
+ required: *ref_61
3001
+ properties: *ref_62
3002
+ ComponentInfo:
3003
+ type: object
3004
+ required: *ref_63
3005
+ properties: *ref_64
3006
+ ComponentListResponse:
3007
+ type: object
3008
+ required: *ref_65
3009
+ properties: *ref_66
3010
+ ComponentVersionInfo:
3011
+ type: object
3012
+ required: *ref_24
3013
+ properties: *ref_25
3014
+ ComponentVersionListResponse:
3015
+ type: object
3016
+ required: *ref_67
3017
+ properties: *ref_68
3018
+ UpdateComponentStatusRequest:
3019
+ type: object
3020
+ required: *ref_69
3021
+ properties: *ref_70
3022
+ ComponentVersionResponse:
3023
+ type: object
3024
+ required: *ref_71
3025
+ properties: *ref_72
3026
+ UpdateRolloutRequest:
3027
+ type: object
3028
+ properties: *ref_73
3029
+ AddRolloutStrategyRequest:
3030
+ type: object
3031
+ required: *ref_74
3032
+ properties: *ref_75
3033
+ RolloutStrategy:
3034
+ type: object
3035
+ required: *ref_27
3036
+ properties: *ref_28
3037
+ UpdateRolloutStrategyRequest:
3038
+ type: object
3039
+ properties: *ref_76
3040
+ ActionDefinitionInfo:
3041
+ type: object
3042
+ required: *ref_29
3043
+ properties: *ref_30
3044
+ CreateActionDefinitionRequest:
3045
+ type: object
3046
+ required: *ref_77
3047
+ properties: *ref_78
3048
+ DefinitionVersionInfo:
3049
+ type: object
3050
+ required: *ref_31
3051
+ properties: *ref_32
3052
+ ActionDefinitionDetail:
3053
+ type: object
3054
+ required: *ref_79
3055
+ properties: *ref_80
3056
+ UpdateActionDefinitionRequest:
3057
+ type: object
3058
+ properties: *ref_81
3059
+ PublishDefinitionVersionRequest:
3060
+ type: object
3061
+ properties: *ref_35
3062
+ DataQueryDefinitionInfo:
3063
+ type: object
3064
+ required: *ref_33
3065
+ properties: *ref_34
3066
+ CreateDataQueryDefinitionRequest:
3067
+ type: object
3068
+ required: *ref_82
3069
+ properties: *ref_83
3070
+ DataQueryDefinitionDetail:
3071
+ type: object
3072
+ required: *ref_84
3073
+ properties: *ref_85
3074
+ ActivityInfo:
3075
+ type: object
3076
+ required: *ref_36
3077
+ properties: *ref_37
3078
+ CreateActivityRequest:
3079
+ type: object
3080
+ required: *ref_86
3081
+ properties: *ref_87
3082
+ ActivityDetail:
3083
+ type: object
3084
+ required: *ref_88
3085
+ properties: *ref_89
3086
+ UpdateActivityRequest:
3087
+ type: object
3088
+ properties: *ref_90
3089
+ ActivityStats:
3090
+ type: object
3091
+ properties: *ref_91
3092
+ AuditLogEntry:
3093
+ type: object
3094
+ required: *ref_92
3095
+ properties: *ref_93
3096
+ AuditLogDetail:
3097
+ type: object
3098
+ required: *ref_94
3099
+ properties: *ref_95
3100
+ AuditStats:
3101
+ type: object
3102
+ properties: *ref_96
3103
+ KillSwitchStatusResponse:
3104
+ type: object
3105
+ required: *ref_38
3106
+ properties: *ref_39
3107
+ SetKillSwitchRequest:
3108
+ type: object
3109
+ required: *ref_41
3110
+ properties: *ref_42
3111
+ PageKillSwitchStatusResponse:
3112
+ type: object
3113
+ required: *ref_43
3114
+ properties: *ref_44
3115
+ responses:
3116
+ Unauthorized:
3117
+ description: 未授权
3118
+ content: *ref_4
3119
+ InternalError:
3120
+ description: 服务器内部错误
3121
+ content: *ref_5
3122
+ BadRequest:
3123
+ description: 请求参数错误
3124
+ content: *ref_9
3125
+ NotFound:
3126
+ description: 资源不存在
3127
+ content: *ref_10
3128
+ Conflict:
3129
+ description: 资源冲突
3130
+ content: *ref_19
3131
+ Forbidden:
3132
+ description: 权限不足
3133
+ content: *ref_40
3134
+ parameters:
3135
+ PageParam:
3136
+ name: page
3137
+ in: query
3138
+ schema: *ref_13
3139
+ description: 页码
3140
+ LimitParam:
3141
+ name: limit
3142
+ in: query
3143
+ schema: *ref_14
3144
+ description: 每页数量
3145
+ PageIdPath:
3146
+ name: pageId
3147
+ in: path
3148
+ required: true
3149
+ schema: *ref_8
3150
+ description: 页面 ID
3151
+ VersionIdPath:
3152
+ name: versionId
3153
+ in: path
3154
+ required: true
3155
+ schema: *ref_23
3156
+ description: 版本 ID
3157
+ ComponentIdPath:
3158
+ name: componentId
3159
+ in: path
3160
+ required: true
3161
+ schema: *ref_22
3162
+ description: 组件 ID
3163
+ securitySchemes:
3164
+ BearerAuth:
3165
+ type: http
3166
+ scheme: bearer
3167
+ bearerFormat: JWT
3168
+ description: JWT 认证令牌