Skip to content

Conversation

@tacklequestions
Copy link
Contributor

@tacklequestions tacklequestions commented Oct 21, 2025

Summary by CodeRabbit

Release Notes

  • New Features

    • Added getByRelease endpoint for querying instances by release ID with pagination support.
    • Added getByReleasesNotIn endpoint for querying instances while excluding specific releases.
  • Documentation

    • Updated API documentation and READMEs across all supported SDKs (Java, Python, TypeScript, Spring Boot) to reflect new endpoint availability.
  • Refactor

    • Renamed endpoint path from instances_not_int to instances_not_in for improved clarity.

@coderabbitai
Copy link

coderabbitai bot commented Oct 21, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

The pull request renames an OpenAPI endpoint path from instances_not_int to instances_not_in and adds explicit operation IDs (getByRelease and getByReleasesNotIn) to existing endpoints across OpenAPI specifications. Generated client and server code for Java, Python, TypeScript, and Spring Boot SDKs is regenerated and updated to reflect these naming improvements, with corresponding documentation and test updates.

Changes

Cohort / File(s) Summary
OpenAPI Specifications
apollo-openapi.yaml, java-client/api/openapi.yaml, spring-boot2/src/main/resources/openapi.yaml
Added operationIds getByRelease and getByReleasesNotIn to GET endpoints. Renamed endpoint path from instances_not_int to instances_not_in with updated descriptions.
Java Client Documentation
java-client/README.md, java-client/docs/InstanceManagementApi.md
Updated API endpoint documentation tables. Replaced verbose method names (openapiV1EnvsEnv...InstancesNotIntGet) with cleaner names (getByRelease, getByReleasesNotIn). Added parameter and return type documentation for new endpoints.
Java Client Implementation
java-client/src/main/java/org/openapitools/client/api/InstanceManagementApi.java, java-client/src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java
Renamed public methods and updated signatures to use new operation IDs. Changed parameters from (env, appId, clusterName, namespaceName) to (env, releaseId, page, size) for release-based endpoints. Updated test method names and invocations accordingly.
Python Path & API Mapping
python/apollo_openapi/apis/path_to_api.py, python/apollo_openapi/apis/tags/instance_management_api.py, python/apollo_openapi/paths/__init__.py
Updated import paths and enum members from INSTANCES_NOT_INT to INSTANCES_NOT_IN. Updated InstanceManagementApi class inheritance to use new mixin classes GetByRelease and GetByReleasesNotIn.
Python Release-based Endpoints
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py, python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.pyi
Renamed class from OpenapiV1EnvsEnvReleasesReleaseIdInstancesGet to GetByRelease. Renamed public methods and internal helpers to use consistent naming (get_by_release, _get_by_release_oapg).
Python Not-In Endpoints
python/apollo_openapi/apis/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in.py, python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in/{__init__.py,get.py,get.pyi}`
Renamed class and methods from verbose OpenapiV1EnvsEnvAppsAppIdClustersClusterNameNamespacesNamespaceNameInstancesNotIntGet to GetByReleasesNotIn. Updated internal helpers and method calls to use new naming.
Python Documentation & Tests
python/README.md, python/docs/apis/tags/InstanceManagementApi.md, python/test/test_paths/.../test_get.py
Updated endpoint documentation with new method names and descriptions. Renamed test class from TestOpenapiV1...InstancesNotInt to TestOpenapiV1...InstancesNotIn. Updated imports and docstrings.
Spring Boot Server API
spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java, spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java
Added getByRelease endpoint with signature (env, releaseId, page, size) returning paginated results. Renamed getByReleasesNotIn endpoint. Preserved getInstanceCountByNamespace for backward compatibility. Updated operationIds and endpoint descriptions.
TypeScript Client
typescript/src/apis/InstanceManagementApi.ts
Renamed request interfaces and methods to use cleaner operation IDs. Updated method signatures to reflect new parameters. Changed return types to match new endpoint semantics (e.g., OpenPageDTOOpenInstanceDTO for paginated results). Updated path construction for both release-based and not-in endpoints.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Rationale: While the pull request spans 20+ files across multiple SDKs (Java, Python, TypeScript, Spring Boot), the changes follow a highly consistent pattern—renaming operations, updating paths, and regenerating client code. The scope is broad but the refactoring is homogeneous and repetitive, reducing the cognitive load per file. Some structural changes (method signature updates, path remapping) require focused review but are uniform across implementations.

Poem

🐰 With whiskers twitching, I hippity-hop,
Through API paths that now sparkle and pop!
From not_int to not_in, the refactor's complete,
With getByRelease making naming so sweet!
Across Java, Python, and TypeScript we stride,
Cleaner IDs and smarter names—hop with pride! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title mentions two specific changes that are factually present in the changeset: the spelling correction of instances_not_int to instances_not_in, and the addition of operationId values to endpoints. However, these are relatively minor aspects of a much more extensive refactoring. The primary changes involve comprehensive API reorganization across multiple SDK implementations, including endpoint restructuring from namespace-based to release-based instance queries, extensive method and class renaming (e.g., getInstanceCountByNamespacegetByRelease), parameter signature modifications, return type changes, and the addition of a new comprehensive OpenAPI specification file. The title only addresses the surface-level fixes without capturing the substantial scope of the underlying API refactoring.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0815e4e and 826e53f.

📒 Files selected for processing (22)
  • apollo-openapi.yaml (2 hunks)
  • java-client/README.md (1 hunks)
  • java-client/api/openapi.yaml (2 hunks)
  • java-client/docs/InstanceManagementApi.md (9 hunks)
  • java-client/src/main/java/org/openapitools/client/api/InstanceManagementApi.java (11 hunks)
  • java-client/src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java (2 hunks)
  • python/README.md (1 hunks)
  • python/apollo_openapi/apis/path_to_api.py (3 hunks)
  • python/apollo_openapi/apis/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in.py (1 hunks)
  • python/apollo_openapi/apis/tags/instance_management_api.py (1 hunks)
  • python/apollo_openapi/paths/__init__.py (1 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in/__init__.py (1 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in/get.py (10 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in/get.pyi (10 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (10 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.pyi (10 hunks)
  • python/docs/apis/tags/InstanceManagementApi.md (7 hunks)
  • python/test/test_paths/test_openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_in/test_get.py (1 hunks)
  • spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java (5 hunks)
  • spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java (3 hunks)
  • spring-boot2/src/main/resources/openapi.yaml (2 hunks)
  • typescript/src/apis/InstanceManagementApi.ts (4 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (5)
python/docs/apis/tags/InstanceManagementApi.md (1)

156-156: Fix path in description to match renamed endpoint.

Use /instances_not_in in the GET example.

-GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3
+GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3
spring-boot2/src/main/resources/openapi.yaml (1)

2836-2920: Fix description to reflect new path and model excludeReleases as an array (CSV).

  • Description still shows the old /instances?excludeReleases=... path. Update to /instances_not_in?excludeReleases=... to avoid confusion.
  • excludeReleases should be an array of integers with style=form, explode=false to generate proper SDK types.

Suggested patch within this path item:

   /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in:
     get:
       deprecated: false
-      description: "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3"
+      description: "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3"
       operationId: getByReleasesNotIn
       parameters:
         ...
-      - description: 排除的发布ID列表,用逗号分隔
-        explode: true
-        in: query
-        name: excludeReleases
-        required: false
-        schema:
-          type: string
-        style: form
+      - description: 排除的发布ID列表(CSV: 1,2,3)
+        in: query
+        name: excludeReleases
+        required: false
+        style: form
+        explode: false
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int64
java-client/docs/InstanceManagementApi.md (1)

88-96: Update GET path text to match renamed endpoint.

The section still shows /.../namespaces/{namespaceName}/instances?excludeReleases=1,2,3. It should use /instances_not_in?excludeReleases=1,2,3.

-GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3
+GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3
spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java (1)

56-83: Description still references old path; update to /instances_not_in.

Match the spec and docs to avoid confusion.

- * GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3
+ * GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3
spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java (1)

91-118: Update description string to match new not-in path.

Keep the example description consistent with mapping.

-        description = "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3",
+        description = "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3",
🧹 Nitpick comments (12)
java-client/api/openapi.yaml (1)

2683-2683: Add min constraints to page/size for consistency.

Other paged endpoints use minimum: 0. Mirror that here.

       - description: ""
         example: 0
         explode: true
         in: query
         name: page
         required: true
         schema:
-          type: integer
+          minimum: 0
+          type: integer
         style: form
       - description: ""
         example: 20
         explode: true
         in: query
         name: size
         required: true
         schema:
-          type: integer
+          minimum: 0
+          type: integer
         style: form
java-client/src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java (2)

43-49: Provide non-null test params to avoid immediate ApiException.

Set minimal values for required args so tests can be enabled later.

-    public void getByReleaseTest() throws ApiException {
-        String env = null;
-        Integer releaseId = null;
-        Integer page = null;
-        Integer size = null;
+    public void getByReleaseTest() throws ApiException {
+        String env = "DEV";
+        Integer releaseId = 1;
+        Integer page = 0;
+        Integer size = 20;
         OpenPageDTOOpenInstanceDTO response = api.getByRelease(env, releaseId, page, size);

60-67: Update endpoint path in Javadoc.

The description should reference /instances_not_in.

- * GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3
+ * GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3
java-client/src/main/java/org/openapitools/client/api/InstanceManagementApi.java (1)

146-169: Consider making page/size optional with sane defaults.

If the API supports defaults, allow nulls and default to page=0,size=20 to improve ergonomics. If not, ignore.

python/docs/apis/tags/InstanceManagementApi.md (1)

1-1: Add python/docs/** to .markdownlintignore to exclude auto-generated documentation.

The file python/docs/apis/tags/InstanceManagementApi.md is auto-generated and contains HTML anchor tags (e.g., <a id="__pageTop"></a>) that may cause lint parsing issues with table and heading rules. Currently, no .markdownlintignore file exists, so these generated docs are being linted. Creating .markdownlintignore and adding python/docs/** would reduce lint noise from auto-generated files without requiring template modifications.

apollo-openapi.yaml (2)

2465-2473: Fix comment typo and align description with renamed path.

  • “avoidng confliction” → “avoiding conflict”.
  • Description still shows /instances?excludeReleases=…; update to /instances_not_in?excludeReleases=…

Apply:

-  /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in: # avoidng confliction with other server endpoint
+  /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in: # avoiding conflict with other server endpoint
@@
-      description: >-
-        GET
-        /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3
+      description: >-
+        GET
+        /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3

Also applies to: 2501-2506


2499-2506: Model excludeReleases as CSV array for better clients.

Declare it as an array with CSV serialization; generators will expose string[]/number[] instead of raw string.

-        - name: excludeReleases
-          in: query
-          description: '排除的发布ID列表,用逗号分隔'
-          required: false
-          schema:
-            type: string
+        - name: excludeReleases
+          in: query
+          description: '排除的发布ID列表'
+          required: false
+          style: form
+          explode: false
+          schema:
+            type: array
+            items:
+              type: integer
+              format: int64
spring-boot2/src/main/resources/openapi.yaml (1)

2759-2835: Add constraints and standard responses for getByRelease; align releaseId type.

  • releaseId likely maps to OpenReleaseDTO.id (int64). Prefer format: int64 for consistency.
  • page should be >= 0; size should be >= 1 (and ideally default + max).
  • Include common responses (401 unauthorized, 404 release not found) to aid client generation.

Suggested patch within this path item:

   /openapi/v1/envs/{env}/releases/{releaseId}/instances:
     get:
       deprecated: false
       description: "GET /openapi/v1/envs/{env}/releases/{releaseId}/instances"
       operationId: getByRelease
       parameters:
-      - description: ""
+      - description: 环境标识
         explode: false
         in: path
         name: env
         required: true
         schema:
           type: string
         style: simple
-      - description: ""
+      - description: 发布ID
         explode: false
         in: path
         name: releaseId
         required: true
         schema:
-          type: integer
+          type: integer
+          format: int64
         style: simple
-      - description: ""
+      - description: 页码,从0开始
         example: 0
         explode: true
         in: query
         name: page
         required: true
         schema:
-          type: integer
+          type: integer
+          minimum: 0
         style: form
-      - description: ""
+      - description: 每页数量
         example: 20
         explode: true
         in: query
         name: size
         required: true
         schema:
-          type: integer
+          type: integer
+          minimum: 1
         style: form
       responses:
         "200":
           content:
             application/json:
               example:
                 page: 0
                 size: 0
                 total: 0
                 content:
                 - id: 0
                   appId: ""
                   clusterName: ""
                   dataCenter: ""
                   ip: ""
                   configs:
                   - release:
                     ...
               schema:
                 $ref: '#/components/schemas/OpenPageDTOOpenInstanceDTO'
           description: ""
+        "401":
+          description: 未授权访问
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExceptionResponse'
+        "404":
+          description: 发布不存在
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ExceptionResponse'
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (1)

171-249: Rename is consistent and implementation is correct; minor cleanup possible.

Endpoint wiring, required param handling, and 200-deserialization look good. Optional cleanup: remove the duplicate import of typing_extensions at Lines 10 and 21 to appease linters.

-import typing_extensions
+import typing_extensions
...
-import typing_extensions  # noqa: F401
java-client/docs/InstanceManagementApi.md (1)

12-71: Consider using Long for releaseId and document page/size constraints.

  • releaseId maps to an ID that’s often int64; consider Long for Java clients.
  • Document page ≥ 0 and size ≥ 1 to match server validation once added.

No code change required here if you choose to keep Integer, but aligning types improves consistency.

spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java (1)

28-51: Guard against missing Accept header to avoid NPE in example response logic.

MediaType.parseMediaTypes(null) can NPE. Add a null-safe guard.

-        getRequest().ifPresent(request -> {
-            for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) {
+        getRequest().ifPresent(request -> {
+            final String accept = request.getHeader("Accept");
+            if (accept == null) {
+                return;
+            }
+            for (MediaType mediaType: MediaType.parseMediaTypes(accept)) {
                 if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
                     String exampleString = "{ ... }";
                     ApiUtil.setExampleResponse(request, "application/json", exampleString);
                     break;
                 }
             }
         });
spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java (1)

51-77: Validate page/size and consider Long for releaseId.

  • Add @min(0) for page and @min(1) for size to enforce constraints early.
  • Consider Long for releaseId to align with int64 IDs elsewhere.
-    default ResponseEntity<OpenPageDTOOpenInstanceDTO> getByRelease(
-        @Parameter(name = "env", description = "", required = true, in = ParameterIn.PATH) @PathVariable("env") String env,
-        @Parameter(name = "releaseId", description = "", required = true, in = ParameterIn.PATH) @PathVariable("releaseId") Integer releaseId,
-        @NotNull @Parameter(name = "page", description = "", required = true, in = ParameterIn.QUERY) @Valid @RequestParam(value = "page", required = true) Integer page,
-        @NotNull @Parameter(name = "size", description = "", required = true, in = ParameterIn.QUERY) @Valid @RequestParam(value = "size", required = true) Integer size
+    default ResponseEntity<OpenPageDTOOpenInstanceDTO> getByRelease(
+        @Parameter(name = "env", description = "", required = true, in = ParameterIn.PATH) @PathVariable("env") String env,
+        @Parameter(name = "releaseId", description = "", required = true, in = ParameterIn.PATH) @PathVariable("releaseId") Long releaseId,
+        @NotNull @Min(0) @Parameter(name = "page", description = "", required = true, in = ParameterIn.QUERY) @Valid @RequestParam(value = "page", required = true) Integer page,
+        @NotNull @Min(1) @Parameter(name = "size", description = "", required = true, in = ParameterIn.QUERY) @Valid @RequestParam(value = "size", required = true) Integer size
     ) {
         return getDelegate().getByRelease(env, releaseId, page, size);
     }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 03caac4 and 0815e4e.

📒 Files selected for processing (23)
  • apollo-openapi.yaml (2 hunks)
  • java-client/README.md (1 hunks)
  • java-client/api/openapi.yaml (2 hunks)
  • java-client/docs/InstanceManagementApi.md (9 hunks)
  • java-client/src/main/java/org/openapitools/client/api/InstanceManagementApi.java (11 hunks)
  • java-client/src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java (2 hunks)
  • python/README.md (1 hunks)
  • python/apollo_openapi/apis/path_to_api.py (3 hunks)
  • python/apollo_openapi/apis/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int.py (0 hunks)
  • python/apollo_openapi/apis/tags/instance_management_api.py (1 hunks)
  • python/apollo_openapi/paths/__init__.py (1 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/__init__.py (0 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/get.py (0 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/get.pyi (0 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (10 hunks)
  • python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.pyi (10 hunks)
  • python/docs/apis/tags/InstanceManagementApi.md (7 hunks)
  • python/test/test_paths/test_openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/__init__.py (0 hunks)
  • python/test/test_paths/test_openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/test_get.py (0 hunks)
  • spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java (5 hunks)
  • spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java (3 hunks)
  • spring-boot2/src/main/resources/openapi.yaml (2 hunks)
  • typescript/src/apis/InstanceManagementApi.ts (4 hunks)
💤 Files with no reviewable changes (6)
  • python/apollo_openapi/apis/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int.py
  • python/test/test_paths/test_openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/init.py
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/get.pyi
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/get.py
  • python/apollo_openapi/paths/openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/init.py
  • python/test/test_paths/test_openapi_v1_envs_env_apps_app_id_clusters_cluster_name_namespaces_namespace_name_instances_not_int/test_get.py
🧰 Additional context used
🧬 Code graph analysis (8)
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.pyi (1)
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (10)
  • _get_by_release_oapg (134-144)
  • _get_by_release_oapg (147-155)
  • _get_by_release_oapg (158-169)
  • _get_by_release_oapg (171-249)
  • GetByRelease (252-309)
  • BaseApi (132-249)
  • get_by_release (256-266)
  • get_by_release (269-277)
  • get_by_release (280-291)
  • get_by_release (293-309)
python/apollo_openapi/apis/tags/instance_management_api.py (2)
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (5)
  • get (316-326)
  • get (329-337)
  • get (340-351)
  • get (353-369)
  • GetByRelease (252-309)
typescript/src/apis/InstanceManagementApi.ts (1)
  • InstanceManagementApi (53-215)
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (1)
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.pyi (10)
  • _get_by_release_oapg (126-136)
  • _get_by_release_oapg (139-147)
  • _get_by_release_oapg (150-161)
  • _get_by_release_oapg (163-241)
  • GetByRelease (244-301)
  • BaseApi (124-241)
  • get_by_release (248-258)
  • get_by_release (261-269)
  • get_by_release (272-283)
  • get_by_release (285-301)
java-client/src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java (1)
typescript/src/apis/InstanceManagementApi.ts (3)
  • getByRelease (106-109)
  • getByReleasesNotIn (158-161)
  • getInstanceCountByNamespace (210-213)
spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java (1)
typescript/src/apis/InstanceManagementApi.ts (3)
  • getByRelease (106-109)
  • getByReleasesNotIn (158-161)
  • getInstanceCountByNamespace (210-213)
java-client/src/main/java/org/openapitools/client/api/InstanceManagementApi.java (1)
typescript/src/apis/InstanceManagementApi.ts (3)
  • getByRelease (106-109)
  • getByReleasesNotIn (158-161)
  • getInstanceCountByNamespace (210-213)
spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApi.java (2)
spring-boot2/src/main/java/com/apollo/openapi/server/model/OpenPageDTOOpenInstanceDTO.java (1)
  • Schema (24-167)
typescript/src/apis/InstanceManagementApi.ts (3)
  • getByRelease (106-109)
  • getByReleasesNotIn (158-161)
  • getInstanceCountByNamespace (210-213)
python/apollo_openapi/apis/path_to_api.py (1)
python/apollo_openapi/paths/__init__.py (1)
  • PathValues (8-54)
🪛 LanguageTool
python/docs/apis/tags/InstanceManagementApi.md

[grammar] ~75-~75: Use a hyphen to join words.
Context: ... will be streamed and loaded from a file like object. When downloading a file, se...

(QB_NEW_EN_HYPHEN)


[grammar] ~380-~380: Use a hyphen to join words.
Context: ... will be streamed and loaded from a file like object. When downloading a file, se...

(QB_NEW_EN_HYPHEN)

🪛 markdownlint-cli2 (0.18.1)
python/docs/apis/tags/InstanceManagementApi.md

20-20: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


72-72: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


72-72: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


73-73: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


73-73: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


84-84: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


84-84: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


85-85: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


85-85: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


91-91: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


93-93: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


93-93: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


98-98: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


100-100: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


100-100: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


107-107: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


107-107: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


108-108: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


108-108: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


113-113: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


115-115: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


115-115: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


120-120: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


122-122: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


122-122: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


129-129: Link fragments should be valid

(MD051, link-fragments)


129-129: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


129-129: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data

(MD056, table-column-count)


132-132: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


134-134: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


134-134: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


135-135: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


135-135: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


136-136: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


136-136: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


139-139: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


141-141: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


141-141: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data

(MD056, table-column-count)


144-144: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


295-295: Link fragments should be valid

(MD051, link-fragments)


295-295: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


295-295: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data

(MD056, table-column-count)


378-378: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


378-378: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


389-389: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


389-389: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


390-390: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


390-390: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


391-391: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


391-391: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


392-392: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


392-392: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


394-394: Multiple headings with the same content

(MD024, no-duplicate-heading)


397-397: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


399-399: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


399-399: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


401-401: Multiple headings with the same content

(MD024, no-duplicate-heading)


404-404: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


406-406: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


406-406: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


408-408: Multiple headings with the same content

(MD024, no-duplicate-heading)


411-411: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


413-413: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


413-413: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


415-415: Multiple headings with the same content

(MD024, no-duplicate-heading)


418-418: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


420-420: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


420-420: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


427-427: Link fragments should be valid

(MD051, link-fragments)


430-430: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


432-432: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


432-432: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


433-433: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


433-433: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


434-434: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


434-434: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)


436-436: Multiple headings with the same content

(MD024, no-duplicate-heading)


439-439: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


441-441: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe

(MD055, table-pipe-style)


441-441: Table column count
Expected: 4; Actual: 3; Too few cells, row will be missing data

(MD056, table-column-count)

java-client/docs/InstanceManagementApi.md

223-223: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🔇 Additional comments (21)
python/apollo_openapi/apis/tags/instance_management_api.py (2)

17-21: LGTM! Multiple inheritance structure is appropriate.

The class correctly inherits from the three refactored mixins (GetByRelease, GetByReleasesNotIn, GetInstanceCountByNamespace) to compose the API surface. The mixin pattern is well-suited for this auto-generated code structure.


12-14: Spelling fix verified and properly scoped; all changes correct.

The correction from instances_not_int to instances_not_in is complete and correct. All three imported classes (GetByRelease, GetByReleasesNotIn, GetInstanceCountByNamespace) are used as base classes for InstanceManagementApi (lines 17-21), and no dangling references to the old class names exist in the codebase. The breaking change is properly isolated to this API class definition.

python/README.md (1)

232-233: Docs entries for new endpoints look correct.

Paths and anchors match the spec and Python docs. No action needed.

java-client/src/test/java/org/openapitools/client/api/InstanceManagementApiTest.java (1)

78-84: Count-by-namespace test alignment.

Signature/return type match spec. LGTM.

python/docs/apis/tags/InstanceManagementApi.md (1)

8-10: Method list updated correctly.

Entries match the spec and README.

java-client/src/main/java/org/openapitools/client/api/InstanceManagementApi.java (3)

92-112: Path and required params validation for getByRelease are correct.

Escaping, auth, and query handling look good.


269-274: Renamed not-in path wired correctly.

Good alignment with /instances_not_in.


412-458: Instance count endpoint unchanged and correct.

Path/return type consistent with spec.

python/apollo_openapi/paths/__init__.py (1)

39-39: Renamed path enum verified—no lingering references to old name.

Verification confirms the new enum member OPENAPI_V1_ENVS_ENV_APPS_APP_ID_CLUSTERS_CLUSTER_NAME_NAMESPACES_NAMESPACE_NAME_INSTANCES_NOT_IN is in place at line 39 with the correct endpoint path, and comprehensive searches across all file types found no remaining references to the old name INSTANCES_NOT_INT.

typescript/src/apis/InstanceManagementApi.ts (3)

28-33: getByRelease: request/response wiring is correct.

Required param guards, query mapping, path, and JSON mapping match the OpenAPI. No issues.

Also applies to: 55-109


167-213: Namespace instance count endpoint unchanged — still OK.

Integer payload handling covers JSON or text responses; fine to keep.

Also applies to: 192-204


35-41: Rename verification complete—no stale references detected.

All searches confirm the endpoint rename from /instances_not_int to /instances_not_in has been applied correctly and consistently:

  • Interface naming updated (GetByReleasesNotInRequest)
  • Method naming updated (getByReleasesNotInRaw, getByReleasesNotIn)
  • Path endpoint confirmed (/instances_not_in)
  • Zero matches for old naming patterns (not_int, NotInt)
  • No stale references in config or schema files

The changes are solid and ready.

java-client/README.md (1)

152-154: Docs table reflects new endpoints and renamed path.

Entries for getByRelease and getByReleasesNotIn are correct.

apollo-openapi.yaml (1)

2396-2445: OperationId uniqueness verified across all OpenAPI specs — all checks pass.

Verification complete:

  • getByRelease and getByReleasesNotIn are unique within apollo-openapi.yaml
  • Both operationIds appear exactly once in each of the three spec files (apollo-openapi.yaml, java-client/api/openapi.yaml, spring-boot2/src/main/resources/openapi.yaml)
  • No stale misspellings (instances_not_int) found
  • No duplicate operationIds detected within any file
python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.py (1)

252-309: Public wrapper get_by_release mirrors _get_by_release_oapg correctly.

Signatures and return routing are consistent with the YAML (page/size required). No further action.

python/apollo_openapi/paths/openapi_v1_envs_env_releases_release_id_instances/get.pyi (2)

163-241: Type stubs align with implementation and new naming.

Overloads and docstrings match get_by_release. Looks good.


244-301: Wrapper get_by_release() in stubs correctly delegates.

No issues spotted.

java-client/docs/InstanceManagementApi.md (2)

7-9: Table entries for new endpoints look correct.

Endpoints and descriptions match the spec.


164-223: Namespace instance count docs match the spec.

All good.

spring-boot2/src/main/java/com/apollo/openapi/server/api/InstanceManagementApiDelegate.java (1)

86-100: LGTM for getInstanceCountByNamespace delegate stub.

Interface and mapping align with the spec.

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

132-157: Instance count endpoint mapping and response typing look correct.

No changes requested.

Comment on lines +2758 to 2763
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in:
get:
deprecated: false
description: "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3"
operationId: getByReleasesNotIn
parameters:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix description path to match renamed endpoint.

Use /instances_not_in in the description.

-      description: "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances?excludeReleases=1,2,3"
+      description: "GET /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3"
🤖 Prompt for AI Agents
In java-client/api/openapi.yaml around lines 2758 to 2763 the operation
description references the old path query form and should match the renamed
endpoint; update the description string to use
"/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in"
(e.g. "GET
/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/instances_not_in?excludeReleases=1,2,3")
so the doc matches the actual endpoint name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant