Skip to content

Commit 731cb70

Browse files
fix(openapi): standardize api paths and relax operator constraints
unify api paths for item management and simplify items:compare and items:sync endpoints make operator optional in endpoints and schemas, move to query param where needed refine items:validate response schema and add operationId for better client generation
1 parent f42e69c commit 731cb70

File tree

58 files changed

+426
-798
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+426
-798
lines changed

apollo-openapi.yaml

Lines changed: 27 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -566,13 +566,13 @@ paths:
566566
type: string
567567
example:
568568
message: 'App not found'
569-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}:
569+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}:
570570
get:
571571
summary: 获取单个配置项
572572
deprecated: false
573573
description: >-
574574
GET
575-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}
575+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}
576576
tags:
577577
- Item Management
578578
parameters:
@@ -639,7 +639,7 @@ paths:
639639
deprecated: false
640640
description: >-
641641
PUT
642-
/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}
642+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}
643643
tags:
644644
- Item Management
645645
parameters:
@@ -744,7 +744,7 @@ paths:
744744
deprecated: false
745745
description: >-
746746
DELETE
747-
/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}
747+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}
748748
tags:
749749
- Item Management
750750
parameters:
@@ -781,7 +781,7 @@ paths:
781781
- name: operator
782782
in: query
783783
description: 操作人用户名
784-
required: true
784+
required: false
785785
schema:
786786
type: string
787787
responses:
@@ -793,7 +793,7 @@ paths:
793793
type: object
794794
properties: {}
795795
headers: {}
796-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:
796+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items:
797797
get:
798798
summary: 获取命名空间下的配置项列表
799799
deprecated: false
@@ -892,7 +892,7 @@ paths:
892892
deprecated: false
893893
description: >-
894894
POST
895-
/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items
895+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items
896896
tags:
897897
- Item Management
898898
parameters:
@@ -972,13 +972,13 @@ paths:
972972
type: string
973973
example:
974974
message: 'Access is denied'
975-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/encodedItems/{key}:
975+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/encodedItems/{key}:
976976
get:
977977
summary: 通过查询参数获取配置项(支持编码的key)
978978
deprecated: false
979979
description: >-
980980
GET
981-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/encodedItems/{key}
981+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/encodedItems/{key}
982982
tags:
983983
- Item Management
984984
parameters:
@@ -1187,7 +1187,7 @@ paths:
11871187
- name: operator
11881188
in: query
11891189
description: ''
1190-
required: true
1190+
required: false
11911191
schema:
11921192
type: string
11931193
responses:
@@ -1199,7 +1199,7 @@ paths:
11991199
type: object
12001200
properties: {}
12011201
headers: {}
1202-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:batchUpdate:
1202+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items:batchUpdate:
12031203
put:
12041204
summary: 通过文本批量修改配置项
12051205
deprecated: false
@@ -1241,7 +1241,6 @@ paths:
12411241
allOf:
12421242
- $ref: '#/components/schemas/OpenNamespaceTextModel'
12431243
required:
1244-
- operator
12451244
- format
12461245
- configText
12471246
description: 批量更新配置文本请求体
@@ -1258,17 +1257,6 @@ paths:
12581257
type: string
12591258
example:
12601259
message: 'Batch update configuration items successfully'
1261-
'400':
1262-
description: '请求参数错误'
1263-
content:
1264-
application/json:
1265-
schema:
1266-
type: object
1267-
properties:
1268-
message:
1269-
type: string
1270-
example:
1271-
message: 'operator should not be null or empty'
12721260
'403':
12731261
description: '权限不足'
12741262
content:
@@ -1281,13 +1269,13 @@ paths:
12811269
example:
12821270
message: 'Access is denied'
12831271
headers: {}
1284-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/items:
1272+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/items:
12851273
get:
12861274
summary: 获取分支下的配置项
12871275
deprecated: false
12881276
description: >-
12891277
GET
1290-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/items
1278+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/items
12911279
tags:
12921280
- Namespace Branch Management
12931281
parameters:
@@ -1359,13 +1347,13 @@ paths:
13591347
type: string
13601348
example:
13611349
message: 'Branch not found'
1362-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:compare:
1350+
/openapi/v1/namespaces/items:compare:
13631351
post:
13641352
summary: 对比命名空间配置差异
13651353
deprecated: false
13661354
description: >-
13671355
POST
1368-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:compare
1356+
/openapi/v1/namespaces/items:compare
13691357
tags:
13701358
- Item Management
13711359
parameters:
@@ -1471,13 +1459,13 @@ paths:
14711459
lineNum: 0
14721460
extInfo: ''
14731461
headers: {}
1474-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:sync:
1462+
/openapi/v1/apps/{appId}/namespaces/{namespaceName}/items:sync:
14751463
post:
14761464
summary: 同步配置项到多个命名空间
14771465
deprecated: false
14781466
description: >-
14791467
POST
1480-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:sync
1468+
/openapi/v1/apps/{appId}/namespaces/{namespaceName}/items:sync
14811469
tags:
14821470
- Item Management
14831471
parameters:
@@ -1493,12 +1481,6 @@ paths:
14931481
required: true
14941482
schema:
14951483
type: string
1496-
- name: clusterName
1497-
in: path
1498-
description: 集群名称
1499-
required: true
1500-
schema:
1501-
type: string
15021484
- name: namespaceName
15031485
in: path
15041486
description: 命名空间名称
@@ -1552,13 +1534,14 @@ paths:
15521534
example:
15531535
message: 'Access is denied'
15541536
headers: {}
1555-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:validate:
1537+
/openapi/apps/{appId}/env/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items:validate:
15561538
post:
15571539
summary: 验证配置文本语法
1540+
operationId: validateItems
15581541
deprecated: false
15591542
description: >-
15601543
POST
1561-
/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:validate
1544+
/openapi/apps/{appId}/env/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items:validate
15621545
tags:
15631546
- Item Management
15641547
parameters:
@@ -1606,12 +1589,9 @@ paths:
16061589
schema:
16071590
type: object
16081591
properties:
1609-
valid:
1610-
type: boolean
16111592
message:
16121593
type: string
16131594
example:
1614-
valid: true
16151595
message: 'Configuration syntax is valid'
16161596
'400':
16171597
description: '配置文本语法错误'
@@ -1620,28 +1600,18 @@ paths:
16201600
schema:
16211601
type: object
16221602
properties:
1623-
valid:
1624-
type: boolean
16251603
message:
16261604
type: string
1627-
errors:
1628-
type: array
1629-
items:
1630-
type: string
16311605
example:
1632-
valid: false
16331606
message: 'Configuration syntax validation failed'
1634-
errors:
1635-
- 'Line 3: Invalid property format'
1636-
- 'Line 7: Missing value for key "database.port"'
16371607
headers: {}
1638-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:revert:
1608+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items:revert:
16391609
post:
16401610
summary: 撤销配置项更改
16411611
deprecated: false
16421612
description: >-
16431613
POST
1644-
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items:revert
1614+
/openapi/v1/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items:revert
16451615
tags:
16461616
- Item Management
16471617
parameters:
@@ -2321,7 +2291,7 @@ paths:
23212291
- name: operator
23222292
in: query
23232293
description: 操作人用户名
2324-
required: true
2294+
required: false
23252295
schema:
23262296
type: string
23272297
responses:
@@ -3497,7 +3467,7 @@ paths:
34973467
- name: operator
34983468
in: query
34993469
description: 操作人用户名
3500-
required: true
3470+
required: false
35013471
schema:
35023472
type: string
35033473
responses:
@@ -3571,7 +3541,7 @@ paths:
35713541
- name: operator
35723542
in: query
35733543
description: 操作人用户名
3574-
required: true
3544+
required: false
35753545
schema:
35763546
type: string
35773547
responses:
@@ -3632,12 +3602,6 @@ paths:
36323602
example: 'true'
36333603
schema:
36343604
type: boolean
3635-
- name: X-Apollo-Operator
3636-
in: header
3637-
description: 操作人用户名
3638-
required: true
3639-
schema:
3640-
type: string
36413605
requestBody:
36423606
content:
36433607
application/json:
@@ -3774,9 +3738,9 @@ paths:
37743738
schema:
37753739
type: string
37763740
- name: operator
3777-
in: header
3741+
in: query
37783742
description: 操作人用户名
3779-
required: true
3743+
required: false
37803744
schema:
37813745
type: string
37823746
requestBody:

spring-boot2/.openapi-generator/FILES

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ src/main/java/com/apollo/openapi/server/model/OpenReleaseDTO.java
5959
src/main/java/com/apollo/openapi/server/model/OpenapiV1AppsGet401Response.java
6060
src/main/java/com/apollo/openapi/server/model/OpenapiV1AppsPost400Response.java
6161
src/main/java/com/apollo/openapi/server/model/OpenapiV1AppsPostRequest.java
62-
src/main/java/com/apollo/openapi/server/model/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost200Response.java
63-
src/main/java/com/apollo/openapi/server/model/OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameItemsValidatePost400Response.java
6462
src/main/resources/application.properties
6563
src/main/resources/openapi.yaml
6664
src/test/java/com/apollo/openapi/server/OpenApiGeneratorApplicationTests.java

spring-boot2/src/main/java/com/apollo/openapi/server/api/AppManagementApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import java.util.Map;
3737
import javax.annotation.Generated;
3838

39-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
39+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
4040
@Validated
4141
@Tag(name = "App Management", description = "应用管理相关接口,包括应用的创建、查询、更新、删除等操作")
4242
public interface AppManagementApi {

spring-boot2/src/main/java/com/apollo/openapi/server/api/AppManagementApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.util.Optional;
3333
import javax.annotation.Generated;
3434

35-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
35+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
3636
@Controller
3737
@RequestMapping("${openapi.apolloOpen.base-path:}")
3838
public class AppManagementApiController implements AppManagementApi {

spring-boot2/src/main/java/com/apollo/openapi/server/api/AppManagementApiDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* A delegate to be called by the {@link AppManagementApiController}}.
2626
* Implement this interface with a {@link org.springframework.stereotype.Service} annotated class.
2727
*/
28-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
28+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
2929
public interface AppManagementApiDelegate {
3030

3131
default Optional<NativeWebRequest> getRequest() {

spring-boot2/src/main/java/com/apollo/openapi/server/api/ClusterManagementApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.util.Map;
3333
import javax.annotation.Generated;
3434

35-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
35+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
3636
@Validated
3737
@Tag(name = "Cluster Management", description = "集群管理相关接口,包括集群的创建、查询、删除等操作")
3838
public interface ClusterManagementApi {

spring-boot2/src/main/java/com/apollo/openapi/server/api/ClusterManagementApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import java.util.Optional;
2929
import javax.annotation.Generated;
3030

31-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
31+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
3232
@Controller
3333
@RequestMapping("${openapi.apolloOpen.base-path:}")
3434
public class ClusterManagementApiController implements ClusterManagementApi {

spring-boot2/src/main/java/com/apollo/openapi/server/api/ClusterManagementApiDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* A delegate to be called by the {@link ClusterManagementApiController}}.
2222
* Implement this interface with a {@link org.springframework.stereotype.Service} annotated class.
2323
*/
24-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
24+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
2525
public interface ClusterManagementApiDelegate {
2626

2727
default Optional<NativeWebRequest> getRequest() {

spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import java.util.Map;
3232
import javax.annotation.Generated;
3333

34-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
34+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
3535
@Validated
3636
@Tag(name = "Instance Management", description = "实例管理相关接口,包括实例查询、配置生效状态等功能")
3737
public interface InstanceManagementApi {

spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.Optional;
2828
import javax.annotation.Generated;
2929

30-
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-24T12:04:41.703370+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
30+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-09-25T00:40:29.983824+08:00[Asia/Shanghai]", comments = "Generator version: 7.15.0")
3131
@Controller
3232
@RequestMapping("${openapi.apolloOpen.base-path:}")
3333
public class InstanceManagementApiController implements InstanceManagementApi {

0 commit comments

Comments
 (0)