Fix next token and update list api param (#64)
add private network param check
diff --git a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
index 0f99001..d0164bd 100644
--- a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
+++ b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
@@ -171,7 +171,8 @@
                 listApiDestinationsRequest.checkMaxResultsAndNextToken();
                 final PaginationResult<List<ApiDestinationDTO>> listPaginationResult
                     = apiDestinationService.listApiDestinations(accountAPI.getResourceOwnerAccountId(ctx),
-                    listApiDestinationsRequest.getApiDestinationNamePrefix(), listApiDestinationsRequest.getNextToken(),
+                    listApiDestinationsRequest.getApiDestinationNamePrefix(),
+                        listApiDestinationsRequest.getConnectionNamePrefix(), listApiDestinationsRequest.getNextToken(),
                     listApiDestinationsRequest.getMaxResults());
                 List<ApiDestinationsResponse> apiDestinationsResponses = Lists.newArrayList();
                 listPaginationResult.getData()
diff --git a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
index e08fb49..b9be923 100644
--- a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
+++ b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
@@ -147,7 +147,6 @@
                     ConnectionResponse connectionResponse = new ConnectionResponse();
                     BeanUtils.copyProperties(connectionDTO, connectionResponse);
                     connectionResponse.setGmtCreate(connectionDTO.getGmtCreate().getTime());
-                    connectionResponse.setApiDestinationName(connectionDTO.getApiDestinationName());
                     connectionResponse.setId(connectionDTO.getId());
                     connectionResponses.add(dataMasking(connectionResponse));
                 });
@@ -171,7 +170,6 @@
                     ConnectionResponse connectionResponse = new ConnectionResponse();
                     BeanUtils.copyProperties(connectionDTO, connectionResponse);
                     connectionResponse.setGmtCreate(connectionDTO.getGmtCreate().getTime());
-                    connectionResponse.setApiDestinationName(connectionDTO.getApiDestinationName());
                     connectionResponse.setId(connectionDTO.getId());
                     connectionResponses.add(connectionResponse);
                 });
@@ -202,7 +200,6 @@
                         ConnectionResponse connectionResponse = new ConnectionResponse();
                         BeanUtils.copyProperties(connectionDTO, connectionResponse);
                         connectionResponse.setGmtCreate(connectionDTO.getGmtCreate().getTime());
-                        connectionResponse.setApiDestinationName(connectionDTO.getApiDestinationName());
                         connectionResponse.setId(connectionDTO.getId());
                         connectionResponses.add(dataMasking(connectionResponse));
                     });
diff --git a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ListApiDestinationsRequest.java b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ListApiDestinationsRequest.java
index a2a9a7d..a6b48de 100644
--- a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ListApiDestinationsRequest.java
+++ b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ListApiDestinationsRequest.java
@@ -33,6 +33,10 @@
     @SerializedName("ApiDestinationNamePrefix")
     private String apiDestinationNamePrefix;
 
+    @SerializedName("ConnectionNamePrefix")
+    private String connectionNamePrefix;
+
+
     @Min(value = 0, message = "The limit size of page is invalid, which must greater than 0 and less than [{0}].")
     @SerializedName("MaxResults")
     private Integer maxResults;
diff --git a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
index 6d34fd3..2642b81 100644
--- a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
+++ b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
@@ -45,9 +45,6 @@
     @SerializedName("GmtCreate")
     private Long gmtCreate;
 
-    @SerializedName("ApiDestinationName")
-    private String apiDestinationName;
-
     @SerializedName("Id")
     private Integer id;
 
diff --git a/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java b/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
index bdfc870..f8a3b98 100644
--- a/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
+++ b/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
@@ -172,7 +172,7 @@
         result.setData(apiDestinationDTOList);
         result.setTotal(9);
         result.setNextToken("0");
-        Mockito.when(apiDestinationService.listApiDestinations(any(), any(), any(), anyInt()))
+        Mockito.when(apiDestinationService.listApiDestinations(any(), any(), any(), any(), anyInt()))
             .thenReturn(result);
         ListApiDestinationsRequest listApiDestinationsRequest = new ListApiDestinationsRequest();
         listApiDestinationsRequest.setApiDestinationNamePrefix(UUID.randomUUID()
diff --git a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
index 6b55b4e..7dff8e9 100644
--- a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
+++ b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
@@ -62,7 +62,7 @@
      * @mbggenerated
      */
     List<ApiDestinationDO> listApiDestinations(@Param("accountId") String accountId, @Param("name") String name,
-        @Param("nextToken") int nextToken, @Param("maxResults") int maxResults);
+                                               @Param("connectionName") String connectionName, @Param("nextToken") int nextToken, @Param("maxResults") int maxResults);
 
     /**
      * Select by account and name
diff --git a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
index bc189ab..129d754 100644
--- a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
+++ b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
@@ -62,9 +62,9 @@
     }
 
     @Override
-    public List<ApiDestinationDTO> listApiDestinations(String accountId, String apiDestinationName, String nextToken,
+    public List<ApiDestinationDTO> listApiDestinations(String accountId, String apiDestinationName, String connectionName, String nextToken,
         int maxResults) {
-        return ApiDestinationConverter.doListCoverterDtoList(eventApiDestinationMapper.listApiDestinations(accountId, apiDestinationName, Integer.parseInt(nextToken), maxResults));
+        return ApiDestinationConverter.doListCoverterDtoList(eventApiDestinationMapper.listApiDestinations(accountId, apiDestinationName, connectionName, Integer.parseInt(nextToken), maxResults));
     }
 
     @Override
diff --git a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
index ed6c0c2..57731b1 100644
--- a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
+++ b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
@@ -40,7 +40,6 @@
         connectionDTO.setNetworkParameters(new Gson().fromJson(connectionDO.getNetworkParameters(), NetworkParameters.class));
         connectionDTO.setGmtCreate(connectionDO.getGmtCreate());
         connectionDTO.setId(connectionDO.getId());
-        connectionDTO.setApiDestinationName(connectionDO.getApiDestinationName());
         return connectionDTO;
     }
 
diff --git a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
index 6659e72..c0f9344 100644
--- a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
+++ b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
@@ -108,7 +108,5 @@
      */
     private Date gmtModify;
 
-    private String apiDestinationName;
-
     private Integer id;
 }
diff --git a/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml b/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml
index 25b17ea..e403654 100644
--- a/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml
+++ b/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml
@@ -63,7 +63,7 @@
         from event_api_destination
         where id = #{id,jdbcType=INTEGER}
     </select>
-    <select id="listApiDestinations" resultMap="ResultMapWithBLOBs" parameterType="java.lang.Integer">
+    <select id="listApiDestinations" resultMap="ResultMapWithBLOBs" parameterType="java.util.Map">
         select
         <include refid="Base_Column_List"/>
         ,
