From 94da2ace474140c6ff09df9df8e85ad3e0a770f3 Mon Sep 17 00:00:00 2001
From: apecloud-bot <apecloud-bot@users.noreply.github.com>
Date: Fri, 10 Jan 2025 03:34:23 +0000
Subject: [PATCH] chore: auto update client api
 https://github.com/apecloud/apecloud/commit/09ee66507a32bd3cbf23fc029f078ec810facfb2

---
 .generator/schemas/adminapi.yaml              |  15 +-
 .generator/schemas/dataapi.yaml               | 630 ++++++++++++++++++
 .generator/schemas/openapi.yaml               |  15 +-
 apecloud                                      |   2 +-
 api/kbcloud/admin/api_dms.go                  |   4 +-
 api/kbcloud/admin/model_account_option.go     |  41 +-
 ...dms_ob_session.go => model_dms_session.go} | 106 +--
 api/kbcloud/api_dms.go                        |   4 +-
 api/kbcloud/api_session.go                    | 215 ++++++
 api/kbcloud/model_account_option.go           |  41 +-
 ...dms_ob_session.go => model_dms_session.go} | 106 +--
 11 files changed, 1058 insertions(+), 121 deletions(-)
 rename api/kbcloud/admin/{model_dms_ob_session.go => model_dms_session.go} (80%)
 create mode 100644 api/kbcloud/api_session.go
 rename api/kbcloud/{model_dms_ob_session.go => model_dms_session.go} (80%)

diff --git a/.generator/schemas/adminapi.yaml b/.generator/schemas/adminapi.yaml
index 603f8697..aa2fc744 100644
--- a/.generator/schemas/adminapi.yaml
+++ b/.generator/schemas/adminapi.yaml
@@ -3601,7 +3601,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: '#/components/schemas/DmsObSessionList'
+                $ref: '#/components/schemas/DmsSessionList'
         '401':
           $ref: '#/components/responses/401'
         '403':
@@ -15127,7 +15127,7 @@ components:
           type: string
           description: The SQL statement defining the view
           nullable: true
-    DmsObSession:
+    DmsSession:
       type: object
       properties:
         id:
@@ -15163,10 +15163,10 @@ components:
         port:
           type: string
           description: port
-    DmsObSessionList:
+    DmsSessionList:
       type: array
       items:
-        $ref: '#/components/schemas/DmsObSession'
+        $ref: '#/components/schemas/DmsSession'
     sortType:
       description: Represents the type of sorting.
       enum:
@@ -19038,6 +19038,13 @@ components:
         - resetPassword
         - delete
       properties:
+        superUserAccount:
+          type: integer
+          format: int32
+          minimum: 0
+          default: 2
+          description: number of super user accounts cloud create
+          x-nullable: false
         enabled:
           type: boolean
         privileges:
diff --git a/.generator/schemas/dataapi.yaml b/.generator/schemas/dataapi.yaml
index d6da957b..08ed36b7 100644
--- a/.generator/schemas/dataapi.yaml
+++ b/.generator/schemas/dataapi.yaml
@@ -1182,6 +1182,460 @@ paths:
           $ref: '#/components/responses/404'
         '500':
           $ref: '#/components/responses/500'
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/databases:
+    get:
+      description: list databases for rdbms engine cluster
+      summary: List cluster databases
+      operationId: listDatabases
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+      responses:
+        '200':
+          description: A successful response.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/databaseList'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - database
+        - rdbms
+    post:
+      description: create a database in cluster
+      summary: Create cluster database
+      operationId: createDatabase
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/database'
+        required: true
+      responses:
+        '204':
+          content: {}
+          description: Returned when database is created successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - database
+        - rdbms
+      x-codegen-request-body-name: body
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/databases/{databaseName}:
+    delete:
+      description: delete a database in cluster
+      summary: Delete cluster database
+      operationId: deleteDatabase
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - description: name of database
+          in: path
+          name: databaseName
+          required: true
+          schema:
+            type: string
+      responses:
+        '204':
+          content: {}
+          description: Returned when project is deleted successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - database
+        - rdbms
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/accounts:
+    get:
+      description: list accounts in cluster
+      summary: List cluster accounts
+      operationId: listAccounts
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - description: include root account
+          in: query
+          name: includeRoot
+          schema:
+            type: boolean
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/accountList'
+          description: Success
+        '204':
+          content: {}
+          description: Returned when project is deleted successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - account
+        - rdbms
+      x-codegen-request-body-name: body
+    post:
+      description: create an account in cluster
+      summary: Create cluster account
+      operationId: createAccount
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/account'
+        required: true
+      responses:
+        '204':
+          content: {}
+          description: Returned when project is deleted successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - account
+        - rdbms
+      x-codegen-request-body-name: body
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/accounts/{accountName}:
+    delete:
+      description: delete an account in cluster
+      summary: Delete cluster account
+      operationId: deleteAccount
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: accountName
+          required: true
+          schema:
+            type: string
+      responses:
+        '204':
+          content: {}
+          description: Returned when project is deleted successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - account
+        - rdbms
+    patch:
+      description: update an account in cluster
+      summary: update cluster account
+      operationId: updateAccount
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - description: name of the account
+          in: path
+          name: accountName
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/account'
+        required: true
+      responses:
+        '204':
+          content: {}
+          description: Returned when project is deleted successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - account
+        - rdbms
+      x-codegen-request-body-name: body
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/accounts/{accountName}/privileges:
+    patch:
+      description: update account privileges for rdbms engine
+      summary: update account privileges
+      operationId: updateAccountPrivileges
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - description: name of the account
+          in: path
+          name: accountName
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/privilegeList'
+        required: true
+      responses:
+        '204':
+          content: {}
+          description: Returned when account privileges are updated successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - account
+        - rdbms
+      x-codegen-request-body-name: body
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/sessions:
+    get:
+      description: list sessions in cluster
+      summary: List cluster sessions
+      operationId: listSessions
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - name: all
+          in: query
+          description: whether list all session includes sleep
+          default: true
+          schema:
+            type: boolean
+      responses:
+        '200':
+          description: list all session success
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DmsSessionList'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '500':
+          $ref: '#/components/responses/500'
+      tags:
+        - session
+        - rdbms
+  /data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/sessions/{session}:
+    delete:
+      description: kill a session in cluster
+      summary: Kill cluster session
+      operationId: killSession
+      parameters:
+        - description: name of the engine
+          in: path
+          name: engineName
+          required: true
+          schema:
+            type: string
+        - description: name of the Org
+          in: path
+          name: orgName
+          required: true
+          schema:
+            type: string
+        - description: name of the Cluster
+          in: path
+          name: clusterName
+          required: true
+          schema:
+            type: string
+        - description: session id
+          in: path
+          name: session
+          required: true
+          schema:
+            type: string
+        - description: if keep is true, the session will not be killed but only closed
+          in: query
+          name: keep
+          schema:
+            type: boolean
+      responses:
+        '204':
+          content: {}
+          description: Returned when session is killed successfully.
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+      tags:
+        - session
+        - rdbms
 components:
   securitySchemes:
     BearerToken:
@@ -1850,6 +2304,182 @@ components:
           format: date-time
           description: Time when the task completed or failed
           nullable: true
+    databaseItem:
+      description: Cluster database information
+      properties:
+        name:
+          description: Specify the name of database, which must be unique.
+          title: name
+          type: string
+      required:
+        - name
+      type: object
+    databaseList:
+      description: DatabaesList is a list of Databaes
+      properties:
+        items:
+          description: Items is the list of Databases objects in the list
+          items:
+            $ref: '#/components/schemas/databaseItem'
+          type: array
+      required:
+        - items
+      type: object
+    database:
+      description: Cluster database information
+      properties:
+        component:
+          description: component type
+          title: component
+          type: string
+        name:
+          description: Specify the name of database, which must be unique.
+          title: name
+          type: string
+        accountName:
+          description: Specify account name who can manage this database
+          title: owner
+          type: string
+        charset:
+          description: Specify charsetName of database.
+          title: charsetName
+          type: string
+        description:
+          description: Description of the database.
+          title: description
+          type: string
+      required:
+        - name
+      type: object
+    privilegeType:
+      title: privilegeType
+      description: The type of privilege.
+      type: string
+      enum:
+        - DBADMIN
+        - READWRITE
+        - READONLY
+        - DDLONLY
+        - DMLONLY
+    privilegeListItem:
+      type: object
+      description: Database and its assigned privileges.
+      properties:
+        databaseName:
+          title: databaseName
+          type: string
+          description: The name of the database.
+        privileges:
+          $ref: '#/components/schemas/privilegeType'
+      required:
+        - privileges
+    privilegeList:
+      type: array
+      items:
+        $ref: '#/components/schemas/privilegeListItem'
+      description: A list of privileges and their databases.
+    accountListItem:
+      description: Cluster account information.
+      properties:
+        component:
+          description: Component type.
+          type: string
+        name:
+          description: The name of user.
+          type: string
+        password:
+          description: The password of user.
+          type: string
+        role:
+          $ref: '#/components/schemas/accountListRoleType'
+        privilegesList:
+          description: privileges of databases of cluster
+          title: privilegesList
+          $ref: '#/components/schemas/privilegeList'
+      required:
+        - name
+      type: object
+    accountList:
+      items:
+        $ref: '#/components/schemas/accountListItem'
+      type: array
+    accountRoleType:
+      default: SUPERUSER
+      description: Role name should be one of [SUPERUSER, BASICUSER].
+      enum:
+        - SUPERUSER
+        - BASICUSER
+      title: role
+      type: string
+    account:
+      description: Cluster account information
+      properties:
+        privilegesList:
+          description: privileges of databases of cluster
+          title: privilegesList
+          $ref: '#/components/schemas/privilegeList'
+        component:
+          description: Specify the name of component to be connected. If not specified, pick the first one.
+          title: component
+          type: string
+        instance:
+          description: Specify the name of instance to be connected.
+          title: instance
+          type: string
+        name:
+          description: Specify the name of user, which must be unique.
+          title: name
+          type: string
+        password:
+          description: Specify the password of user. The default value is empty, which means a random password will be generated.
+          title: password
+          type: string
+        role:
+          $ref: '#/components/schemas/accountRoleType'
+      required:
+        - name
+        - role
+      type: object
+    DmsSession:
+      type: object
+      properties:
+        id:
+          type: string
+          description: session id
+        user:
+          type: string
+          description: user name
+        tenant:
+          type: string
+          description: tenant name
+        host:
+          type: string
+          description: host name
+        db:
+          type: string
+          description: database name
+        command:
+          type: string
+          description: command
+        time:
+          type: string
+          description: time
+        state:
+          type: string
+          description: state
+        info:
+          type: string
+          description: info
+        ip:
+          type: string
+          description: ip
+        port:
+          type: string
+          description: port
+    DmsSessionList:
+      type: array
+      items:
+        $ref: '#/components/schemas/DmsSession'
   responses:
     '400':
       content:
diff --git a/.generator/schemas/openapi.yaml b/.generator/schemas/openapi.yaml
index f134fd2b..945d2979 100644
--- a/.generator/schemas/openapi.yaml
+++ b/.generator/schemas/openapi.yaml
@@ -7643,7 +7643,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: '#/components/schemas/DmsObSessionList'
+                $ref: '#/components/schemas/DmsSessionList'
         '401':
           $ref: '#/components/responses/401'
         '403':
@@ -14278,6 +14278,13 @@ components:
         - resetPassword
         - delete
       properties:
+        superUserAccount:
+          type: integer
+          format: int32
+          minimum: 0
+          default: 2
+          description: number of super user accounts cloud create
+          x-nullable: false
         enabled:
           type: boolean
         privileges:
@@ -15540,7 +15547,7 @@ components:
       description: List of Storage Volume
       items:
         $ref: '#/components/schemas/DmsVolume'
-    DmsObSession:
+    DmsSession:
       type: object
       properties:
         id:
@@ -15576,10 +15583,10 @@ components:
         port:
           type: string
           description: port
-    DmsObSessionList:
+    DmsSessionList:
       type: array
       items:
-        $ref: '#/components/schemas/DmsObSession'
+        $ref: '#/components/schemas/DmsSession'
     ipWhitelist:
       description: whitelist
       properties:
diff --git a/apecloud b/apecloud
index 0f169dc5..09ee6650 160000
--- a/apecloud
+++ b/apecloud
@@ -1 +1 @@
-Subproject commit 0f169dc50d509225430425e8c62640cff3b7bf1c
+Subproject commit 09ee66507a32bd3cbf23fc029f078ec810facfb2
diff --git a/api/kbcloud/admin/api_dms.go b/api/kbcloud/admin/api_dms.go
index 199f24e4..fdcac3fd 100644
--- a/api/kbcloud/admin/api_dms.go
+++ b/api/kbcloud/admin/api_dms.go
@@ -1186,11 +1186,11 @@ func (r *ListSessionsOptionalParameters) WithAll(all string) *ListSessionsOption
 }
 
 // ListSessions list all session for the cluster.
-func (a *DmsApi) ListSessions(ctx _context.Context, orgName string, clusterName string, o ...ListSessionsOptionalParameters) ([]DmsObSession, *_nethttp.Response, error) {
+func (a *DmsApi) ListSessions(ctx _context.Context, orgName string, clusterName string, o ...ListSessionsOptionalParameters) ([]DmsSession, *_nethttp.Response, error) {
 	var (
 		localVarHTTPMethod  = _nethttp.MethodGet
 		localVarPostBody    interface{}
-		localVarReturnValue []DmsObSession
+		localVarReturnValue []DmsSession
 		optionalParams      ListSessionsOptionalParameters
 	)
 
diff --git a/api/kbcloud/admin/model_account_option.go b/api/kbcloud/admin/model_account_option.go
index e1f97725..df47b0c0 100644
--- a/api/kbcloud/admin/model_account_option.go
+++ b/api/kbcloud/admin/model_account_option.go
@@ -11,6 +11,8 @@ import (
 )
 
 type AccountOption struct {
+	// number of super user accounts cloud create
+	SuperUserAccount   *int32   `json:"superUserAccount,omitempty"`
 	Enabled            bool     `json:"enabled"`
 	Privileges         []string `json:"privileges,omitempty"`
 	AccountNamePattern string   `json:"accountNamePattern"`
@@ -28,6 +30,8 @@ type AccountOption struct {
 // will change when the set of required properties is changed.
 func NewAccountOption(enabled bool, accountNamePattern string, create bool, resetPassword bool, delete bool) *AccountOption {
 	this := AccountOption{}
+	var superUserAccount int32 = 2
+	this.SuperUserAccount = &superUserAccount
 	this.Enabled = enabled
 	this.AccountNamePattern = accountNamePattern
 	this.Create = create
@@ -41,9 +45,39 @@ func NewAccountOption(enabled bool, accountNamePattern string, create bool, rese
 // but it doesn't guarantee that properties required by API are set.
 func NewAccountOptionWithDefaults() *AccountOption {
 	this := AccountOption{}
+	var superUserAccount int32 = 2
+	this.SuperUserAccount = &superUserAccount
 	return &this
 }
 
+// GetSuperUserAccount returns the SuperUserAccount field value if set, zero value otherwise.
+func (o *AccountOption) GetSuperUserAccount() int32 {
+	if o == nil || o.SuperUserAccount == nil {
+		var ret int32
+		return ret
+	}
+	return *o.SuperUserAccount
+}
+
+// GetSuperUserAccountOk returns a tuple with the SuperUserAccount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *AccountOption) GetSuperUserAccountOk() (*int32, bool) {
+	if o == nil || o.SuperUserAccount == nil {
+		return nil, false
+	}
+	return o.SuperUserAccount, true
+}
+
+// HasSuperUserAccount returns a boolean if a field has been set.
+func (o *AccountOption) HasSuperUserAccount() bool {
+	return o != nil && o.SuperUserAccount != nil
+}
+
+// SetSuperUserAccount gets a reference to the given int32 and assigns it to the SuperUserAccount field.
+func (o *AccountOption) SetSuperUserAccount(v int32) {
+	o.SuperUserAccount = &v
+}
+
 // GetEnabled returns the Enabled field value.
 func (o *AccountOption) GetEnabled() bool {
 	if o == nil {
@@ -193,6 +227,9 @@ func (o AccountOption) MarshalJSON() ([]byte, error) {
 	if o.UnparsedObject != nil {
 		return common.Marshal(o.UnparsedObject)
 	}
+	if o.SuperUserAccount != nil {
+		toSerialize["superUserAccount"] = o.SuperUserAccount
+	}
 	toSerialize["enabled"] = o.Enabled
 	if o.Privileges != nil {
 		toSerialize["privileges"] = o.Privileges
@@ -211,6 +248,7 @@ func (o AccountOption) MarshalJSON() ([]byte, error) {
 // UnmarshalJSON deserializes the given payload.
 func (o *AccountOption) UnmarshalJSON(bytes []byte) (err error) {
 	all := struct {
+		SuperUserAccount   *int32   `json:"superUserAccount,omitempty"`
 		Enabled            *bool    `json:"enabled"`
 		Privileges         []string `json:"privileges,omitempty"`
 		AccountNamePattern *string  `json:"accountNamePattern"`
@@ -238,10 +276,11 @@ func (o *AccountOption) UnmarshalJSON(bytes []byte) (err error) {
 	}
 	additionalProperties := make(map[string]interface{})
 	if err = common.Unmarshal(bytes, &additionalProperties); err == nil {
-		common.DeleteKeys(additionalProperties, &[]string{"enabled", "privileges", "accountNamePattern", "create", "resetPassword", "delete"})
+		common.DeleteKeys(additionalProperties, &[]string{"superUserAccount", "enabled", "privileges", "accountNamePattern", "create", "resetPassword", "delete"})
 	} else {
 		return err
 	}
+	o.SuperUserAccount = all.SuperUserAccount
 	o.Enabled = *all.Enabled
 	o.Privileges = all.Privileges
 	o.AccountNamePattern = *all.AccountNamePattern
diff --git a/api/kbcloud/admin/model_dms_ob_session.go b/api/kbcloud/admin/model_dms_session.go
similarity index 80%
rename from api/kbcloud/admin/model_dms_ob_session.go
rename to api/kbcloud/admin/model_dms_session.go
index 933e35f9..a0069232 100644
--- a/api/kbcloud/admin/model_dms_ob_session.go
+++ b/api/kbcloud/admin/model_dms_session.go
@@ -6,7 +6,7 @@ package admin
 
 import "github.com/apecloud/kb-cloud-client-go/api/common"
 
-type DmsObSession struct {
+type DmsSession struct {
 	// session id
 	Id *string `json:"id,omitempty"`
 	// user name
@@ -34,25 +34,25 @@ type DmsObSession struct {
 	AdditionalProperties map[string]interface{} `json:"-"`
 }
 
-// NewDmsObSession instantiates a new DmsObSession object.
+// NewDmsSession instantiates a new DmsSession object.
 // This constructor will assign default values to properties that have it defined,
 // and makes sure properties required by API are set, but the set of arguments
 // will change when the set of required properties is changed.
-func NewDmsObSession() *DmsObSession {
-	this := DmsObSession{}
+func NewDmsSession() *DmsSession {
+	this := DmsSession{}
 	return &this
 }
 
-// NewDmsObSessionWithDefaults instantiates a new DmsObSession object.
+// NewDmsSessionWithDefaults instantiates a new DmsSession object.
 // This constructor will only assign default values to properties that have it defined,
 // but it doesn't guarantee that properties required by API are set.
-func NewDmsObSessionWithDefaults() *DmsObSession {
-	this := DmsObSession{}
+func NewDmsSessionWithDefaults() *DmsSession {
+	this := DmsSession{}
 	return &this
 }
 
 // GetId returns the Id field value if set, zero value otherwise.
-func (o *DmsObSession) GetId() string {
+func (o *DmsSession) GetId() string {
 	if o == nil || o.Id == nil {
 		var ret string
 		return ret
@@ -62,7 +62,7 @@ func (o *DmsObSession) GetId() string {
 
 // GetIdOk returns a tuple with the Id field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetIdOk() (*string, bool) {
+func (o *DmsSession) GetIdOk() (*string, bool) {
 	if o == nil || o.Id == nil {
 		return nil, false
 	}
@@ -70,17 +70,17 @@ func (o *DmsObSession) GetIdOk() (*string, bool) {
 }
 
 // HasId returns a boolean if a field has been set.
-func (o *DmsObSession) HasId() bool {
+func (o *DmsSession) HasId() bool {
 	return o != nil && o.Id != nil
 }
 
 // SetId gets a reference to the given string and assigns it to the Id field.
-func (o *DmsObSession) SetId(v string) {
+func (o *DmsSession) SetId(v string) {
 	o.Id = &v
 }
 
 // GetUser returns the User field value if set, zero value otherwise.
-func (o *DmsObSession) GetUser() string {
+func (o *DmsSession) GetUser() string {
 	if o == nil || o.User == nil {
 		var ret string
 		return ret
@@ -90,7 +90,7 @@ func (o *DmsObSession) GetUser() string {
 
 // GetUserOk returns a tuple with the User field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetUserOk() (*string, bool) {
+func (o *DmsSession) GetUserOk() (*string, bool) {
 	if o == nil || o.User == nil {
 		return nil, false
 	}
@@ -98,17 +98,17 @@ func (o *DmsObSession) GetUserOk() (*string, bool) {
 }
 
 // HasUser returns a boolean if a field has been set.
-func (o *DmsObSession) HasUser() bool {
+func (o *DmsSession) HasUser() bool {
 	return o != nil && o.User != nil
 }
 
 // SetUser gets a reference to the given string and assigns it to the User field.
-func (o *DmsObSession) SetUser(v string) {
+func (o *DmsSession) SetUser(v string) {
 	o.User = &v
 }
 
 // GetTenant returns the Tenant field value if set, zero value otherwise.
-func (o *DmsObSession) GetTenant() string {
+func (o *DmsSession) GetTenant() string {
 	if o == nil || o.Tenant == nil {
 		var ret string
 		return ret
@@ -118,7 +118,7 @@ func (o *DmsObSession) GetTenant() string {
 
 // GetTenantOk returns a tuple with the Tenant field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetTenantOk() (*string, bool) {
+func (o *DmsSession) GetTenantOk() (*string, bool) {
 	if o == nil || o.Tenant == nil {
 		return nil, false
 	}
@@ -126,17 +126,17 @@ func (o *DmsObSession) GetTenantOk() (*string, bool) {
 }
 
 // HasTenant returns a boolean if a field has been set.
-func (o *DmsObSession) HasTenant() bool {
+func (o *DmsSession) HasTenant() bool {
 	return o != nil && o.Tenant != nil
 }
 
 // SetTenant gets a reference to the given string and assigns it to the Tenant field.
-func (o *DmsObSession) SetTenant(v string) {
+func (o *DmsSession) SetTenant(v string) {
 	o.Tenant = &v
 }
 
 // GetHost returns the Host field value if set, zero value otherwise.
-func (o *DmsObSession) GetHost() string {
+func (o *DmsSession) GetHost() string {
 	if o == nil || o.Host == nil {
 		var ret string
 		return ret
@@ -146,7 +146,7 @@ func (o *DmsObSession) GetHost() string {
 
 // GetHostOk returns a tuple with the Host field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetHostOk() (*string, bool) {
+func (o *DmsSession) GetHostOk() (*string, bool) {
 	if o == nil || o.Host == nil {
 		return nil, false
 	}
@@ -154,17 +154,17 @@ func (o *DmsObSession) GetHostOk() (*string, bool) {
 }
 
 // HasHost returns a boolean if a field has been set.
-func (o *DmsObSession) HasHost() bool {
+func (o *DmsSession) HasHost() bool {
 	return o != nil && o.Host != nil
 }
 
 // SetHost gets a reference to the given string and assigns it to the Host field.
-func (o *DmsObSession) SetHost(v string) {
+func (o *DmsSession) SetHost(v string) {
 	o.Host = &v
 }
 
 // GetDb returns the Db field value if set, zero value otherwise.
-func (o *DmsObSession) GetDb() string {
+func (o *DmsSession) GetDb() string {
 	if o == nil || o.Db == nil {
 		var ret string
 		return ret
@@ -174,7 +174,7 @@ func (o *DmsObSession) GetDb() string {
 
 // GetDbOk returns a tuple with the Db field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetDbOk() (*string, bool) {
+func (o *DmsSession) GetDbOk() (*string, bool) {
 	if o == nil || o.Db == nil {
 		return nil, false
 	}
@@ -182,17 +182,17 @@ func (o *DmsObSession) GetDbOk() (*string, bool) {
 }
 
 // HasDb returns a boolean if a field has been set.
-func (o *DmsObSession) HasDb() bool {
+func (o *DmsSession) HasDb() bool {
 	return o != nil && o.Db != nil
 }
 
 // SetDb gets a reference to the given string and assigns it to the Db field.
-func (o *DmsObSession) SetDb(v string) {
+func (o *DmsSession) SetDb(v string) {
 	o.Db = &v
 }
 
 // GetCommand returns the Command field value if set, zero value otherwise.
-func (o *DmsObSession) GetCommand() string {
+func (o *DmsSession) GetCommand() string {
 	if o == nil || o.Command == nil {
 		var ret string
 		return ret
@@ -202,7 +202,7 @@ func (o *DmsObSession) GetCommand() string {
 
 // GetCommandOk returns a tuple with the Command field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetCommandOk() (*string, bool) {
+func (o *DmsSession) GetCommandOk() (*string, bool) {
 	if o == nil || o.Command == nil {
 		return nil, false
 	}
@@ -210,17 +210,17 @@ func (o *DmsObSession) GetCommandOk() (*string, bool) {
 }
 
 // HasCommand returns a boolean if a field has been set.
-func (o *DmsObSession) HasCommand() bool {
+func (o *DmsSession) HasCommand() bool {
 	return o != nil && o.Command != nil
 }
 
 // SetCommand gets a reference to the given string and assigns it to the Command field.
-func (o *DmsObSession) SetCommand(v string) {
+func (o *DmsSession) SetCommand(v string) {
 	o.Command = &v
 }
 
 // GetTime returns the Time field value if set, zero value otherwise.
-func (o *DmsObSession) GetTime() string {
+func (o *DmsSession) GetTime() string {
 	if o == nil || o.Time == nil {
 		var ret string
 		return ret
@@ -230,7 +230,7 @@ func (o *DmsObSession) GetTime() string {
 
 // GetTimeOk returns a tuple with the Time field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetTimeOk() (*string, bool) {
+func (o *DmsSession) GetTimeOk() (*string, bool) {
 	if o == nil || o.Time == nil {
 		return nil, false
 	}
@@ -238,17 +238,17 @@ func (o *DmsObSession) GetTimeOk() (*string, bool) {
 }
 
 // HasTime returns a boolean if a field has been set.
-func (o *DmsObSession) HasTime() bool {
+func (o *DmsSession) HasTime() bool {
 	return o != nil && o.Time != nil
 }
 
 // SetTime gets a reference to the given string and assigns it to the Time field.
-func (o *DmsObSession) SetTime(v string) {
+func (o *DmsSession) SetTime(v string) {
 	o.Time = &v
 }
 
 // GetState returns the State field value if set, zero value otherwise.
-func (o *DmsObSession) GetState() string {
+func (o *DmsSession) GetState() string {
 	if o == nil || o.State == nil {
 		var ret string
 		return ret
@@ -258,7 +258,7 @@ func (o *DmsObSession) GetState() string {
 
 // GetStateOk returns a tuple with the State field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetStateOk() (*string, bool) {
+func (o *DmsSession) GetStateOk() (*string, bool) {
 	if o == nil || o.State == nil {
 		return nil, false
 	}
@@ -266,17 +266,17 @@ func (o *DmsObSession) GetStateOk() (*string, bool) {
 }
 
 // HasState returns a boolean if a field has been set.
-func (o *DmsObSession) HasState() bool {
+func (o *DmsSession) HasState() bool {
 	return o != nil && o.State != nil
 }
 
 // SetState gets a reference to the given string and assigns it to the State field.
-func (o *DmsObSession) SetState(v string) {
+func (o *DmsSession) SetState(v string) {
 	o.State = &v
 }
 
 // GetInfo returns the Info field value if set, zero value otherwise.
-func (o *DmsObSession) GetInfo() string {
+func (o *DmsSession) GetInfo() string {
 	if o == nil || o.Info == nil {
 		var ret string
 		return ret
@@ -286,7 +286,7 @@ func (o *DmsObSession) GetInfo() string {
 
 // GetInfoOk returns a tuple with the Info field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetInfoOk() (*string, bool) {
+func (o *DmsSession) GetInfoOk() (*string, bool) {
 	if o == nil || o.Info == nil {
 		return nil, false
 	}
@@ -294,17 +294,17 @@ func (o *DmsObSession) GetInfoOk() (*string, bool) {
 }
 
 // HasInfo returns a boolean if a field has been set.
-func (o *DmsObSession) HasInfo() bool {
+func (o *DmsSession) HasInfo() bool {
 	return o != nil && o.Info != nil
 }
 
 // SetInfo gets a reference to the given string and assigns it to the Info field.
-func (o *DmsObSession) SetInfo(v string) {
+func (o *DmsSession) SetInfo(v string) {
 	o.Info = &v
 }
 
 // GetIp returns the Ip field value if set, zero value otherwise.
-func (o *DmsObSession) GetIp() string {
+func (o *DmsSession) GetIp() string {
 	if o == nil || o.Ip == nil {
 		var ret string
 		return ret
@@ -314,7 +314,7 @@ func (o *DmsObSession) GetIp() string {
 
 // GetIpOk returns a tuple with the Ip field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetIpOk() (*string, bool) {
+func (o *DmsSession) GetIpOk() (*string, bool) {
 	if o == nil || o.Ip == nil {
 		return nil, false
 	}
@@ -322,17 +322,17 @@ func (o *DmsObSession) GetIpOk() (*string, bool) {
 }
 
 // HasIp returns a boolean if a field has been set.
-func (o *DmsObSession) HasIp() bool {
+func (o *DmsSession) HasIp() bool {
 	return o != nil && o.Ip != nil
 }
 
 // SetIp gets a reference to the given string and assigns it to the Ip field.
-func (o *DmsObSession) SetIp(v string) {
+func (o *DmsSession) SetIp(v string) {
 	o.Ip = &v
 }
 
 // GetPort returns the Port field value if set, zero value otherwise.
-func (o *DmsObSession) GetPort() string {
+func (o *DmsSession) GetPort() string {
 	if o == nil || o.Port == nil {
 		var ret string
 		return ret
@@ -342,7 +342,7 @@ func (o *DmsObSession) GetPort() string {
 
 // GetPortOk returns a tuple with the Port field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetPortOk() (*string, bool) {
+func (o *DmsSession) GetPortOk() (*string, bool) {
 	if o == nil || o.Port == nil {
 		return nil, false
 	}
@@ -350,17 +350,17 @@ func (o *DmsObSession) GetPortOk() (*string, bool) {
 }
 
 // HasPort returns a boolean if a field has been set.
-func (o *DmsObSession) HasPort() bool {
+func (o *DmsSession) HasPort() bool {
 	return o != nil && o.Port != nil
 }
 
 // SetPort gets a reference to the given string and assigns it to the Port field.
-func (o *DmsObSession) SetPort(v string) {
+func (o *DmsSession) SetPort(v string) {
 	o.Port = &v
 }
 
 // MarshalJSON serializes the struct using spec logic.
-func (o DmsObSession) MarshalJSON() ([]byte, error) {
+func (o DmsSession) MarshalJSON() ([]byte, error) {
 	toSerialize := map[string]interface{}{}
 	if o.UnparsedObject != nil {
 		return common.Marshal(o.UnparsedObject)
@@ -406,7 +406,7 @@ func (o DmsObSession) MarshalJSON() ([]byte, error) {
 }
 
 // UnmarshalJSON deserializes the given payload.
-func (o *DmsObSession) UnmarshalJSON(bytes []byte) (err error) {
+func (o *DmsSession) UnmarshalJSON(bytes []byte) (err error) {
 	all := struct {
 		Id      *string `json:"id,omitempty"`
 		User    *string `json:"user,omitempty"`
diff --git a/api/kbcloud/api_dms.go b/api/kbcloud/api_dms.go
index 1a7dbbb8..2acafdb1 100644
--- a/api/kbcloud/api_dms.go
+++ b/api/kbcloud/api_dms.go
@@ -1545,11 +1545,11 @@ func (r *ListSessionsOptionalParameters) WithAll(all string) *ListSessionsOption
 }
 
 // ListSessions list all session for the cluster.
-func (a *DmsApi) ListSessions(ctx _context.Context, orgName string, clusterName string, o ...ListSessionsOptionalParameters) ([]DmsObSession, *_nethttp.Response, error) {
+func (a *DmsApi) ListSessions(ctx _context.Context, orgName string, clusterName string, o ...ListSessionsOptionalParameters) ([]DmsSession, *_nethttp.Response, error) {
 	var (
 		localVarHTTPMethod  = _nethttp.MethodGet
 		localVarPostBody    interface{}
-		localVarReturnValue []DmsObSession
+		localVarReturnValue []DmsSession
 		optionalParams      ListSessionsOptionalParameters
 	)
 
diff --git a/api/kbcloud/api_session.go b/api/kbcloud/api_session.go
new file mode 100644
index 00000000..f9855c39
--- /dev/null
+++ b/api/kbcloud/api_session.go
@@ -0,0 +1,215 @@
+// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+// This product includes software developed at ApeCloud (https://www.apecloud.com/).
+// Copyright 2022-Present ApeCloud Co., Ltd
+
+package kbcloud
+
+import (
+	_context "context"
+	_nethttp "net/http"
+	_neturl "net/url"
+	"strings"
+
+	"github.com/apecloud/kb-cloud-client-go/api/common"
+)
+
+// SessionApi service type
+type SessionApi common.Service
+
+// KillSessionOptionalParameters holds optional parameters for KillSession.
+type KillSessionOptionalParameters struct {
+	Keep *bool
+}
+
+// NewKillSessionOptionalParameters creates an empty struct for parameters.
+func NewKillSessionOptionalParameters() *KillSessionOptionalParameters {
+	this := KillSessionOptionalParameters{}
+	return &this
+}
+
+// WithKeep sets the corresponding parameter name and returns the struct.
+func (r *KillSessionOptionalParameters) WithKeep(keep bool) *KillSessionOptionalParameters {
+	r.Keep = &keep
+	return r
+}
+
+// KillSession Kill cluster session.
+// kill a session in cluster
+func (a *SessionApi) KillSession(ctx _context.Context, engineName string, orgName string, clusterName string, session string, o ...KillSessionOptionalParameters) (*_nethttp.Response, error) {
+	var (
+		localVarHTTPMethod = _nethttp.MethodDelete
+		localVarPostBody   interface{}
+		optionalParams     KillSessionOptionalParameters
+	)
+
+	if len(o) > 1 {
+		return nil, common.ReportError("only one argument of type KillSessionOptionalParameters is allowed")
+	}
+	if len(o) == 1 {
+		optionalParams = o[0]
+	}
+
+	localBasePath, err := a.Client.Cfg.ServerURLWithContext(ctx, ".SessionApi.KillSession")
+	if err != nil {
+		return nil, common.GenericOpenAPIError{ErrorMessage: err.Error()}
+	}
+
+	localVarPath := localBasePath + "/data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/sessions/{session}"
+	localVarPath = strings.Replace(localVarPath, "{"+"engineName"+"}", _neturl.PathEscape(common.ParameterToString(engineName, "")), -1)
+	localVarPath = strings.Replace(localVarPath, "{"+"orgName"+"}", _neturl.PathEscape(common.ParameterToString(orgName, "")), -1)
+	localVarPath = strings.Replace(localVarPath, "{"+"clusterName"+"}", _neturl.PathEscape(common.ParameterToString(clusterName, "")), -1)
+	localVarPath = strings.Replace(localVarPath, "{"+"session"+"}", _neturl.PathEscape(common.ParameterToString(session, "")), -1)
+
+	localVarHeaderParams := make(map[string]string)
+	localVarQueryParams := _neturl.Values{}
+	localVarFormParams := _neturl.Values{}
+	if optionalParams.Keep != nil {
+		localVarQueryParams.Add("keep", common.ParameterToString(*optionalParams.Keep, ""))
+	}
+	localVarHeaderParams["Accept"] = "application/json"
+
+	common.SetAuthKeys(
+		ctx,
+		&localVarHeaderParams,
+		[2]string{"BearerToken", "authorization"},
+	)
+	req, err := a.Client.PrepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, nil)
+	if err != nil {
+		return nil, err
+	}
+
+	localVarHTTPResponse, err := a.Client.CallAPI(req)
+	if err != nil || localVarHTTPResponse == nil {
+		return localVarHTTPResponse, err
+	}
+
+	localVarBody, err := common.ReadBody(localVarHTTPResponse)
+	if err != nil {
+		return localVarHTTPResponse, err
+	}
+
+	if localVarHTTPResponse.StatusCode >= 300 {
+		newErr := common.GenericOpenAPIError{
+			ErrorBody:    localVarBody,
+			ErrorMessage: localVarHTTPResponse.Status,
+		}
+		if localVarHTTPResponse.StatusCode == 401 || localVarHTTPResponse.StatusCode == 403 || localVarHTTPResponse.StatusCode == 404 {
+			var v APIErrorResponse
+			err = a.Client.Decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+			if err != nil {
+				return localVarHTTPResponse, newErr
+			}
+			newErr.ErrorModel = v
+		}
+		return localVarHTTPResponse, newErr
+	}
+
+	return localVarHTTPResponse, nil
+}
+
+// ListSessionsOptionalParameters holds optional parameters for ListSessions.
+type ListSessionsOptionalParameters struct {
+	All *bool
+}
+
+// NewListSessionsOptionalParameters creates an empty struct for parameters.
+func NewListSessionsOptionalParameters() *ListSessionsOptionalParameters {
+	this := ListSessionsOptionalParameters{}
+	return &this
+}
+
+// WithAll sets the corresponding parameter name and returns the struct.
+func (r *ListSessionsOptionalParameters) WithAll(all bool) *ListSessionsOptionalParameters {
+	r.All = &all
+	return r
+}
+
+// ListSessions List cluster sessions.
+// list sessions in cluster
+func (a *SessionApi) ListSessions(ctx _context.Context, engineName string, orgName string, clusterName string, o ...ListSessionsOptionalParameters) ([]DmsSession, *_nethttp.Response, error) {
+	var (
+		localVarHTTPMethod  = _nethttp.MethodGet
+		localVarPostBody    interface{}
+		localVarReturnValue []DmsSession
+		optionalParams      ListSessionsOptionalParameters
+	)
+
+	if len(o) > 1 {
+		return localVarReturnValue, nil, common.ReportError("only one argument of type ListSessionsOptionalParameters is allowed")
+	}
+	if len(o) == 1 {
+		optionalParams = o[0]
+	}
+
+	localBasePath, err := a.Client.Cfg.ServerURLWithContext(ctx, ".SessionApi.ListSessions")
+	if err != nil {
+		return localVarReturnValue, nil, common.GenericOpenAPIError{ErrorMessage: err.Error()}
+	}
+
+	localVarPath := localBasePath + "/data/v1/{engineName}/organizations/{orgName}/clusters/{clusterName}/sessions"
+	localVarPath = strings.Replace(localVarPath, "{"+"engineName"+"}", _neturl.PathEscape(common.ParameterToString(engineName, "")), -1)
+	localVarPath = strings.Replace(localVarPath, "{"+"orgName"+"}", _neturl.PathEscape(common.ParameterToString(orgName, "")), -1)
+	localVarPath = strings.Replace(localVarPath, "{"+"clusterName"+"}", _neturl.PathEscape(common.ParameterToString(clusterName, "")), -1)
+
+	localVarHeaderParams := make(map[string]string)
+	localVarQueryParams := _neturl.Values{}
+	localVarFormParams := _neturl.Values{}
+	if optionalParams.All != nil {
+		localVarQueryParams.Add("all", common.ParameterToString(*optionalParams.All, ""))
+	}
+	localVarHeaderParams["Accept"] = "application/json"
+
+	common.SetAuthKeys(
+		ctx,
+		&localVarHeaderParams,
+		[2]string{"BearerToken", "authorization"},
+	)
+	req, err := a.Client.PrepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, nil)
+	if err != nil {
+		return localVarReturnValue, nil, err
+	}
+
+	localVarHTTPResponse, err := a.Client.CallAPI(req)
+	if err != nil || localVarHTTPResponse == nil {
+		return localVarReturnValue, localVarHTTPResponse, err
+	}
+
+	localVarBody, err := common.ReadBody(localVarHTTPResponse)
+	if err != nil {
+		return localVarReturnValue, localVarHTTPResponse, err
+	}
+
+	if localVarHTTPResponse.StatusCode >= 300 {
+		newErr := common.GenericOpenAPIError{
+			ErrorBody:    localVarBody,
+			ErrorMessage: localVarHTTPResponse.Status,
+		}
+		if localVarHTTPResponse.StatusCode == 401 || localVarHTTPResponse.StatusCode == 403 || localVarHTTPResponse.StatusCode == 500 {
+			var v APIErrorResponse
+			err = a.Client.Decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+			if err != nil {
+				return localVarReturnValue, localVarHTTPResponse, newErr
+			}
+			newErr.ErrorModel = v
+		}
+		return localVarReturnValue, localVarHTTPResponse, newErr
+	}
+
+	err = a.Client.Decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+	if err != nil {
+		newErr := common.GenericOpenAPIError{
+			ErrorBody:    localVarBody,
+			ErrorMessage: err.Error(),
+		}
+		return localVarReturnValue, localVarHTTPResponse, newErr
+	}
+
+	return localVarReturnValue, localVarHTTPResponse, nil
+}
+
+// NewSessionApi Returns NewSessionApi.
+func NewSessionApi(client *common.APIClient) *SessionApi {
+	return &SessionApi{
+		Client: client,
+	}
+}
diff --git a/api/kbcloud/model_account_option.go b/api/kbcloud/model_account_option.go
index 21b84287..20775035 100644
--- a/api/kbcloud/model_account_option.go
+++ b/api/kbcloud/model_account_option.go
@@ -11,6 +11,8 @@ import (
 )
 
 type AccountOption struct {
+	// number of super user accounts cloud create
+	SuperUserAccount   *int32   `json:"superUserAccount,omitempty"`
 	Enabled            bool     `json:"enabled"`
 	Privileges         []string `json:"privileges,omitempty"`
 	AccountNamePattern string   `json:"accountNamePattern"`
@@ -28,6 +30,8 @@ type AccountOption struct {
 // will change when the set of required properties is changed.
 func NewAccountOption(enabled bool, accountNamePattern string, create bool, resetPassword bool, delete bool) *AccountOption {
 	this := AccountOption{}
+	var superUserAccount int32 = 2
+	this.SuperUserAccount = &superUserAccount
 	this.Enabled = enabled
 	this.AccountNamePattern = accountNamePattern
 	this.Create = create
@@ -41,9 +45,39 @@ func NewAccountOption(enabled bool, accountNamePattern string, create bool, rese
 // but it doesn't guarantee that properties required by API are set.
 func NewAccountOptionWithDefaults() *AccountOption {
 	this := AccountOption{}
+	var superUserAccount int32 = 2
+	this.SuperUserAccount = &superUserAccount
 	return &this
 }
 
+// GetSuperUserAccount returns the SuperUserAccount field value if set, zero value otherwise.
+func (o *AccountOption) GetSuperUserAccount() int32 {
+	if o == nil || o.SuperUserAccount == nil {
+		var ret int32
+		return ret
+	}
+	return *o.SuperUserAccount
+}
+
+// GetSuperUserAccountOk returns a tuple with the SuperUserAccount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *AccountOption) GetSuperUserAccountOk() (*int32, bool) {
+	if o == nil || o.SuperUserAccount == nil {
+		return nil, false
+	}
+	return o.SuperUserAccount, true
+}
+
+// HasSuperUserAccount returns a boolean if a field has been set.
+func (o *AccountOption) HasSuperUserAccount() bool {
+	return o != nil && o.SuperUserAccount != nil
+}
+
+// SetSuperUserAccount gets a reference to the given int32 and assigns it to the SuperUserAccount field.
+func (o *AccountOption) SetSuperUserAccount(v int32) {
+	o.SuperUserAccount = &v
+}
+
 // GetEnabled returns the Enabled field value.
 func (o *AccountOption) GetEnabled() bool {
 	if o == nil {
@@ -193,6 +227,9 @@ func (o AccountOption) MarshalJSON() ([]byte, error) {
 	if o.UnparsedObject != nil {
 		return common.Marshal(o.UnparsedObject)
 	}
+	if o.SuperUserAccount != nil {
+		toSerialize["superUserAccount"] = o.SuperUserAccount
+	}
 	toSerialize["enabled"] = o.Enabled
 	if o.Privileges != nil {
 		toSerialize["privileges"] = o.Privileges
@@ -211,6 +248,7 @@ func (o AccountOption) MarshalJSON() ([]byte, error) {
 // UnmarshalJSON deserializes the given payload.
 func (o *AccountOption) UnmarshalJSON(bytes []byte) (err error) {
 	all := struct {
+		SuperUserAccount   *int32   `json:"superUserAccount,omitempty"`
 		Enabled            *bool    `json:"enabled"`
 		Privileges         []string `json:"privileges,omitempty"`
 		AccountNamePattern *string  `json:"accountNamePattern"`
@@ -238,10 +276,11 @@ func (o *AccountOption) UnmarshalJSON(bytes []byte) (err error) {
 	}
 	additionalProperties := make(map[string]interface{})
 	if err = common.Unmarshal(bytes, &additionalProperties); err == nil {
-		common.DeleteKeys(additionalProperties, &[]string{"enabled", "privileges", "accountNamePattern", "create", "resetPassword", "delete"})
+		common.DeleteKeys(additionalProperties, &[]string{"superUserAccount", "enabled", "privileges", "accountNamePattern", "create", "resetPassword", "delete"})
 	} else {
 		return err
 	}
+	o.SuperUserAccount = all.SuperUserAccount
 	o.Enabled = *all.Enabled
 	o.Privileges = all.Privileges
 	o.AccountNamePattern = *all.AccountNamePattern
diff --git a/api/kbcloud/model_dms_ob_session.go b/api/kbcloud/model_dms_session.go
similarity index 80%
rename from api/kbcloud/model_dms_ob_session.go
rename to api/kbcloud/model_dms_session.go
index 6802326a..0e5f5b16 100644
--- a/api/kbcloud/model_dms_ob_session.go
+++ b/api/kbcloud/model_dms_session.go
@@ -6,7 +6,7 @@ package kbcloud
 
 import "github.com/apecloud/kb-cloud-client-go/api/common"
 
-type DmsObSession struct {
+type DmsSession struct {
 	// session id
 	Id *string `json:"id,omitempty"`
 	// user name
@@ -34,25 +34,25 @@ type DmsObSession struct {
 	AdditionalProperties map[string]interface{} `json:"-"`
 }
 
-// NewDmsObSession instantiates a new DmsObSession object.
+// NewDmsSession instantiates a new DmsSession object.
 // This constructor will assign default values to properties that have it defined,
 // and makes sure properties required by API are set, but the set of arguments
 // will change when the set of required properties is changed.
-func NewDmsObSession() *DmsObSession {
-	this := DmsObSession{}
+func NewDmsSession() *DmsSession {
+	this := DmsSession{}
 	return &this
 }
 
-// NewDmsObSessionWithDefaults instantiates a new DmsObSession object.
+// NewDmsSessionWithDefaults instantiates a new DmsSession object.
 // This constructor will only assign default values to properties that have it defined,
 // but it doesn't guarantee that properties required by API are set.
-func NewDmsObSessionWithDefaults() *DmsObSession {
-	this := DmsObSession{}
+func NewDmsSessionWithDefaults() *DmsSession {
+	this := DmsSession{}
 	return &this
 }
 
 // GetId returns the Id field value if set, zero value otherwise.
-func (o *DmsObSession) GetId() string {
+func (o *DmsSession) GetId() string {
 	if o == nil || o.Id == nil {
 		var ret string
 		return ret
@@ -62,7 +62,7 @@ func (o *DmsObSession) GetId() string {
 
 // GetIdOk returns a tuple with the Id field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetIdOk() (*string, bool) {
+func (o *DmsSession) GetIdOk() (*string, bool) {
 	if o == nil || o.Id == nil {
 		return nil, false
 	}
@@ -70,17 +70,17 @@ func (o *DmsObSession) GetIdOk() (*string, bool) {
 }
 
 // HasId returns a boolean if a field has been set.
-func (o *DmsObSession) HasId() bool {
+func (o *DmsSession) HasId() bool {
 	return o != nil && o.Id != nil
 }
 
 // SetId gets a reference to the given string and assigns it to the Id field.
-func (o *DmsObSession) SetId(v string) {
+func (o *DmsSession) SetId(v string) {
 	o.Id = &v
 }
 
 // GetUser returns the User field value if set, zero value otherwise.
-func (o *DmsObSession) GetUser() string {
+func (o *DmsSession) GetUser() string {
 	if o == nil || o.User == nil {
 		var ret string
 		return ret
@@ -90,7 +90,7 @@ func (o *DmsObSession) GetUser() string {
 
 // GetUserOk returns a tuple with the User field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetUserOk() (*string, bool) {
+func (o *DmsSession) GetUserOk() (*string, bool) {
 	if o == nil || o.User == nil {
 		return nil, false
 	}
@@ -98,17 +98,17 @@ func (o *DmsObSession) GetUserOk() (*string, bool) {
 }
 
 // HasUser returns a boolean if a field has been set.
-func (o *DmsObSession) HasUser() bool {
+func (o *DmsSession) HasUser() bool {
 	return o != nil && o.User != nil
 }
 
 // SetUser gets a reference to the given string and assigns it to the User field.
-func (o *DmsObSession) SetUser(v string) {
+func (o *DmsSession) SetUser(v string) {
 	o.User = &v
 }
 
 // GetTenant returns the Tenant field value if set, zero value otherwise.
-func (o *DmsObSession) GetTenant() string {
+func (o *DmsSession) GetTenant() string {
 	if o == nil || o.Tenant == nil {
 		var ret string
 		return ret
@@ -118,7 +118,7 @@ func (o *DmsObSession) GetTenant() string {
 
 // GetTenantOk returns a tuple with the Tenant field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetTenantOk() (*string, bool) {
+func (o *DmsSession) GetTenantOk() (*string, bool) {
 	if o == nil || o.Tenant == nil {
 		return nil, false
 	}
@@ -126,17 +126,17 @@ func (o *DmsObSession) GetTenantOk() (*string, bool) {
 }
 
 // HasTenant returns a boolean if a field has been set.
-func (o *DmsObSession) HasTenant() bool {
+func (o *DmsSession) HasTenant() bool {
 	return o != nil && o.Tenant != nil
 }
 
 // SetTenant gets a reference to the given string and assigns it to the Tenant field.
-func (o *DmsObSession) SetTenant(v string) {
+func (o *DmsSession) SetTenant(v string) {
 	o.Tenant = &v
 }
 
 // GetHost returns the Host field value if set, zero value otherwise.
-func (o *DmsObSession) GetHost() string {
+func (o *DmsSession) GetHost() string {
 	if o == nil || o.Host == nil {
 		var ret string
 		return ret
@@ -146,7 +146,7 @@ func (o *DmsObSession) GetHost() string {
 
 // GetHostOk returns a tuple with the Host field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetHostOk() (*string, bool) {
+func (o *DmsSession) GetHostOk() (*string, bool) {
 	if o == nil || o.Host == nil {
 		return nil, false
 	}
@@ -154,17 +154,17 @@ func (o *DmsObSession) GetHostOk() (*string, bool) {
 }
 
 // HasHost returns a boolean if a field has been set.
-func (o *DmsObSession) HasHost() bool {
+func (o *DmsSession) HasHost() bool {
 	return o != nil && o.Host != nil
 }
 
 // SetHost gets a reference to the given string and assigns it to the Host field.
-func (o *DmsObSession) SetHost(v string) {
+func (o *DmsSession) SetHost(v string) {
 	o.Host = &v
 }
 
 // GetDb returns the Db field value if set, zero value otherwise.
-func (o *DmsObSession) GetDb() string {
+func (o *DmsSession) GetDb() string {
 	if o == nil || o.Db == nil {
 		var ret string
 		return ret
@@ -174,7 +174,7 @@ func (o *DmsObSession) GetDb() string {
 
 // GetDbOk returns a tuple with the Db field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetDbOk() (*string, bool) {
+func (o *DmsSession) GetDbOk() (*string, bool) {
 	if o == nil || o.Db == nil {
 		return nil, false
 	}
@@ -182,17 +182,17 @@ func (o *DmsObSession) GetDbOk() (*string, bool) {
 }
 
 // HasDb returns a boolean if a field has been set.
-func (o *DmsObSession) HasDb() bool {
+func (o *DmsSession) HasDb() bool {
 	return o != nil && o.Db != nil
 }
 
 // SetDb gets a reference to the given string and assigns it to the Db field.
-func (o *DmsObSession) SetDb(v string) {
+func (o *DmsSession) SetDb(v string) {
 	o.Db = &v
 }
 
 // GetCommand returns the Command field value if set, zero value otherwise.
-func (o *DmsObSession) GetCommand() string {
+func (o *DmsSession) GetCommand() string {
 	if o == nil || o.Command == nil {
 		var ret string
 		return ret
@@ -202,7 +202,7 @@ func (o *DmsObSession) GetCommand() string {
 
 // GetCommandOk returns a tuple with the Command field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetCommandOk() (*string, bool) {
+func (o *DmsSession) GetCommandOk() (*string, bool) {
 	if o == nil || o.Command == nil {
 		return nil, false
 	}
@@ -210,17 +210,17 @@ func (o *DmsObSession) GetCommandOk() (*string, bool) {
 }
 
 // HasCommand returns a boolean if a field has been set.
-func (o *DmsObSession) HasCommand() bool {
+func (o *DmsSession) HasCommand() bool {
 	return o != nil && o.Command != nil
 }
 
 // SetCommand gets a reference to the given string and assigns it to the Command field.
-func (o *DmsObSession) SetCommand(v string) {
+func (o *DmsSession) SetCommand(v string) {
 	o.Command = &v
 }
 
 // GetTime returns the Time field value if set, zero value otherwise.
-func (o *DmsObSession) GetTime() string {
+func (o *DmsSession) GetTime() string {
 	if o == nil || o.Time == nil {
 		var ret string
 		return ret
@@ -230,7 +230,7 @@ func (o *DmsObSession) GetTime() string {
 
 // GetTimeOk returns a tuple with the Time field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetTimeOk() (*string, bool) {
+func (o *DmsSession) GetTimeOk() (*string, bool) {
 	if o == nil || o.Time == nil {
 		return nil, false
 	}
@@ -238,17 +238,17 @@ func (o *DmsObSession) GetTimeOk() (*string, bool) {
 }
 
 // HasTime returns a boolean if a field has been set.
-func (o *DmsObSession) HasTime() bool {
+func (o *DmsSession) HasTime() bool {
 	return o != nil && o.Time != nil
 }
 
 // SetTime gets a reference to the given string and assigns it to the Time field.
-func (o *DmsObSession) SetTime(v string) {
+func (o *DmsSession) SetTime(v string) {
 	o.Time = &v
 }
 
 // GetState returns the State field value if set, zero value otherwise.
-func (o *DmsObSession) GetState() string {
+func (o *DmsSession) GetState() string {
 	if o == nil || o.State == nil {
 		var ret string
 		return ret
@@ -258,7 +258,7 @@ func (o *DmsObSession) GetState() string {
 
 // GetStateOk returns a tuple with the State field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetStateOk() (*string, bool) {
+func (o *DmsSession) GetStateOk() (*string, bool) {
 	if o == nil || o.State == nil {
 		return nil, false
 	}
@@ -266,17 +266,17 @@ func (o *DmsObSession) GetStateOk() (*string, bool) {
 }
 
 // HasState returns a boolean if a field has been set.
-func (o *DmsObSession) HasState() bool {
+func (o *DmsSession) HasState() bool {
 	return o != nil && o.State != nil
 }
 
 // SetState gets a reference to the given string and assigns it to the State field.
-func (o *DmsObSession) SetState(v string) {
+func (o *DmsSession) SetState(v string) {
 	o.State = &v
 }
 
 // GetInfo returns the Info field value if set, zero value otherwise.
-func (o *DmsObSession) GetInfo() string {
+func (o *DmsSession) GetInfo() string {
 	if o == nil || o.Info == nil {
 		var ret string
 		return ret
@@ -286,7 +286,7 @@ func (o *DmsObSession) GetInfo() string {
 
 // GetInfoOk returns a tuple with the Info field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetInfoOk() (*string, bool) {
+func (o *DmsSession) GetInfoOk() (*string, bool) {
 	if o == nil || o.Info == nil {
 		return nil, false
 	}
@@ -294,17 +294,17 @@ func (o *DmsObSession) GetInfoOk() (*string, bool) {
 }
 
 // HasInfo returns a boolean if a field has been set.
-func (o *DmsObSession) HasInfo() bool {
+func (o *DmsSession) HasInfo() bool {
 	return o != nil && o.Info != nil
 }
 
 // SetInfo gets a reference to the given string and assigns it to the Info field.
-func (o *DmsObSession) SetInfo(v string) {
+func (o *DmsSession) SetInfo(v string) {
 	o.Info = &v
 }
 
 // GetIp returns the Ip field value if set, zero value otherwise.
-func (o *DmsObSession) GetIp() string {
+func (o *DmsSession) GetIp() string {
 	if o == nil || o.Ip == nil {
 		var ret string
 		return ret
@@ -314,7 +314,7 @@ func (o *DmsObSession) GetIp() string {
 
 // GetIpOk returns a tuple with the Ip field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetIpOk() (*string, bool) {
+func (o *DmsSession) GetIpOk() (*string, bool) {
 	if o == nil || o.Ip == nil {
 		return nil, false
 	}
@@ -322,17 +322,17 @@ func (o *DmsObSession) GetIpOk() (*string, bool) {
 }
 
 // HasIp returns a boolean if a field has been set.
-func (o *DmsObSession) HasIp() bool {
+func (o *DmsSession) HasIp() bool {
 	return o != nil && o.Ip != nil
 }
 
 // SetIp gets a reference to the given string and assigns it to the Ip field.
-func (o *DmsObSession) SetIp(v string) {
+func (o *DmsSession) SetIp(v string) {
 	o.Ip = &v
 }
 
 // GetPort returns the Port field value if set, zero value otherwise.
-func (o *DmsObSession) GetPort() string {
+func (o *DmsSession) GetPort() string {
 	if o == nil || o.Port == nil {
 		var ret string
 		return ret
@@ -342,7 +342,7 @@ func (o *DmsObSession) GetPort() string {
 
 // GetPortOk returns a tuple with the Port field value if set, nil otherwise
 // and a boolean to check if the value has been set.
-func (o *DmsObSession) GetPortOk() (*string, bool) {
+func (o *DmsSession) GetPortOk() (*string, bool) {
 	if o == nil || o.Port == nil {
 		return nil, false
 	}
@@ -350,17 +350,17 @@ func (o *DmsObSession) GetPortOk() (*string, bool) {
 }
 
 // HasPort returns a boolean if a field has been set.
-func (o *DmsObSession) HasPort() bool {
+func (o *DmsSession) HasPort() bool {
 	return o != nil && o.Port != nil
 }
 
 // SetPort gets a reference to the given string and assigns it to the Port field.
-func (o *DmsObSession) SetPort(v string) {
+func (o *DmsSession) SetPort(v string) {
 	o.Port = &v
 }
 
 // MarshalJSON serializes the struct using spec logic.
-func (o DmsObSession) MarshalJSON() ([]byte, error) {
+func (o DmsSession) MarshalJSON() ([]byte, error) {
 	toSerialize := map[string]interface{}{}
 	if o.UnparsedObject != nil {
 		return common.Marshal(o.UnparsedObject)
@@ -406,7 +406,7 @@ func (o DmsObSession) MarshalJSON() ([]byte, error) {
 }
 
 // UnmarshalJSON deserializes the given payload.
-func (o *DmsObSession) UnmarshalJSON(bytes []byte) (err error) {
+func (o *DmsSession) UnmarshalJSON(bytes []byte) (err error) {
 	all := struct {
 		Id      *string `json:"id,omitempty"`
 		User    *string `json:"user,omitempty"`