@@ -72,6 +72,7 @@
         <where>
             <if test="accountId != null and accountId != ''">account_id = #{accountId}</if>
             <if test="name != null and name != ''">and name like concat('%',#{name},'%')</if>
+            <if test="connectionName != null and connectionName != ''">and connection_name like concat('%',#{connectionName},'%')</if>
         </where>
         order by gmt_modify desc LIMIT #{nextToken} , #{maxResults}
     </select>
diff --git a/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml b/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml
index 604a065..cfac191 100644
--- a/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml
+++ b/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml
@@ -82,10 +82,8 @@
         select
         ec.id, ec.account_id, ec.name, ec.authorization_type, ec.network_type, ec.description, ec.gmt_create,
         ec.gmt_modify,
-        ec.auth_parameters, ec.network_parameters, ead.name as apiDestinationName
+        ec.auth_parameters, ec.network_parameters
         from event_connection ec
-        left join event_api_destination ead
-        on ec.name = ead.connection_name
         <where>
             <if test="accountId != null and accountId != ''">ec.account_id = #{accountId}</if>
             <if test="name != null and name != ''">and ec.name like concat('%',#{name},'%')</if>
@@ -96,10 +94,8 @@
         select
         ec.id, ec.account_id, ec.name, ec.authorization_type, ec.network_type, ec.description, ec.gmt_create,
         ec.gmt_modify,
-        ec.auth_parameters, ec.network_parameters, ead.name as apiDestinationName
+        ec.auth_parameters, ec.network_parameters
         from event_connection ec
-        left join event_api_destination ead
-        on ec.name = ead.connection_name
         <where>
             <if test="accountId != null and accountId != ''">ec.account_id = #{accountId}</if>
             <if test="name != null and name != ''">and ec.name = #{name,jdbcType=VARCHAR}</if>
diff --git a/common/src/main/java/org/apache/rocketmq/eventbridge/tools/NextTokenUtil.java b/common/src/main/java/org/apache/rocketmq/eventbridge/tools/NextTokenUtil.java
new file mode 100644
index 0000000..804cc5e
--- /dev/null
+++ b/common/src/main/java/org/apache/rocketmq/eventbridge/tools/NextTokenUtil.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.eventbridge.tools;
+
+public class NextTokenUtil {
+
+    public static String findNextToken(int totalSize, int skipIdx, int limit) {
+        if (skipIdx + limit < totalSize) {
+            return String.valueOf(skipIdx + limit);
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
index 19fad7f..9b87181 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
@@ -28,6 +28,7 @@
 import org.apache.rocketmq.eventbridge.domain.model.apidestination.parameter.HttpApiParameters;
 import org.apache.rocketmq.eventbridge.domain.repository.ApiDestinationRepository;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
+import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -108,13 +109,13 @@
         return apiDestinationRepository.deleteApiDestination(accountId, apiDestinationName);
     }
 
-    public PaginationResult<List<ApiDestinationDTO>> listApiDestinations(String accountId, String apiDestinationName, String nextToken,
+    public PaginationResult<List<ApiDestinationDTO>> listApiDestinations(String accountId, String apiDestinationName, String connectionName, String nextToken,
                                                                          Integer maxResults) {
-        final List<ApiDestinationDTO> apiDestinationDTOS = apiDestinationRepository.listApiDestinations(accountId, apiDestinationName, nextToken, maxResults);
+        final List<ApiDestinationDTO> apiDestinationDTOS = apiDestinationRepository.listApiDestinations(accountId, apiDestinationName, connectionName, nextToken, maxResults);
         PaginationResult<List<ApiDestinationDTO>> result = new PaginationResult();
         result.setData(apiDestinationDTOS);
         result.setTotal(this.getApiDestinationCount(accountId));
-        result.setNextToken(String.valueOf(Integer.parseInt(nextToken) + maxResults));
+        result.setNextToken(NextTokenUtil.findNextToken(this.getApiDestinationCount(accountId), Integer.parseInt(nextToken), maxResults));
         return result;
     }
 
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/bus/EventBusService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/bus/EventBusService.java
index eadea4f..56c0a32 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/bus/EventBusService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/bus/EventBusService.java
@@ -23,6 +23,7 @@
 import org.apache.rocketmq.eventbridge.domain.repository.EventBusRepository;
 import org.apache.rocketmq.eventbridge.domain.repository.EventDataRepository;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
+import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -84,7 +85,7 @@
         PaginationResult<List<EventBus>> result = new PaginationResult();
         result.setData(eventBuses);
         result.setTotal(total);
-        result.setNextToken(String.valueOf(Integer.parseInt(nextToken) + maxResults));
+        result.setNextToken(NextTokenUtil.findNextToken(total, Integer.parseInt(nextToken), maxResults));
         return result;
     }
 
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
index 7875879..4bb08ec 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
@@ -43,6 +43,4 @@
     private AuthParameters authParameters;
 
     private Date gmtCreate;
-
-    private String apiDestinationName;
 }
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
index 54aae47..86d317b 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
@@ -42,6 +42,7 @@
 import org.apache.rocketmq.eventbridge.domain.rpc.NetworkServiceAPI;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
+import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -264,7 +265,7 @@
 
     public List<ConnectionDTO> getConnection(String accountId, String connectionName) {
         final List<ConnectionDTO> connectionDTO = connectionRepository.getConnection(accountId, connectionName);
-        if (connectionDTO == null) {
+        if (CollectionUtils.isEmpty(connectionDTO)) {
             throw new EventBridgeException(EventBridgeErrorCode.ConnectionNotExist, connectionName);
         }
         return connectionDTO;
@@ -279,7 +280,7 @@
         PaginationResult<List<ConnectionDTO>> result = new PaginationResult();
         result.setData(connectionDTOS);
         result.setTotal(this.getConnectionCount(accountId));
-        result.setNextToken(String.valueOf(Integer.parseInt(nextToken) + maxResults));
+        result.setNextToken(NextTokenUtil.findNextToken(this.getConnectionCount(accountId), Integer.parseInt(nextToken), maxResults));
         return result;
     }
 
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/rule/EventRuleService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/rule/EventRuleService.java
index c6017fc..0fa52db 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/rule/EventRuleService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/rule/EventRuleService.java
@@ -24,6 +24,7 @@
 import org.apache.rocketmq.eventbridge.domain.model.bus.EventBusService;
 import org.apache.rocketmq.eventbridge.domain.repository.EventRuleRepository;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
+import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
 import org.apache.rocketmq.eventbridge.tools.pattern.PatternEvaluatorBuilder;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
@@ -103,7 +104,7 @@
         PaginationResult<List<EventRule>> result = new PaginationResult();
         result.setData(eventRules);
         result.setTotal(this.getEventRulesCount(accountId, eventBusName));
-        result.setNextToken(String.valueOf(Integer.parseInt(nextToken) + maxResults));
+        result.setNextToken(NextTokenUtil.findNextToken(this.getEventRulesCount(accountId, eventBusName), Integer.parseInt(nextToken), maxResults));
         return result;
     }
 
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventSourceService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventSourceService.java
index 465dcfd..fea663a 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventSourceService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventSourceService.java
@@ -26,6 +26,7 @@
 import org.apache.rocketmq.eventbridge.domain.model.bus.EventBusService;
 import org.apache.rocketmq.eventbridge.domain.repository.EventSourceRepository;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
+import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -104,7 +105,7 @@
         PaginationResult<List<EventSource>> result = new PaginationResult();
         result.setData(eventSources);
         result.setTotal(this.getEventSourceCount(accountId, eventBusName));
-        result.setNextToken(String.valueOf(Integer.parseInt(nextToken) + maxResults));
+        result.setNextToken(NextTokenUtil.findNextToken(this.getEventSourceCount(accountId, eventBusName), Integer.parseInt(nextToken), maxResults));
         return result;
     }
 
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventTypeService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventTypeService.java
index 0fc585f..e751d02 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventTypeService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/source/EventTypeService.java
@@ -19,6 +19,7 @@
 import java.util.List;
 import org.apache.rocketmq.eventbridge.domain.model.PaginationResult;
 import org.apache.rocketmq.eventbridge.domain.repository.EventTypeRepository;
+import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
 import org.springframework.stereotype.Service;
 
 @Service
@@ -40,7 +41,7 @@
         PaginationResult<List<EventType>> result = new PaginationResult();
         result.setData(pageResult);
         result.setTotal(this.getEventTypeCount(accountId, eventBusName, eventSourceName));
-        result.setNextToken(String.valueOf(Integer.parseInt(nextToken) + maxResults));
+        result.setNextToken(NextTokenUtil.findNextToken(this.getEventTypeCount(accountId, eventBusName, eventSourceName), Integer.parseInt(nextToken), maxResults));
         return result;
     }
 
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
index f265340..ee52622 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
@@ -30,7 +30,7 @@
 
     Boolean deleteApiDestination(String accountId, String apiDestinationName);
 
-    List<ApiDestinationDTO> listApiDestinations(String accountId, String apiDestinationName, String nextToken,
+    List<ApiDestinationDTO> listApiDestinations(String accountId, String apiDestinationName, String connectionName, String nextToken,
         int maxResults);
 
     int getApiDestinationCount(String accountId);
diff --git a/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ApiDestinationServiceTest.java b/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ApiDestinationServiceTest.java
index 22918cc..e1fd234 100644
--- a/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ApiDestinationServiceTest.java
+++ b/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ApiDestinationServiceTest.java
@@ -23,6 +23,7 @@
 import org.apache.rocketmq.eventbridge.domain.model.PaginationResult;
 import org.apache.rocketmq.eventbridge.domain.model.apidestination.ApiDestinationDTO;
 import org.apache.rocketmq.eventbridge.domain.model.apidestination.ApiDestinationService;
+import org.apache.rocketmq.eventbridge.domain.model.apidestination.parameter.HttpApiParameters;
 import org.apache.rocketmq.eventbridge.domain.model.quota.QuotaService;
 import org.apache.rocketmq.eventbridge.domain.repository.ApiDestinationRepository;
 import org.junit.Assert;
@@ -55,7 +56,7 @@
         ApiDestinationDTO apiDestinationDTO = new ApiDestinationDTO();
         apiDestinationDTO.setName(UUID.randomUUID().toString());
         Mockito.when(apiDestinationRepository.getApiDestinationCount(any())).thenReturn(8);
-        Mockito.when(apiDestinationRepository.listApiDestinations(any(), any(), any(), anyInt())).thenReturn(new ArrayList<>());
+        Mockito.when(apiDestinationRepository.listApiDestinations(any(), any(), any(), any(), anyInt())).thenReturn(new ArrayList<>());
         Mockito.when(quotaService.getTotalQuota(any(), any())).thenReturn(10);
     }
 
@@ -65,6 +66,10 @@
         ApiDestinationDTO eventApiDestinationDTO = new ApiDestinationDTO();
         eventApiDestinationDTO.setName(UUID.randomUUID().toString());
         eventApiDestinationDTO.setAccountId(UUID.randomUUID().toString());
+        HttpApiParameters httpApiParameters = new HttpApiParameters();
+        httpApiParameters.setMethod("POST");
+        httpApiParameters.setEndpoint("http://127.0.0.1:8001");
+        eventApiDestinationDTO.setApiParams(httpApiParameters);
         final String apiDestination = apiDestinationService.createApiDestination(eventApiDestinationDTO);
         Assert.assertNotNull(apiDestination);
     }
@@ -75,6 +80,10 @@
         ApiDestinationDTO apiDestinationDTO = new ApiDestinationDTO();
         apiDestinationDTO.setName(UUID.randomUUID().toString());
         apiDestinationDTO.setAccountId(UUID.randomUUID().toString());
+        HttpApiParameters httpApiParameters = new HttpApiParameters();
+        httpApiParameters.setMethod("POST");
+        httpApiParameters.setEndpoint("http://127.0.0.1:8001");
+        apiDestinationDTO.setApiParams(httpApiParameters);
         final Boolean aBoolean = apiDestinationService.updateApiDestination(apiDestinationDTO);
         Assert.assertTrue(aBoolean);
     }
@@ -95,7 +104,7 @@
 
     @Test
     public void testListApiDestinations() {
-        final PaginationResult<List<ApiDestinationDTO>> listPaginationResult = apiDestinationService.listApiDestinations(UUID.randomUUID().toString(), UUID.randomUUID().toString(), "0", 10);
+        final PaginationResult<List<ApiDestinationDTO>> listPaginationResult = apiDestinationService.listApiDestinations(UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString(), "0", 10);
         Assert.assertNotNull(listPaginationResult.getData());
     }
 }